Sha256: 1c4cbfa2c0893fb5fb984790095d9db0701c2e5f032933898f0b7bb405ef6daa

Contents?: true

Size: 1.21 KB

Versions: 22

Compression:

Stored size: 1.21 KB

Contents

import re
import types
import threading


class TypeCache(object):
    _instance = None
    type_cache = list()
    _lock = threading.Lock()

    def __new__(cls):
        if cls._instance is None:
            with cls._lock:
                if cls._instance is None:
                    cls._instance = super(TypeCache, cls).__new__(cls)
        return cls._instance

    def cache_type(self, type_regex):
        with self._lock:
            self.type_cache.append(type_regex)

    def is_type_cache_empty(self):
        with self._lock:
            return len(self.type_cache) == 0

    def is_type_allowed(self, type_to_check):
        with self._lock:
            if isinstance(type_to_check, types.ModuleType):
                name_to_check = type_to_check.__name__
            else:
                name_to_check = ".".join([type_to_check.__module__, type_to_check.__name__])
            for pattern in self.type_cache:
                if re.match(pattern, name_to_check):
                    return True
        return False

    def get_cached_types(self):
        with self._lock:
            return self.type_cache[:]

    def clear_cache(self):
        with self._lock:
            self.type_cache.clear()
            return 0

Version data entries

22 entries across 17 versions & 1 rubygems

Version Path
javonet-ruby-sdk-2.5.10 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.9 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.8 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.7 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.6 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.5 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.4 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.3 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.2 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.1 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.5.0 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.11 lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.10 lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.10 lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.9 lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.9 lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.8 lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.8 lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.7 lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/typeCache/TypeCache.py
javonet-ruby-sdk-2.4.7 lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/typeCache/TypeCache.py