Skip to content

Make frame.f_locals.copy() return a snapshot dict of f_locals #118921

Closed
@gaogaotiantian

Description

@gaogaotiantian

Feature or enhancement

Proposal:

Per PEP 667, frame.f_locals is now a write-through proxy (FrameLocalsProxy) for underlying fast local variables. In the beginning we did not implement the copy() method because we think dict(frame.f_locals) is a more explicit way to achieve the snapshot. However, there are existing code that's using frame.f_locals.copy() to take a snapshot. Moreover, types.MappingProxyType({}).copy() returns the copy of the underlying mapping so it's not unprecedented for a proxy.copy() to return a dict.

Thus, we should implement copy() method for FrameLocalsProxy and make it return a dict of snapshot of the current local variables.

Has this already been discussed elsewhere?

I have already discussed this feature proposal on Discourse

Links to previous discussion of this feature:

https://discuss.python.org/t/pep-667-consistent-views-of-namespaces/46631/26

Linked PRs

Metadata

Metadata

Labels

type-featureA feature request or enhancement

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions