Skip to content

gh-108901: Deprecate inspect.getargs, slate it for removal in 3.15 - #112279

Closed
sobolevn wants to merge 6 commits into
python:mainfrom
sobolevn:issue-108901-getargs-deprecation
Closed

gh-108901: Deprecate inspect.getargs, slate it for removal in 3.15#112279
sobolevn wants to merge 6 commits into
python:mainfrom
sobolevn:issue-108901-getargs-deprecation

Conversation

@sobolevn

@sobolevnsobolevn commented Nov 20, 2023

Copy link
Copy Markdown
Member

Following the discussion of #108902, I documented that getargs is deprecated (since it is not documented anywhere, I just modified its docstring) and that inspect.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 getargvalues is 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.

Comment threadDoc/whatsnew/3.13.rst Outdated
Comment threadLib/inspect.py
Comment on lines +1506 to +1509
import warnings
with warnings.catch_warnings():
warnings.simplefilter('ignore', category=DeprecationWarning)
args, varargs, varkw = getargs(frame.f_code)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should follow our own advice and use inspect.signature(types.FunctionType(frame.f_code, {})) here? :)

@sobolevnsobolevnNov 22, 2023

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so. Right now getargs does some ugly things:

returnArguments(args+kwonlyargs, varargs, varkw)
It combines 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).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 :)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, I can open a PR about getargvalues() first 👍

Comment threadLib/inspect.py Outdated
Comment threadLib/inspect.py Outdated
Comment threadDoc/whatsnew/3.13.rst Outdated
Comment threadMisc/NEWS.d/next/Library/2023-11-20-12-31-14.gh-issue-108901.abVgVe.rst Outdated
sobolevnand others added 2 commits November 22, 2023 16:28
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>

@AlexWaygoodAlexWaygood left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks! As discussed in https://github.com/python/cpython/pull/112279/files#r1402002908, however, let's deprecate getargvalues() first 👍

@github-actions

Copy link
Copy Markdown

This PR is stale because it has been open for 30 days with no activity.

@github-actionsgithub-actionsBot added the stale Stale PR or inactive for long period of time. label Apr 14, 2026
@vstinner

Copy link
Copy Markdown
Member

@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.

@sobolevnsobolevn closed this May 1, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting mergeDO-NOT-MERGEstaleStale PR or inactive for long period of time.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sobolevn@vstinner@AlexWaygood