diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-05-28 19:28:35 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-05-28 19:28:35 +0000 |
| commit | 056bad48e2bc948a08621ab841fd882cb6934262 (patch) | |
| tree | 2635059b149309c2ad7a648bfce13fd5844d8dc8 /lib/sqlalchemy/util/langhelpers.py | |
| parent | c07979e8d44a30fdf0ea73bc587aa05a52e9955a (diff) | |
| parent | 77f1b7d236dba6b1c859bb428ef32d118ec372e6 (diff) | |
| download | sqlalchemy-056bad48e2bc948a08621ab841fd882cb6934262.tar.gz | |
Merge "callcount reductions and refinement for cached queries"
Diffstat (limited to 'lib/sqlalchemy/util/langhelpers.py')
| -rw-r--r-- | lib/sqlalchemy/util/langhelpers.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index f6fefc244..52debc517 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -942,6 +942,10 @@ class HasMemoized(object): for elem in self._memoized_keys: assert elem not in self.__dict__ + def _set_memoized_attribute(self, key, value): + self.__dict__[key] = value + self._memoized_keys |= {key} + class memoized_attribute(object): """A read-only @property that is only evaluated once.""" @@ -1260,15 +1264,20 @@ class classproperty(property): class hybridproperty(object): def __init__(self, func): self.func = func + self.clslevel = func def __get__(self, instance, owner): if instance is None: - clsval = self.func(owner) + clsval = self.clslevel(owner) clsval.__doc__ = self.func.__doc__ return clsval else: return self.func(instance) + def classlevel(self, func): + self.clslevel = func + return self + class hybridmethod(object): """Decorate a function as cls- or instance- level.""" |
