-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
PySDK Version
PySDK V3
Describe the bug
sagemaker/core/init.py:4 unconditionally calls enable_textual_rich_console_and_traceback() at import time, which installs Rich tracebacks (rich.traceback.install) and replaces the root logger with RichHandler the moment sagemaker is imported.
aws/sagemaker-core#325 (merged Aug 2025) fixed this in the standalone sagemaker-core package by making Rich opt-in, but that change was never applied to the bundled copy in sagemaker-python-sdk.
To reproduce
import sagemaker
# Rich tracebacks are now globally installed
# Rich logging handler is now the root handler
# Any SageMaker job output (processing, training) renders with Rich formatting
from sagemaker.core.helper.session_helper import Session
from sagemaker.core.processing import FrameworkProcessor
sess = Session()
processor = FrameworkProcessor(
image_uri="<any-image>",
role="<any-role>",
instance_type="ml.m5.xlarge",
instance_count=1,
)
processor.run(code="script.py", source_dir="source_dir", wait=True)
# Output is non-scrollable Rich-formatted text in Jupyter
Expected behavior
Rich logging should be opt-in (as intended by sagemaker-core#325), not automatically enabled on import. Job outputs in Jupyter notebooks should be scrollable plain text by default.
Screenshots or logs
System information
SageMaker Python SDK version: 3.4.1 (sagemaker-core 2.4.1)
Python version: 3.11