Visitar URL original
_abc_registry attribute is not available in python 3.7.0 · Issue #24 · fluentpython/example-code · GitHub
Skip to content
This repository was archived by the owner on Dec 2, 2021. It is now read-only.
This repository was archived by the owner on Dec 2, 2021. It is now read-only.

_abc_registry attribute is not available in python 3.7.0 #24

Description

@alpnn

When I try running the tombola_runner.py in chapter 11, python reports to me that the '_abc_registry' doesn't exist.

I searched in docs, but found that the attribute is not accesible anymore.

The changelog is
"""
bpo-31333: _abc module is added. It is a speedup module with C implementations for various functions and methods in abc. Creating an ABC subclass and calling isinstance or issubclass with an ABC subclass are up to 1.5x faster. In addition, this makes Python start-up up to 10% faster.

Note that the new implementation hides internal registry and caches, previously accessible via private attributes _abc_registry, _abc_cache, and _abc_negative_cache. There are three debugging helper methods that can be used instead _dump_registry, _abc_registry_clear, and _abc_caches_clear.
"""

Activity

  1. ShubhamBelwal commented on Oct 30, 2018

    @ShubhamBelwal

    You can use abc._get_dump(Tombola) - it returns a 4-tuple of (_abc_registry, _abc_cache, _abc_negative_cache, _abc_negative_cache_version)

    The following code should work:

    import abc
    virtual_subclasses = [ref() for ref in abc._get_dump(Tombola)[0] if ref()]

    Credit goes to: u/K9000_ from the reddit thread

  2. anancds commented on Jun 30, 2020

    @anancds
    Contributor

    @ShubhamBelwal thanks, it fixed my same problem.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions