_helpers.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. import sys
  3. from typing import TYPE_CHECKING
  4. __all__ = ("cached_property", "under_cached_property")
  5. NO_EXTENSIONS = bool(os.environ.get("PROPCACHE_NO_EXTENSIONS")) # type: bool
  6. if sys.implementation.name != "cpython":
  7. NO_EXTENSIONS = True
  8. # isort: off
  9. if TYPE_CHECKING:
  10. from ._helpers_py import cached_property as cached_property_py
  11. from ._helpers_py import under_cached_property as under_cached_property_py
  12. cached_property = cached_property_py
  13. under_cached_property = under_cached_property_py
  14. elif not NO_EXTENSIONS: # pragma: no branch
  15. try:
  16. from ._helpers_c import cached_property as cached_property_c # type: ignore[attr-defined, unused-ignore]
  17. from ._helpers_c import under_cached_property as under_cached_property_c # type: ignore[attr-defined, unused-ignore]
  18. cached_property = cached_property_c
  19. under_cached_property = under_cached_property_c
  20. except ImportError: # pragma: no cover
  21. from ._helpers_py import cached_property as cached_property_py
  22. from ._helpers_py import under_cached_property as under_cached_property_py
  23. cached_property = cached_property_py # type: ignore[assignment, misc]
  24. under_cached_property = under_cached_property_py
  25. else:
  26. from ._helpers_py import cached_property as cached_property_py
  27. from ._helpers_py import under_cached_property as under_cached_property_py
  28. cached_property = cached_property_py # type: ignore[assignment, misc]
  29. under_cached_property = under_cached_property_py
  30. # isort: on