On 17. 04. 22 19:20, Pablo Galindo Salgado wrote:
Hi,
We are currently debating in gh-88116
(https://github.com/python/cpython/issues/88116
<https://github.com/python/cpython/issues/88116>)
what's the best way forward to update the APIs in the inspect module to
include the new position information.
These APIs are inspect.getframeinfo, inspect.getouterframes,
inspect.getinnerframes, inspect.stack and inspect.trace.
The problem is that these APIs return a named tuple that now needs to
include several new attributes (or one 4 tuple for
the positions). Being named tuples, if we add a new attribute, existing
unpackings of the tuple will now fail because there
are more elements or the elements are in different positions. Also, it
will be quite weird to add the new attributes at the
end but leave the line number at the beginning.
What's the best way to proceed here? The suggested way is to create a
namedtuple subclass that adds the extra attributes
but doesn't allow indexed access to it (there is a precedent to this in
how we handled updating os.stat_result). I personally
find this quite confusing but it certainly works. There may be other
options.
IMO, that is the way to do it -- PyStructSequence.
I'd then discourage indexed access. It is indeed confusing, but that's
OK for something that's only there for backwards compatibility:
- users who are confused should read the docs and update their code.
- core devs can hopefully read a comment nearby and not be confused.
(And I don't think it's worth deprecating and removing indexed access --
there's no reason to break code that works just because there's now a
better API.)
_______________________________________________
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/YX2F3U5ALP6XBPZOTNITCLBGFFWTIWKK/
Code of Conduct: http://python.org/psf/codeofconduct/