| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
LGTM
Sorry, something went wrong.
|
I haven't really got the bandwidth to look at this right now, sorry :) |
Sorry, something went wrong.
Sorry, something went wrong.
|
I agree, we should drop the defaults part. >>> import sys, inspect
>>> def f(x=1):
... print(inspect.getargvalues(sys._getframe()))
...
>>> f()
ArgInfo(args=['x'], varargs=None, keywords=None, locals={'x': 1})Current API does not show defaults, only locals. But, locals are stored as .f_locals, it is a stable API. Users can use .f_locals to populate defaults, it is quite easy. Later we can add defaults support if users ask for it. Showing defaults is also not safe in this case by default, for example we can leak things like passwords or secret keys. |
Sorry, something went wrong.
I looked at tests where the frame is captured whereas frame locals are not modified, so "it just works" magically. But if I look at the test which modify a variable, I now understand how wrong it is. A frame local is not a function default parameter value: they are two different things. signature() is the signature, before the function is called. Frame locals is the "live state" of a frame, it's unrelated. Moreover, frame locals can contain sensitive information (like a password) which should not be exposed in a signature. |
Sorry, something went wrong.
|
Updated, now defaults are not shown. Right now this is very close to getargvalues: >>> import sys, inspect
>>> def f(x=1):
... print(inspect.getargvalues(sys._getframe()))
...
>>> f()
ArgInfo(args=['x'], varargs=None, keywords=None, locals={'x': 1})And we are trying to replace this old function, so I guess it is fine :) |
Sorry, something went wrong.
|
(This has a merge conflict) |
Sorry, something went wrong.
|
@sobolevn: Can you please try to fix the merge conflict? |
Sorry, something went wrong.
| in a function inside ``__defaults__``, ``__kwdefaults__``, | ||
| and ``__annotations__`` attributes. | ||
|
|
||
| .. versionadded:: 3.13 |
There was a problem hiding this comment.
| .. versionadded:: 3.13 | |
| .. versionadded:: next |
Sorry, something went wrong.
| inspect | ||
| ------- | ||
|
|
||
| * Add :meth:`inspect.Signature.from_frame` to get signatures from frame objects. |
There was a problem hiding this comment.
Don't we need the "Contributed by" part? (to have the issue number)
Sorry, something went wrong.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
I had to go with a bigger diff, but easier code and probably more optimal one.
The main reason was that creating types.FunctionType is not trivial, for example, it required the correct amount of __closure__ vars for a code object. So, let's not create it: it will reduce the amount of possible errors.
First PR: #112639
📚 Documentation preview 📚: https://cpython-previews--116537.org.readthedocs.build/