-
-
Notifications
You must be signed in to change notification settings - Fork 30.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deprecate legacy introspection APIs in the inspect module #76371
Comments
(Follow up to https://bugs.python.org/issue27172) The deprecation notice on inspect.getfullargspec has been removed, since we want folks porting from Python 2 to rely on it as part of the porting process, rather than feeling they need to upgrade to using inspect.signature() immediately. At the same time, we really don't want folks relying on it for *new* code, since it has some inherent limitations (like failing to distinguish positional-only args from positional-and-keyword ones), and some odd historical quirks (like reporting the bound arg as part of the signature for already bound methods). The subprocess modules clearly separates out the "Older high-level API" https://docs.python.org/3/library/subprocess.html#older-high-level-api to help make it clear that new code should use "subprocess.run" instead. We could potentially add a similar final section to the inspect documentation for "Legacy introspection APIs". That would also be useful if https://bugs.python.org/issue31230 is eventually implemented - the current generator and coroutine specific APIs could be moved down to the legacy section for backwards compatibility maintenance, with the type independent API being preferred for new code. |
Repurposing this issue to re-deprecate these APIs instead. |
My notes on "Python 3.11: remove inspect.getargspec()":
Part 1:
Part 2:
Part 3: Broken project (1): |
IMO it's fine to deprecate inspect.getfullargspec(), but don't plan its removal yet. Maybe even add a comment (to avoid people who like removing deprecated functions, like me!) that this deprecated function should be kept for now, since it's still widely used (just add a link to this issue). The main advantage of inspect.signature(), compared to getfullargspec(), is that it handles positional-only arguments. inspect.signature() exists since Python 3.3. More and more projects are requiring a minimum Python version of Python 3.7, or Python 3.6 in the worst case. So it's fine to use inspect.signature(). |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: