Skip to content

Commit 9a6170e

Browse files
author
Matias Melograno
committed
improvements on fetch_many functions
1 parent ed9b7dd commit 9a6170e

File tree

6 files changed

+18
-28
lines changed

6 files changed

+18
-28
lines changed

splitio/client/client.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,17 +194,14 @@ def get_treatment(self, key, feature, attributes=None):
194194

195195
def _evaluate_features_if_ready(self, matching_key, bucketing_key, features, attributes=None):
196196
if not self.ready:
197-
evaluations = dict()
198-
for feature in features:
199-
evaluations[feature] = {
197+
return {
198+
feature: {
200199
'treatment': CONTROL,
201200
'configurations': None,
202-
'impression': {
203-
'label': Label.NOT_READY,
204-
'change_number': None
205-
}
201+
'impression': {'label': Label.NOT_READY, 'change_number': None}
206202
}
207-
return evaluations
203+
for feature in features
204+
}
208205

209206
return self._evaluator.evaluate_features(
210207
features,

splitio/client/util.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def _get_ip():
1717
# doesn't even have to be reachable
1818
sock.connect(('10.255.255.255', 1))
1919
ip_address = sock.getsockname()[0]
20-
except Exception: #pylint: disable=broad-except
20+
except Exception: # pylint: disable=broad-except
2121
ip_address = 'unknown'
2222
finally:
2323
sock.close()
@@ -61,7 +61,7 @@ def get_calls(classes_filter=None):
6161
inspect.getframeinfo(frame[0]).function
6262
for frame in inspect.stack()
6363
if classes_filter is None
64-
or 'self' in frame[0].f_locals and frame[0].f_locals['self'].__class__.__name__ in classes_filter #pylint: disable=line-too-long
64+
or 'self' in frame[0].f_locals and frame[0].f_locals['self'].__class__.__name__ in classes_filter # pylint: disable=line-too-long
6565
]
66-
except Exception: #pylint: disable=broad-except
66+
except Exception: # pylint: disable=broad-except
6767
return []

splitio/engine/evaluator.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Split evaluator module."""
22
import logging
3+
import six
34
from splitio.models.grammar.condition import ConditionType
45
from splitio.models.impressions import Label
56

@@ -139,6 +140,11 @@ def evaluate_features(self, features, matching_key, bucketing_key, attributes=No
139140
evaluations[feature] = self._evaluate_treatment(feature, matching_key,
140141
bucketing_key, attributes, split)
141142
return evaluations
143+
return {
144+
feature: self._evaluate_treatment(feature, matching_key,
145+
bucketing_key, attributes, split)
146+
for (feature, split) in six.iteritems(self._split_storage.fetch_many(features))
147+
}
142148

143149
def _get_treatment_for_split(self, split, matching_key, bucketing_key, attributes=None):
144150
"""

splitio/storage/inmemmory.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,7 @@ def fetch_many(self, split_names):
4646
:return: A dict with split objects parsed from queue.
4747
:rtype: dict(split_name, splitio.models.splits.Split)
4848
"""
49-
to_return = dict()
50-
with self._lock:
51-
for split_name in split_names:
52-
to_return[split_name] = self.get(split_name)
53-
return to_return
49+
return {split_name: self.get(split_name) for split_name in split_names}
5450

5551
def put(self, split):
5652
"""

splitio/storage/redis.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,8 @@ def __init__(self, redis_client, enable_caching=False, max_age=DEFAULT_MAX_AGE):
3030
self._redis = redis_client
3131
if enable_caching:
3232
self.get = add_cache(lambda *p, **_: p[0], max_age)(self.get)
33-
self.is_valid_traffic_type = add_cache(
34-
lambda *p, **_: p[0],
35-
max_age
36-
)(self.is_valid_traffic_type) # pylint: disable=line-too-long
37-
self.fetch_many = add_cache(
38-
lambda *p, **_: frozenset(p[0]),
39-
max_age
40-
)(self.fetch_many)
33+
self.is_valid_traffic_type = add_cache(lambda *p, **_: p[0], max_age)(self.is_valid_traffic_type) # pylint: disable=line-too-long
34+
self.fetch_many = add_cache(lambda *p, **_: frozenset(p[0]), max_age)(self.fetch_many)
4135

4236
def _get_key(self, split_name):
4337
"""

splitio/storage/uwsgi.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,7 @@ def fetch_many(self, split_names):
6363
:return: A dict with split objects parsed from queue.
6464
:rtype: dict(split_name, splitio.models.splits.Split)
6565
"""
66-
to_return = dict()
67-
for split_name in split_names:
68-
to_return[split_name] = self.get(split_name)
69-
return to_return
66+
return {split_name: self.get(split_name) for split_name in split_names}
7067

7168
def put(self, split):
7269
"""

0 commit comments

Comments
 (0)