mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-17 08:52:34 +08:00
98 lines
2.6 KiB
Python
98 lines
2.6 KiB
Python
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
"""
|
|
miscellaneous utilities
|
|
"""
|
|
import hashlib
|
|
import logging
|
|
import os
|
|
import platform
|
|
|
|
|
|
def is_debug():
|
|
logger = logging.getLogger("aitemplate")
|
|
return logger.level == logging.DEBUG
|
|
|
|
|
|
def is_linux() -> bool:
|
|
return platform.system() == "Linux"
|
|
|
|
|
|
def is_windows() -> bool:
|
|
return os.name == "nt"
|
|
|
|
|
|
def setup_logger(name):
|
|
root_logger = logging.getLogger(name)
|
|
info_handle = logging.StreamHandler()
|
|
formatter = logging.Formatter("%(asctime)s %(levelname)s <%(name)s> %(message)s")
|
|
info_handle.setFormatter(formatter)
|
|
root_logger.addHandler(info_handle)
|
|
root_logger.propagate = False
|
|
|
|
DEFAULT_LOGLEVEL = logging.getLogger().level
|
|
log_level_str = os.environ.get("LOGLEVEL", None)
|
|
LOG_LEVEL = (
|
|
getattr(logging, log_level_str.upper())
|
|
if log_level_str is not None
|
|
else DEFAULT_LOGLEVEL
|
|
)
|
|
root_logger.setLevel(LOG_LEVEL)
|
|
return root_logger
|
|
|
|
|
|
def short_str(s, length=8) -> str:
|
|
"""
|
|
Returns a hashed string, somewhat similar to URL shortener.
|
|
"""
|
|
hash_str = hashlib.sha256(s.encode()).hexdigest()
|
|
return hash_str[0:length]
|
|
|
|
|
|
def callstack_stats(enable=False):
|
|
if enable:
|
|
|
|
def decorator(f):
|
|
import cProfile
|
|
import io
|
|
import pstats
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
def inner_function(*args, **kwargs):
|
|
pr = cProfile.Profile()
|
|
pr.enable()
|
|
result = f(*args, **kwargs)
|
|
pr.disable()
|
|
s = io.StringIO()
|
|
pstats.Stats(pr, stream=s).sort_stats(
|
|
pstats.SortKey.CUMULATIVE
|
|
).print_stats(30)
|
|
logger.debug(s.getvalue())
|
|
return result
|
|
|
|
return inner_function
|
|
|
|
return decorator
|
|
else:
|
|
|
|
def decorator(f):
|
|
def inner_function(*args, **kwargs):
|
|
return f(*args, **kwargs)
|
|
|
|
return inner_function
|
|
|
|
return decorator
|