diff --git a/docs/build_docs.py b/docs/build_docs.py index 201958aa..95a86cde 100644 --- a/docs/build_docs.py +++ b/docs/build_docs.py @@ -24,9 +24,9 @@ Note: - This script is built to be run in an environment where Python and MkDocs are installed and properly configured. """ -import os import re import shutil +import subprocess from pathlib import Path DOCS = Path(__file__).parent.resolve() @@ -41,12 +41,12 @@ def build_docs(): # Build the main documentation print(f'Building docs from {DOCS}') - os.system(f'mkdocs build -f {DOCS}/mkdocs.yml') + subprocess.run(f'mkdocs build -f {DOCS}/mkdocs.yml', check=True, shell=True) # Build other localized documentations for file in DOCS.glob('mkdocs_*.yml'): print(f'Building MkDocs site with configuration file: {file}') - os.system(f'mkdocs build -f {file}') + subprocess.run(f'mkdocs build -f {file}', check=True, shell=True) print(f'Site built at {SITE}') diff --git a/docs/en/reference/utils/__init__.md b/docs/en/reference/utils/__init__.md index ac9f2d48..80211ecf 100644 --- a/docs/en/reference/utils/__init__.md +++ b/docs/en/reference/utils/__init__.md @@ -94,7 +94,8 @@ keywords: Ultralytics, Utils, utilitarian functions, colorstr, yaml_save, set_lo

--- -## ::: ultralytics.utils.is_github_actions_ci + +## ::: ultralytics.utils.is_github_action_running

--- diff --git a/tests/test_python.py b/tests/test_python.py index 20e9a4fd..4c740a97 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -379,10 +379,10 @@ def test_cfg_init(): def test_utils_init(): """Test initialization utilities.""" - from ultralytics.utils import get_git_branch, get_git_origin_url, get_ubuntu_version, is_github_actions_ci + from ultralytics.utils import get_git_branch, get_git_origin_url, get_ubuntu_version, is_github_action_running get_ubuntu_version() - is_github_actions_ci() + is_github_action_running() get_git_origin_url() get_git_branch() diff --git a/ultralytics/utils/__init__.py b/ultralytics/utils/__init__.py index b4cd96ca..88655d2f 100644 --- a/ultralytics/utils/__init__.py +++ b/ultralytics/utils/__init__.py @@ -229,19 +229,29 @@ def set_logging(name=LOGGING_NAME, verbose=True): level = logging.INFO if verbose and RANK in {-1, 0} else logging.ERROR # rank in world for Multi-GPU trainings # Configure the console (stdout) encoding to UTF-8 + formatter = logging.Formatter('%(message)s') # Default formatter if WINDOWS and sys.stdout.encoding != 'utf-8': try: if hasattr(sys.stdout, 'reconfigure'): sys.stdout.reconfigure(encoding='utf-8') - else: + elif hasattr(sys.stdout, 'buffer'): import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') + else: + sys.stdout.encoding = 'utf-8' except Exception as e: - print(f'ERROR setting UTF-8 encoding: {e}') + print(f'Creating custom formatter for non UTF-8 environments due to {e}') + + class CustomFormatter(logging.Formatter): + + def format(self, record): + return emojis(super().format(record)) + + formatter = CustomFormatter('%(message)s') # Use CustomFormatter to eliminate UTF-8 output as last recourse # Create and configure the StreamHandler stream_handler = logging.StreamHandler(sys.stdout) - stream_handler.setFormatter(logging.Formatter('%(message)s')) + stream_handler.setFormatter(formatter) stream_handler.setLevel(level) logger = logging.getLogger(name) @@ -254,7 +264,7 @@ def set_logging(name=LOGGING_NAME, verbose=True): # Set logger LOGGER = set_logging(LOGGING_NAME, verbose=VERBOSE) # define globally (used in train.py, val.py, predict.py, etc.) for logger in 'sentry_sdk', 'urllib3.connectionpool': - logging.getLogger(logger).setLevel(logging.CRITICAL) + logging.getLogger(logger).setLevel(logging.CRITICAL + 1) def emojis(string=''):