44from functools import lru_cache
55
66import httpx
7- from fastapi .responses import ORJSONResponse
87from flag_engine .engine import (
98 get_environment_feature_state ,
109 get_environment_feature_states ,
1514from orjson import orjson
1615
1716from src .cache import BaseEnvironmentsCache , LocalMemEnvironmentsCache
18- from src .exceptions import FlagsmithUnknownKeyError
17+ from src .exceptions import FeatureNotFoundError , FlagsmithUnknownKeyError
1918from src .feature_utils import filter_out_server_key_only_feature_states
2019from src .mappers import (
2120 map_feature_state_to_response_data ,
@@ -73,7 +72,7 @@ async def refresh_environment_caches(self):
7372
7473 def get_flags_response_data (
7574 self , environment_key : str , feature : str = None
76- ) -> ORJSONResponse :
75+ ) -> dict [ str , typing . Any ] :
7776 environment_document = self .get_environment (environment_key )
7877 environment = build_environment_model (environment_document )
7978
@@ -84,13 +83,7 @@ def get_flags_response_data(
8483 feature_states = [feature_state ],
8584 environment = environment ,
8685 ):
87- return ORJSONResponse (
88- status_code = 404 ,
89- content = {
90- "status" : "not_found" ,
91- "message" : f"feature '{ feature } ' not found" ,
92- },
93- )
86+ raise FeatureNotFoundError ()
9487
9588 data = map_feature_state_to_response_data (feature_state )
9689
@@ -101,11 +94,11 @@ def get_flags_response_data(
10194 )
10295 data = map_feature_states_to_response_data (feature_states )
10396
104- return ORJSONResponse ( data )
97+ return data
10598
10699 def get_identity_response_data (
107100 self , input_data : IdentityWithTraits , environment_key : str
108- ) -> ORJSONResponse :
101+ ) -> dict [ str , typing . Any ] :
109102 environment_document = self .get_environment (environment_key )
110103 environment = build_environment_model (environment_document )
111104 identity = IdentityModel (
@@ -127,7 +120,7 @@ def get_identity_response_data(
127120 identity_hash_key = identity .composite_key ,
128121 ),
129122 }
130- return ORJSONResponse ( data )
123+ return data
131124
132125 def get_environment (self , client_side_key : str ) -> dict [str , typing .Any ]:
133126 if environment_document := self .cache .get_environment (client_side_key ):
0 commit comments