@@ -81,18 +81,16 @@ def get_treatment(self, key, feature, attributes=None):
8181 :rtype: str
8282 """
8383 if self ._destroyed :
84- self ._logger .warning ("Client has already been destroyed, returning CONTROL " )
84+ self ._logger .error ("Client has already been destroyed - no calls possible " )
8585 return CONTROL
8686
8787 start = int (round (time .time () * 1000 ))
8888
89- matching_key , bucketing_key = input_validator .validate_key (key )
89+ matching_key , bucketing_key = input_validator .validate_key (key , 'get_treatment' )
9090 feature = input_validator .validate_feature_name (feature )
9191
92- if (matching_key is None and bucketing_key is None ) or feature is None :
93- impression = self ._build_impression (matching_key , feature , CONTROL , Label .EXCEPTION ,
94- 0 , bucketing_key , start )
95- self ._record_stats (impression , start , SDK_GET_TREATMENT )
92+ if (matching_key is None and bucketing_key is None ) or feature is None or \
93+ input_validator .validate_attributes (attributes , 'get_treatment' ) is False :
9694 return CONTROL
9795
9896 try :
@@ -151,52 +149,50 @@ def get_treatments(self, key, features, attributes=None):
151149 :rtype: dict
152150 """
153151 if self ._destroyed :
154- self ._logger .warning ("Client has already been destroyed, returning None " )
155- return None
152+ self ._logger .error ("Client has already been destroyed - no calls possible " )
153+ return input_validator . generate_control_treatments ( features )
156154
157155 start = int (round (time .time () * 1000 ))
158156
157+ matching_key , bucketing_key = input_validator .validate_key (key , 'get_treatments' )
158+ if matching_key is None and bucketing_key is None :
159+ return input_validator .generate_control_treatments (features )
160+
161+ if input_validator .validate_attributes (attributes , 'get_treatment' ) is False :
162+ return input_validator .generate_control_treatments (features )
163+
159164 features = input_validator .validate_features_get_treatments (features )
160165 if features is None :
161- return None
162-
163- matching_key , bucketing_key = input_validator .validate_key (key )
166+ return {}
164167
165168 bulk_impressions = []
166169 treatments = {}
167170
168- if matching_key is None and bucketing_key is None :
169- for feature in features :
170- impression = self ._build_impression (matching_key , feature , CONTROL , Label .EXCEPTION ,
171- 0 , bucketing_key , start )
172- bulk_impressions .insert (impression )
171+ for feature in features :
172+ try :
173+ treatment = self ._evaluator .evaluate_treatment (
174+ feature ,
175+ matching_key ,
176+ bucketing_key ,
177+ attributes
178+ )
179+
180+ impression = self ._build_impression (matching_key ,
181+ feature ,
182+ treatment ['treatment' ],
183+ treatment ['impression' ]['label' ],
184+ treatment ['impression' ]['change_number' ],
185+ bucketing_key ,
186+ start )
187+
188+ bulk_impressions .append (impression )
189+ treatments [feature ] = treatment ['treatment' ]
190+
191+ except Exception :
192+ self ._logger .exception ('get_treatments: An exception occured when evaluating '
193+ 'feature ' + feature + ' returning CONTROL.' )
173194 treatments [feature ] = CONTROL
174- else :
175- for feature in features :
176- try :
177- treatment = self ._evaluator .evaluate_treatment (
178- feature ,
179- matching_key ,
180- bucketing_key ,
181- attributes
182- )
183-
184- impression = self ._build_impression (matching_key ,
185- feature ,
186- treatment ['treatment' ],
187- treatment ['impression' ]['label' ],
188- treatment ['impression' ]['change_number' ],
189- bucketing_key ,
190- start )
191-
192- bulk_impressions .append (impression )
193- treatments [feature ] = treatment ['treatment' ]
194-
195- except Exception :
196- self ._logger .exception ('get_treatments: An exception occured when evaluating '
197- 'feature ' + feature + ' returning CONTROL.' )
198- treatments [feature ] = CONTROL
199- continue
195+ continue
200196
201197 # Register impressions
202198 try :
@@ -268,6 +264,10 @@ def track(self, key, traffic_type, event_type, value=None):
268264
269265 :rtype: bool
270266 """
267+ if self ._destroyed :
268+ self ._logger .error ("Client has already been destroyed - no calls possible" )
269+ return False
270+
271271 key = input_validator .validate_track_key (key )
272272 event_type = input_validator .validate_event_type (event_type )
273273 traffic_type = input_validator .validate_traffic_type (traffic_type )
0 commit comments