Open
Description
A user reported a weird condition in which pluggy tracing was making their code fail after we enabled tracing because one of the local objects didn't have a working __repr__
(a scikit-learn object from a very old version). Details: kedro-org/kedro#2630
We gave the user a workaround and also it's reasonable to expect that objects have a working __repr__
, but it would be nice if there was a generous try ... except
around the tracing messages so that errors there don't bubble up. Essentially the same that happens with logging:
>>> try:
... logging.warning("Will fail: %d", "a")
... logging.warning("But the show must go on")
... except:
... logging.error("Oh no")
... else:
... logging.warning("Everything is fine")
...
--- Logging error ---
Traceback (most recent call last):
File "/opt/homebrew/Cellar/[email protected]/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/logging/__init__.py", line 1110, in emit
msg = self.format(record)
^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/logging/__init__.py", line 953, in format
return fmt.format(record)
^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/logging/__init__.py", line 687, in format
record.message = record.getMessage()
^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.11.4/Frameworks/Python.framework/Versions/3.11/lib/python3.11/logging/__init__.py", line 377, in getMessage
msg = msg % self.args
~~~~^~~~~~~~~~~
TypeError: %d format: a real number is required, not str
Call stack:
File "<stdin>", line 2, in <module>
Message: 'Will fail: %d'
Arguments: ('a',)
WARNING:root:But the show must go on
WARNING:root:Everything is fine
Metadata
Assignees
Labels
No labels