1- from abc import ABC
2- from collections import defaultdict
1+ from abc import ABC , abstractmethod
32from typing import Any
43
4+ from edge_proxy .feature_utils import build_feature_types_lookup
5+
56
67class BaseEnvironmentsCache (ABC ):
78 def __init__ (self , * args , ** kwargs ):
@@ -24,22 +25,18 @@ def put_environment(
2425 return True
2526 return False
2627
28+ @abstractmethod
2729 def _put_environment (
2830 self ,
2931 environment_api_key : str ,
3032 environment_document : dict [str , Any ],
31- ) -> None :
32- raise NotImplementedError ()
33+ ) -> None : ...
3334
34- def get_environment ( self , environment_api_key : str ) -> dict [ str , Any ] | None :
35- raise NotImplementedError ()
35+ @ abstractmethod
36+ def get_environment ( self , environment_api_key : str ) -> dict [ str , Any ] | None : ...
3637
37- def get_identity (
38- self ,
39- environment_api_key : str ,
40- identifier : str ,
41- ) -> dict [str , Any ]:
42- raise NotImplementedError ()
38+ @abstractmethod
39+ def get_feature_types (self , environment_api_key : str ) -> dict [int , str ] | None : ...
4340
4441
4542_LocalCacheDict = dict [str , dict [str , Any ]]
@@ -49,33 +46,24 @@ class LocalMemEnvironmentsCache(BaseEnvironmentsCache):
4946 def __init__ (self , * args , ** kwargs ):
5047 super ().__init__ (* args , ** kwargs )
5148 self ._environment_cache : _LocalCacheDict = {}
52- self ._identity_override_cache = defaultdict [str , _LocalCacheDict ]( dict )
49+ self ._feature_types_cache : dict [str , dict [ int , str ]] = {}
5350
5451 def _put_environment (
5552 self ,
5653 environment_api_key : str ,
5754 environment_document : dict [str , Any ],
5855 ) -> None :
5956 self ._environment_cache [environment_api_key ] = environment_document
60- new_overrides = environment_document .get ("identity_overrides" ) or []
61- self ._identity_override_cache [environment_api_key ] = {
62- identifier : identity_document
63- for identity_document in new_overrides
64- if (identifier := identity_document .get ("identifier" ))
65- }
57+
58+ self ._feature_types_cache [environment_api_key ] = build_feature_types_lookup (
59+ environment_document
60+ )
6661
6762 def get_environment (
6863 self ,
6964 environment_api_key : str ,
7065 ) -> dict [str , Any ] | None :
7166 return self ._environment_cache .get (environment_api_key )
7267
73- def get_identity (
74- self ,
75- environment_api_key : str ,
76- identifier : str ,
77- ) -> dict [str , Any ]:
78- return self ._identity_override_cache [environment_api_key ].get (identifier ) or {
79- "environment_api_key" : environment_api_key ,
80- "identifier" : identifier ,
81- }
68+ def get_feature_types (self , environment_api_key : str ) -> dict [int , str ] | None :
69+ return self ._feature_types_cache .get (environment_api_key )
0 commit comments