Server IP : 66.29.132.122 / Your IP : 3.140.186.17 Web Server : LiteSpeed System : Linux business142.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : admazpex ( 531) PHP Version : 7.2.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/imunify360/venv/lib/python3.11/site-packages/dateutil/tz/ |
Upload File : |
from datetime import timedelta import weakref from collections import OrderedDict from six.moves import _thread class _TzSingleton(type): def __init__(cls, *args, **kwargs): cls.__instance = None super(_TzSingleton, cls).__init__(*args, **kwargs) def __call__(cls): if cls.__instance is None: cls.__instance = super(_TzSingleton, cls).__call__() return cls.__instance class _TzFactory(type): def instance(cls, *args, **kwargs): """Alternate constructor that returns a fresh instance""" return type.__call__(cls, *args, **kwargs) class _TzOffsetFactory(_TzFactory): def __init__(cls, *args, **kwargs): cls.__instances = weakref.WeakValueDictionary() cls.__strong_cache = OrderedDict() cls.__strong_cache_size = 8 cls._cache_lock = _thread.allocate_lock() def __call__(cls, name, offset): if isinstance(offset, timedelta): key = (name, offset.total_seconds()) else: key = (name, offset) instance = cls.__instances.get(key, None) if instance is None: instance = cls.__instances.setdefault(key, cls.instance(name, offset)) # This lock may not be necessary in Python 3. See GH issue #901 with cls._cache_lock: cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) # Remove an item if the strong cache is overpopulated if len(cls.__strong_cache) > cls.__strong_cache_size: cls.__strong_cache.popitem(last=False) return instance class _TzStrFactory(_TzFactory): def __init__(cls, *args, **kwargs): cls.__instances = weakref.WeakValueDictionary() cls.__strong_cache = OrderedDict() cls.__strong_cache_size = 8 cls.__cache_lock = _thread.allocate_lock() def __call__(cls, s, posix_offset=False): key = (s, posix_offset) instance = cls.__instances.get(key, None) if instance is None: instance = cls.__instances.setdefault(key, cls.instance(s, posix_offset)) # This lock may not be necessary in Python 3. See GH issue #901 with cls.__cache_lock: cls.__strong_cache[key] = cls.__strong_cache.pop(key, instance) # Remove an item if the strong cache is overpopulated if len(cls.__strong_cache) > cls.__strong_cache_size: cls.__strong_cache.popitem(last=False) return instance