summaryrefslogtreecommitdiff
path: root/searx/compat.py
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2024-02-10 08:51:02 +0100
committerMarkus Heiser <markus.heiser@darmarIT.de>2024-02-10 09:27:19 +0100
commitbfcd41f04a3e9495273e60cd6fd16ceb9e634d9b (patch)
tree7182b3226a88145e4d8d5f30dfbae3cd4c012cdf /searx/compat.py
parentb0fe0924a3fbfbc6a8e9459fa14a12d1ef4e31d8 (diff)
downloadsearxng-bfcd41f04a3e9495273e60cd6fd16ceb9e634d9b.tar.gz
searxng-bfcd41f04a3e9495273e60cd6fd16ceb9e634d9b.zip
[clean] drop obsolete py3.7 compatibility
- https://github.com/searxng/searxng/discussions/2356 Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/compat.py')
-rw-r--r--searx/compat.py73
1 files changed, 0 insertions, 73 deletions
diff --git a/searx/compat.py b/searx/compat.py
deleted file mode 100644
index 15e27d45d..000000000
--- a/searx/compat.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# SPDX-License-Identifier: AGPL-3.0-or-later
-# lint: pylint
-# pyright: basic
-"""Module for backward compatibility.
-
-"""
-# pylint: disable=C,R
-
-
-__all__ = ('cached_property',)
-
-
-try:
- from functools import cached_property # type: ignore
-
-except ImportError:
-
- # cache_property has been added in py3.8 [1]
- #
- # To support cache_property in py3.7 the implementation from 3.8 has been
- # copied here. This code can be cleanup with EOL of py3.7.
- #
- # [1] https://docs.python.org/3/library/functools.html#functools.cached_property
-
- from threading import RLock
-
- _NOT_FOUND = object()
-
- class cached_property:
- def __init__(self, func):
- self.func = func
- self.attrname = None
- self.__doc__ = func.__doc__
- self.lock = RLock()
-
- def __set_name__(self, owner, name):
- if self.attrname is None:
- self.attrname = name
- elif name != self.attrname:
- raise TypeError(
- "Cannot assign the same cached_property to two different names "
- f"({self.attrname!r} and {name!r})."
- )
-
- def __get__(self, instance, owner=None):
- if instance is None:
- return self
- if self.attrname is None:
- raise TypeError("Cannot use cached_property instance without calling __set_name__ on it.")
- try:
- cache = instance.__dict__
- except AttributeError: # not all objects have __dict__ (e.g. class defines slots)
- msg = (
- f"No '__dict__' attribute on {type(instance).__name__!r} "
- f"instance to cache {self.attrname!r} property."
- )
- raise TypeError(msg) from None
- val = cache.get(self.attrname, _NOT_FOUND)
- if val is _NOT_FOUND:
- with self.lock:
- # check if another thread filled cache while we awaited lock
- val = cache.get(self.attrname, _NOT_FOUND)
- if val is _NOT_FOUND:
- val = self.func(instance)
- try:
- cache[self.attrname] = val
- except TypeError:
- msg = (
- f"The '__dict__' attribute on {type(instance).__name__!r} instance "
- f"does not support item assignment for caching {self.attrname!r} property."
- )
- raise TypeError(msg) from None
- return val