New submission from Royce Mitchell <roy...@gmail.com>:
Dear devs, I have a small change request to make to a built-in Python file. I'm currently running python 3.9.5 The file is copy.py I would like to propose changing line 264 (in _reconstruct) from this: y = func(*args) to something like this: try: y = func(*args) except TypeError as e: raise TypeError( f'calling {func.__module__}.{func.__qualname__}: {e.args[0]}', *e.args[1:] ).with_traceback(e.__traceback__) from None All the change does it inject the module and qualified-name of the function trying to be created onto the front-end of the error. It makes this: TypeError: __init__() missing 1 required positional argument: 'delta' into this: TypeError: calling datetime.datetime: calling mytz.Tzoffset: __init__() missing 1 required positional argument: 'delta' Here's a summary of the situation that led to this difficulty: I have a project that is a couple years old and I'm no longer intimately aware of every single thing the program is doing. I went to make some enhancements and noticed the unit tests hadn't been touched since early in the project and decided I wanted to start using it. I got stuck trying to prettyprint an object and getting a TypeError from the line above because it was trying to call a function but was missing a required argument. The traceback was unhelpful because I didn't know what object it was trying to copy, which was very complicated with lots of data and sub-objects. It turns out that a dataclass (named TransDetail) I was trying to prettyprint had a list of another dataclass (named Billing) which had a datetime.datetime object with a custom tzinfo object that I had never tried to deepcopy before. (The custom tzinfo object was adapted from examples on StackOverflow) Trying to google the issue, I found many others experiencing the same problem. The fix was to define a default datetime.timedelta value for that custom tzinfo object, but I had to make the changes to copy.py in order to efficiently figure out that this was the problem. ---------- components: Library (Lib) messages: 413594 nosy: remdragon priority: normal severity: normal status: open title: copy.deepcopy can fail with unhelpful diagnostics type: enhancement versions: Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue46809> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com