Hello,

On Mon, 22 Feb 2021 10:44:19 +0100
Peter Otten <__pete...@web.de> wrote:

> On 21/02/2021 23:06, Terry Reedy wrote:
> > On 2/21/2021 12:04 PM, Paul Sokolovsky wrote:
> >  
> >> Traceback (most recent call last):
> >>    File "pseudoc_tool.py", line 91, in <module>
> >>      first_class_function_value(func, **pass_params)
> >> TypeError: print() got an unexpected keyword argument 'noann'  
> >
> > This is not typical behavior in current Python (3.8+).  
> 
> The way I understand it's not about print(), it's about
> disambiguating multiple functions with the same name.
> Example:
> 
> PS > type .\ambiguous_names.py
> import random
> 
> def do_stuff():
>      pass
> 
> f = do_stuff
> 
> def do_stuff(a, b):
>      pass
> 
> g = do_stuff
> 
> random.choice([f, g])(42)

Thanks, that's exactly what I meant, and a repro with random "roulette"
is also what I had in mind, I just didn't get to it yet ;-).

> PS > py .\ambiguous_names.py
> Traceback (most recent call last):
>    File "...\ambiguous_names.py", line 13, in <module>
>      random.choice([f, g])(42)
> TypeError: do_stuff() missing 1 required positional argument: 'b'
> 
> The traceback gives no clue which of the two do_stuff() functions
> caused the error, you have to check both implementations.
> 
> If that is a comman problem one might consider including module name
> and co_firstlineno in the message, or at least adding the relevant
> do_stuff() function to the exception's args.

As my original message argues, that's a workaround. Python tracebacks
already have places where they show source file and line number -
namely, the individual traceback entries. So, instead of cramming that
info into the exception message, there should be additional last (latest
in the order of execution) traceback entry, pointing to the exact
function which had parameter mismatch. As I mentioned, I implemented
that in my Python dialect, which happened to have exactly the same
problem (code is not based on CPython).

It looks like:

Traceback (most recent call last):
  File "pseudoc_tool.py", line 91, in <module>
  File ".../xforms.py", line 25, in print
TypeError: unexpected keyword argument 'noann'

 - that makes clear that it's "print" function of "xforms.py" module,
line 25, which got an unexpected keyword argument.


-- 
Best regards,
 Paul                          mailto:pmis...@gmail.com
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/7SJTTAB7TZQYZ6WSRAAPSLLNMRF2OP7F/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to