Skip to content

Document FrameLocalsProxy behaviour quirks #125731

Description

@ncoghlan

Following PEP 667, https://docs.python.org/dev/reference/datamodel.html#frame-objects mentions that frame.f_locals may be a write-through proxy object, but doesn't really explain what that means.

Once python/peps#3845 lands PEP 667 will contain such a description, but the main docs should at least cover the key behaviours:

  • new instance on every attribute access
  • two proxies with the same keys and values will still be unequal if they refer to different frames
  • extra keys can be stored and are stored on the frame itself so they're shared across all proxies for the same frame
  • keys corresponding to local variables can't be deleted
  • .copy() (and any other API that produces a new container) returns a regular dict instance

Suggested location would be as a new 4th subsection under the frame objects section linked above. A "see also" from that new subsection back to PEP 667 would also be a useful addition.

Linked PRs

Activity

  1. added
    docsDocumentation in the Doc dir
    triagedThe issue has been accepted as valid by a triager.
    3.13only security fixes
    3.14bugs and security fixes
    on Oct 19, 2024
  2. deleted a comment from on Oct 21, 2024
  3. VimalN2005 commented on Sep 10, 2026

    @VimalN2005

    Hi @ncoghlan,

    I would like to work on this issue. I have reviewed the requirements and drafted the new subsection under the Frame Objects section in Doc/reference/datamodel.rst covering the 5 key proxy behaviors you listed, along with a seealso reference to PEP 667.

    May I go ahead and open a pull request for this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.13only security fixes3.14bugs and security fixesdocsDocumentation in the Doc dirtriagedThe issue has been accepted as valid by a triager.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions