aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/compat/functools.py
blob: ec003ea90e076a6b4e714f242a5bd6006c0cb833 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# flake8: noqa: F405
from functools import *  # noqa: F403

from .compat_utils import passthrough_module

passthrough_module(__name__, 'functools')
del passthrough_module

try:
    cache  # >= 3.9
except NameError:
    cache = lru_cache(maxsize=None)

try:
    cached_property  # >= 3.8
except NameError:
    class cached_property:
        def __init__(self, func):
            update_wrapper(self, func)
            self.func = func

        def __get__(self, instance, _):
            if instance is None:
                return self
            setattr(instance, self.func.__name__, self.func(instance))
            return getattr(instance, self.func.__name__)