about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/propcache
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/propcache
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/propcache')
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/__init__.py32
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/_helpers.py39
-rwxr-xr-x.venv/lib/python3.12/site-packages/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.sobin0 -> 844512 bytes
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx84
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/_helpers_py.py56
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/api.py8
-rw-r--r--.venv/lib/python3.12/site-packages/propcache/py.typed1
7 files changed, 220 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/propcache/__init__.py b/.venv/lib/python3.12/site-packages/propcache/__init__.py
new file mode 100644
index 00000000..aff04142
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/__init__.py
@@ -0,0 +1,32 @@
+"""propcache: An accelerated property cache for Python classes."""
+
+from typing import TYPE_CHECKING
+
+_PUBLIC_API = ("cached_property", "under_cached_property")
+
+__version__ = "0.3.0"
+__all__ = ()
+
+# Imports have moved to `propcache.api` in 0.2.0+.
+# This module is now a facade for the API.
+if TYPE_CHECKING:
+    from .api import cached_property as cached_property  # noqa: F401
+    from .api import under_cached_property as under_cached_property  # noqa: F401
+
+
+def _import_facade(attr: str) -> object:
+    """Import the public API from the `api` module."""
+    if attr in _PUBLIC_API:
+        from . import api  # pylint: disable=import-outside-toplevel
+
+        return getattr(api, attr)
+    raise AttributeError(f"module '{__package__}' has no attribute '{attr}'")
+
+
+def _dir_facade() -> list[str]:
+    """Include the public API in the module's dir() output."""
+    return [*_PUBLIC_API, *globals().keys()]
+
+
+__getattr__ = _import_facade
+__dir__ = _dir_facade
diff --git a/.venv/lib/python3.12/site-packages/propcache/_helpers.py b/.venv/lib/python3.12/site-packages/propcache/_helpers.py
new file mode 100644
index 00000000..99cadfd6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/_helpers.py
@@ -0,0 +1,39 @@
+import os
+import sys
+from typing import TYPE_CHECKING
+
+__all__ = ("cached_property", "under_cached_property")
+
+
+NO_EXTENSIONS = bool(os.environ.get("PROPCACHE_NO_EXTENSIONS"))  # type: bool
+if sys.implementation.name != "cpython":
+    NO_EXTENSIONS = True
+
+
+# isort: off
+if TYPE_CHECKING:
+    from ._helpers_py import cached_property as cached_property_py
+    from ._helpers_py import under_cached_property as under_cached_property_py
+
+    cached_property = cached_property_py
+    under_cached_property = under_cached_property_py
+elif not NO_EXTENSIONS:  # pragma: no branch
+    try:
+        from ._helpers_c import cached_property as cached_property_c  # type: ignore[attr-defined, unused-ignore] # noqa: E501
+        from ._helpers_c import under_cached_property as under_cached_property_c  # type: ignore[attr-defined, unused-ignore] # noqa: E501
+
+        cached_property = cached_property_c
+        under_cached_property = under_cached_property_c
+    except ImportError:  # pragma: no cover
+        from ._helpers_py import cached_property as cached_property_py
+        from ._helpers_py import under_cached_property as under_cached_property_py
+
+        cached_property = cached_property_py  # type: ignore[assignment, misc]
+        under_cached_property = under_cached_property_py
+else:
+    from ._helpers_py import cached_property as cached_property_py
+    from ._helpers_py import under_cached_property as under_cached_property_py
+
+    cached_property = cached_property_py  # type: ignore[assignment, misc]
+    under_cached_property = under_cached_property_py
+# isort: on
diff --git a/.venv/lib/python3.12/site-packages/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so b/.venv/lib/python3.12/site-packages/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so
new file mode 100755
index 00000000..9bb01459
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/_helpers_c.cpython-312-x86_64-linux-gnu.so
Binary files differdiff --git a/.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx b/.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx
new file mode 100644
index 00000000..49ad9465
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/_helpers_c.pyx
@@ -0,0 +1,84 @@
+# cython: language_level=3, freethreading_compatible=True
+from types import GenericAlias
+
+
+cdef _sentinel = object()
+
+cdef class under_cached_property:
+    """Use as a class method decorator.  It operates almost exactly like
+    the Python `@property` decorator, but it puts the result of the
+    method it decorates into the instance dict after the first call,
+    effectively replacing the function it decorates with an instance
+    variable.  It is, in Python parlance, a data descriptor.
+
+    """
+
+    cdef readonly object wrapped
+    cdef object name
+
+    def __init__(self, wrapped):
+        self.wrapped = wrapped
+        self.name = wrapped.__name__
+
+    @property
+    def __doc__(self):
+        return self.wrapped.__doc__
+
+    def __get__(self, inst, owner):
+        if inst is None:
+            return self
+        cdef dict cache = inst._cache
+        val = cache.get(self.name, _sentinel)
+        if val is _sentinel:
+            val = self.wrapped(inst)
+            cache[self.name] = val
+        return val
+
+    def __set__(self, inst, value):
+        raise AttributeError("cached property is read-only")
+
+
+cdef class cached_property:
+    """Use as a class method decorator.  It operates almost exactly like
+    the Python `@property` decorator, but it puts the result of the
+    method it decorates into the instance dict after the first call,
+    effectively replacing the function it decorates with an instance
+    variable.  It is, in Python parlance, a data descriptor.
+
+    """
+
+    cdef readonly object func
+    cdef object name
+
+    def __init__(self, func):
+        self.func = func
+        self.name = None
+
+    @property
+    def __doc__(self):
+        return self.func.__doc__
+
+    def __set_name__(self, owner, name):
+        if self.name is None:
+            self.name = name
+        elif name != self.name:
+            raise TypeError(
+                "Cannot assign the same cached_property to two different names "
+                f"({self.name!r} and {name!r})."
+            )
+
+    def __get__(self, inst, owner):
+        if inst is None:
+            return self
+        if self.name is None:
+            raise TypeError(
+                "Cannot use cached_property instance"
+                " without calling __set_name__ on it.")
+        cdef dict cache = inst.__dict__
+        val = cache.get(self.name, _sentinel)
+        if val is _sentinel:
+            val = self.func(inst)
+            cache[self.name] = val
+        return val
+
+    __class_getitem__ = classmethod(GenericAlias)
diff --git a/.venv/lib/python3.12/site-packages/propcache/_helpers_py.py b/.venv/lib/python3.12/site-packages/propcache/_helpers_py.py
new file mode 100644
index 00000000..2f3e6880
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/_helpers_py.py
@@ -0,0 +1,56 @@
+"""Various helper functions."""
+
+import sys
+from functools import cached_property
+from typing import Any, Callable, Generic, Optional, Protocol, TypeVar, Union, overload
+
+__all__ = ("under_cached_property", "cached_property")
+
+
+if sys.version_info >= (3, 11):
+    from typing import Self
+else:
+    Self = Any
+
+_T = TypeVar("_T")
+
+
+class _TSelf(Protocol, Generic[_T]):
+    _cache: dict[str, _T]
+
+
+class under_cached_property(Generic[_T]):
+    """Use as a class method decorator.
+
+    It operates almost exactly like
+    the Python `@property` decorator, but it puts the result of the
+    method it decorates into the instance dict after the first call,
+    effectively replacing the function it decorates with an instance
+    variable.  It is, in Python parlance, a data descriptor.
+    """
+
+    def __init__(self, wrapped: Callable[..., _T]) -> None:
+        self.wrapped = wrapped
+        self.__doc__ = wrapped.__doc__
+        self.name = wrapped.__name__
+
+    @overload
+    def __get__(self, inst: None, owner: Optional[type[object]] = None) -> Self: ...
+
+    @overload
+    def __get__(self, inst: _TSelf[_T], owner: Optional[type[object]] = None) -> _T: ...
+
+    def __get__(
+        self, inst: Optional[_TSelf[_T]], owner: Optional[type[object]] = None
+    ) -> Union[_T, Self]:
+        if inst is None:
+            return self
+        try:
+            return inst._cache[self.name]
+        except KeyError:
+            val = self.wrapped(inst)
+            inst._cache[self.name] = val
+            return val
+
+    def __set__(self, inst: _TSelf[_T], value: _T) -> None:
+        raise AttributeError("cached property is read-only")
diff --git a/.venv/lib/python3.12/site-packages/propcache/api.py b/.venv/lib/python3.12/site-packages/propcache/api.py
new file mode 100644
index 00000000..22389e63
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/api.py
@@ -0,0 +1,8 @@
+"""Public API of the property caching library."""
+
+from ._helpers import cached_property, under_cached_property
+
+__all__ = (
+    "cached_property",
+    "under_cached_property",
+)
diff --git a/.venv/lib/python3.12/site-packages/propcache/py.typed b/.venv/lib/python3.12/site-packages/propcache/py.typed
new file mode 100644
index 00000000..dcf2c804
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/propcache/py.typed
@@ -0,0 +1 @@
+# Placeholder