Skip to content

Importing sagemaker seems to enable rich tracebacks #5179

Open
@paw-lu

Description

@paw-lu

Describe the bug

Whenever sagemaker is imported, it seems to modify and automatically enable rich tracebacks.

To reproduce

Make a new environment

$ python -m venv .venv
$ source /.venv/bin/activate
$ python -m pip install sagemaker rich

Make a file that returns a traceback

"""rich_sage.py"""
import sagemaker


def main() -> None:
    raise ValueError


if __name__ == "__main__":
    main()

Run the file

$ python rich_sage.py
sagemaker.config INFO - Not applying SDK defaults from location: /Library/Application Support/sagemaker/config.yaml
sagemaker.config INFO - Not applying SDK defaults from location: /Users/pawlu/Library/Application Support/sagemaker/config.yaml
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Users/pawlu/Documents/scratch/rich_sage/sage_me.py:9 in <module>                                │
│                                                                                                  │
│    6                                                                                             │
│    7                                                                                             │
│    8 if __name__ == "__main__":                                                                  │
│ ❱  9 │   main()                                                                                  │
│   10                                                                                             │
│                                                                                                  │
│ /Users/pawlu/Documents/scratch/rich_sage/sage_me.py:5 in main                                    │
│                                                                                                  │
│    2                                                                                             │
│    3                                                                                             │
│    4 def main() -> None:                                                                         │
│ ❱  5 │   raise ValueError                                                                        │
│    6                                                                                             │
│    7                                                                                             │
│    8 if __name__ == "__main__":                                                                  │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
ValueError

If the import statement is removed,

- import sagemaker

then the traceback renders as expected

$ python rich_sage.py
Traceback (most recent call last):
  File "/Users/pawlu/Documents/scratch/rich_sage/sage_me.py", line 8, in <module>
    main()
  File "/Users/pawlu/Documents/scratch/rich_sage/sage_me.py", line 4, in main
    raise ValueError
ValueError

Expected behavior

Ideally, tracebacks shouldn't be modified without users input. At worst there should be a way to opt out of this. But we shouldn't be modifying tracebacks automatically at import. It's a tricky behavior that's hard to debug.

Screenshots or logs

Image

System information
A description of your system. Please provide:

  • SageMaker Python SDK version: 2.244.0
  • Framework name (eg. PyTorch) or algorithm (eg. KMeans): Rich
  • Framework version: 14.0.0
  • Python version: 3.12.9
  • CPU or GPU: M3 (macbook)
  • Custom Docker image (Y/N): N

Thank you very much!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions