-
-
Notifications
You must be signed in to change notification settings - Fork 32k
Add an API for determining if an object is immortal #128509
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
What is the use-case to check if something is immortal at python level? Adding it for consistency reason alone isn't enough as it a very specific impl detail of CPython. I would like to know the use case before exposing it at Python level. |
Differentiating between "a lot of references" and an immortal object (e.g. for debugging). It's not a good idea to have users rely on an object having a specific number of references to declare it immortal, because we change the immortal reference count, and objects with deferred reference counts also have "very large" reference counts. (FWIW, immortality might not even be done with a fixed refcount someday--that's not something we can deprecate at a |
Maybe we could start by adding a C API for that? |
Writing unit tests I would say. Since |
…H-129182) Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com> Co-authored-by: Petr Viktorin <encukou@gmail.com>
…128510) Co-authored-by: Kumar Aditya <kumaraditya@python.org>
…cts (python#128510) Co-authored-by: Kumar Aditya <kumaraditya@python.org>
Uh oh!
There was an error while loading. Please reload this page.
Feature or enhancement
Proposal:
Immortal objects might lead to some unexpected results for users that are (unfortunately) messing with reference count details, as seen in #127191; but currently, there's no way to determine what objects are actually immortal.
Immortality is an implementation detail, but it still does affect reference counting, and given that it's not very safe to rely on very specific reference counts, we don't want the only way to check for immortality to be via
sys.getrefcount
. So, given that we already have sys._is_interned, it seems fitting to add asys._is_immortal
alongside it.If we go with this, I think it's also a good idea to note it in some of the documentation. For example,
sys.getrefcount
says this:Here, it might be a good idea to mention my proposed
sys._is_immortal
, so there's less ambiguity about the returned value.cc @erlend-aasland
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Linked PRs
sys._is_immortal
for identifying immortal objects #128510PyUnstable_IsImmortal
for finding immortal objects #129182The text was updated successfully, but these errors were encountered: