Uh oh!
There was an error while loading. Please reload this page.
gh-108901: Deprecate inspect.getargs, slate it for removal in 3.15 - #112279
gh-108901: Deprecate inspect.getargs, slate it for removal in 3.15#112279sobolevn wants to merge 6 commits into
inspect.getargs, slate it for removal in 3.15#112279Conversation
Uh oh!
There was an error while loading. Please reload this page.
| import warnings | ||
| with warnings.catch_warnings(): | ||
| warnings.simplefilter('ignore', category=DeprecationWarning) | ||
| args, varargs, varkw = getargs(frame.f_code) |
There was a problem hiding this comment.
Maybe we should follow our own advice and use inspect.signature(types.FunctionType(frame.f_code, {})) here? :)
There was a problem hiding this comment.
I don't think so. Right now getargs does some ugly things:
Line 1384 in fef6fb8
pos_or_kw_args together with kw_only_args, but ignores pos_only_args.I think that we can just keep it as-is and then remove all of them together in 3.15 (because getargvalues will also be deprecated and removed at the same time, PR is just not ready yet).
There was a problem hiding this comment.
Okay, I see. Maybe we should do the getargvalues() deprecation first, though, in that case? It makes me a little uncomfortable adding this deprecation warning now, if we're not able to make the mandated change in our own code yet.
(I'm fine suppressing DeprecationWarnings in a function that is itself deprecated, but getargvalues() isn't, yet. And I know you plan to work on deprecating it immediately after this PR, but if I had a pound for every time somebody promised me they'd work on something the next day, and then discovered it was harder than they expected, I'd be a rich man :)
There was a problem hiding this comment.
Sure, I can open a PR about getargvalues() first 👍
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
AlexWaygood
left a comment
There was a problem hiding this comment.
LGTM, thanks! As discussed in https://github.com/python/cpython/pull/112279/files#r1402002908, however, let's deprecate getargvalues() first 👍
This PR is stale because it has been open for 30 days with no activity. |
vstinner
commented
Apr 30, 2026
@sobolevn: This change has been approved but was never merged. It's now outdated since it mentions Python 3.13. Do you still plan to work on this PR? If not, I suggest closing it. |
Following the discussion of #108902, I documented that
getargsis deprecated (since it is not documented anywhere, I just modified its docstring) and thatinspect.signature(types.FunctionType(co, {}))is the modern alternative. I think that it is safe to remove this function in two versions, because it does not work anyway (pos-only, kw-only params are incorrect).I also don't think that modernizing
getargvaluesis valuable, because it will also be deprecated in 3.13 and hopefully removed in 3.15 as well.CC @AlexWaygood@merwok@vstinner who reviewed the first PR.
inspectmodule, deprecate old incorrect APIs #108901