Skip to content

Commit 1d61988

Browse files
committed
Remove unnecessary region implementation
1 parent e07c1b4 commit 1d61988

File tree

7 files changed

+52
-88
lines changed

7 files changed

+52
-88
lines changed

optimizely/event/event_factory.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ def create_log_event(
8686
return None
8787

8888
user_context = first_event.event_context
89-
region_value = user_context.region.value if hasattr(user_context.region, 'value') else user_context.region
9089
event_batch = payload.EventBatch(
9190
user_context.account_id,
9291
user_context.project_id,
@@ -95,15 +94,22 @@ def create_log_event(
9594
user_context.client_version,
9695
user_context.anonymize_ip,
9796
True,
98-
region_value,
9997
)
10098

10199
event_batch.visitors = visitors
102100

103101
event_params = event_batch.get_event_params()
104102

105-
region_str = user_context.region.value if hasattr(user_context.region, 'value') else str(user_context.region)
106-
endpoint = cls.EVENT_ENDPOINTS.get(region_str, cls.EVENT_ENDPOINTS['US'])
103+
region = user_context.region
104+
if hasattr(region, 'value'):
105+
region_str = region.value
106+
elif region is None:
107+
region_str = 'US' # Default to US
108+
else:
109+
region_str = str(region)
110+
111+
region_key = region_str.upper()
112+
endpoint = cls.EVENT_ENDPOINTS.get(region_key, cls.EVENT_ENDPOINTS['US'])
107113

108114
return log_event.LogEvent(endpoint, event_params, cls.HTTP_VERB, cls.HTTP_HEADERS)
109115

optimizely/event/payload.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def __init__(
3333
client_version: str,
3434
anonymize_ip: bool,
3535
enrich_decisions: bool = True,
36-
visitors: Optional[list[Visitor]] = None,
37-
region: str = 'US'
36+
visitors: Optional[list[Visitor]] = None
3837
):
3938
self.account_id = account_id
4039
self.project_id = project_id
@@ -44,7 +43,6 @@ def __init__(
4443
self.anonymize_ip = anonymize_ip
4544
self.enrich_decisions = enrich_decisions
4645
self.visitors = visitors or []
47-
self.region = region
4846

4947
def __eq__(self, other: object) -> bool:
5048
batch_obj = self.get_event_params()

optimizely/event_builder.py

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class EventParams:
8484
CUSTOM: Final = 'custom'
8585
ANONYMIZE_IP: Final = 'anonymize_ip'
8686
REVISION: Final = 'revision'
87+
REGION: Final = 'region'
8788

8889
def _get_attributes_data(
8990
self, project_config: ProjectConfig, attributes: UserAttributes
@@ -173,6 +174,7 @@ def _get_common_params(
173174
common_params[self.EventParams.SOURCE_SDK_VERSION] = version.__version__
174175
common_params[self.EventParams.ANONYMIZE_IP] = project_config.get_anonymize_ip_value()
175176
common_params[self.EventParams.REVISION] = project_config.get_revision()
177+
common_params[self.EventParams.REGION] = project_config.region.value
176178

177179
return common_params
178180

@@ -249,8 +251,7 @@ def _get_required_params_for_conversion(
249251

250252
def create_impression_event(
251253
self, project_config: ProjectConfig, experiment: Experiment,
252-
variation_id: str, user_id: str, attributes: UserAttributes,
253-
region: str = 'US'
254+
variation_id: str, user_id: str, attributes: UserAttributes
254255
) -> Event:
255256
""" Create impression Event to be sent to the logging endpoint.
256257
@@ -270,17 +271,14 @@ def create_impression_event(
270271

271272
params[self.EventParams.USERS][0][self.EventParams.SNAPSHOTS].append(impression_params)
272273

273-
params['region'] = project_config.region.value
274-
275-
region = project_config.region or 'US'
274+
region = params.get('region', 'US')
276275
events_url = self.EVENTS_URLS.get(str(region), self.EVENTS_URLS['US'])
277276

278277
return Event(events_url, params, http_verb=self.HTTP_VERB, headers=self.HTTP_HEADERS)
279278

280279
def create_conversion_event(
281280
self, project_config: ProjectConfig, event_key: str,
282-
user_id: str, attributes: UserAttributes, event_tags: event_tag_utils.EventTags,
283-
region: str = 'US'
281+
user_id: str, attributes: UserAttributes, event_tags: event_tag_utils.EventTags
284282
) -> Event:
285283
""" Create conversion Event to be sent to the logging endpoint.
286284
@@ -300,9 +298,7 @@ def create_conversion_event(
300298

301299
params[self.EventParams.USERS][0][self.EventParams.SNAPSHOTS].append(conversion_params)
302300

303-
params['region'] = project_config.region.value
304-
305-
region = project_config.region or 'US'
301+
region = params.get('region', 'US')
306302
events_url = self.EVENTS_URLS.get(str(region), self.EVENTS_URLS['US'])
307303

308304
return Event(events_url, params, http_verb=self.HTTP_VERB, headers=self.HTTP_HEADERS)

tests/base.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ def fake_server_response(self, status_code: Optional[int] = None,
5757

5858
def setUp(self, config_dict='config_dict'):
5959
self.config_dict = {
60-
'region': 'US',
6160
'revision': '42',
6261
'sdkKey': 'basic-test',
6362
'version': '2',
@@ -151,7 +150,6 @@ def setUp(self, config_dict='config_dict'):
151150

152151
# datafile version 4
153152
self.config_dict_with_features = {
154-
'region': 'US',
155153
'revision': '1',
156154
'sdkKey': 'features-test',
157155
'accountId': '12001',
@@ -555,7 +553,6 @@ def setUp(self, config_dict='config_dict'):
555553
}
556554

557555
self.config_dict_with_multiple_experiments = {
558-
'region': 'US',
559556
'revision': '42',
560557
'sdkKey': 'multiple-experiments',
561558
'version': '2',
@@ -689,7 +686,6 @@ def setUp(self, config_dict='config_dict'):
689686
'accountId': '10367498574',
690687
'events': [{'experimentIds': ['10420810910'], 'id': '10404198134', 'key': 'winning'}],
691688
'revision': '1337',
692-
'region': 'US',
693689
}
694690

695691
self.config_dict_with_typed_audiences = {
@@ -1082,7 +1078,6 @@ def setUp(self, config_dict='config_dict'):
10821078
],
10831079
'revision': '3',
10841080
'sdkKey': 'typed-audiences',
1085-
'region': 'US',
10861081
}
10871082

10881083
self.config_dict_with_audience_segments = {
@@ -1280,7 +1275,6 @@ def setUp(self, config_dict='config_dict'):
12801275
],
12811276
'revision': '101',
12821277
'sdkKey': 'segments-test',
1283-
'region': 'US',
12841278
}
12851279

12861280
config = getattr(self, config_dict)

tests/test_event_builder.py

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class EventBuilderTest(base.BaseTest):
3737
def setUp(self, *args, **kwargs):
3838
base.BaseTest.setUp(self, 'config_dict_with_multiple_experiments')
3939
self.event_builder = self.optimizely.event_builder
40+
self.maxDiff = None
4041

4142
def _validate_event_object(self, event_obj, expected_url, expected_params, expected_verb, expected_headers):
4243
""" Helper method to validate properties of the event object. """
@@ -86,7 +87,6 @@ def test_create_impression_event(self):
8687
'enrich_decisions': True,
8788
'anonymize_ip': False,
8889
'revision': '42',
89-
'region': 'US',
9090
}
9191

9292
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -142,7 +142,6 @@ def test_create_impression_event__with_attributes(self):
142142
'enrich_decisions': True,
143143
'anonymize_ip': False,
144144
'revision': '42',
145-
'region': 'US',
146145
}
147146

148147
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -196,7 +195,6 @@ def test_create_impression_event_when_attribute_is_not_in_datafile(self):
196195
'enrich_decisions': True,
197196
'anonymize_ip': False,
198197
'revision': '42',
199-
'region': 'US',
200198
}
201199

202200
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -207,8 +205,7 @@ def test_create_impression_event_when_attribute_is_not_in_datafile(self):
207205
self.project_config.get_experiment_from_key('test_experiment'),
208206
'111129',
209207
'test_user',
210-
{'do_you_know_me': 'test_value'},
211-
'US'
208+
{'do_you_know_me': 'test_value'}
212209
)
213210
self._validate_event_object(
214211
event_obj,
@@ -254,7 +251,6 @@ def test_create_impression_event_calls_is_attribute_valid(self):
254251
'enrich_decisions': True,
255252
'anonymize_ip': False,
256253
'revision': '42',
257-
'region': 'US',
258254
}
259255

260256
def side_effect(*args, **kwargs):
@@ -280,8 +276,7 @@ def side_effect(*args, **kwargs):
280276
self.project_config.get_experiment_from_key('test_experiment'),
281277
'111129',
282278
'test_user',
283-
attributes,
284-
'US',
279+
attributes
285280
)
286281

287282
self._validate_event_object(
@@ -334,7 +329,6 @@ def test_create_impression_event__with_user_agent_when_bot_filtering_is_enabled(
334329
'enrich_decisions': True,
335330
'anonymize_ip': False,
336331
'revision': '42',
337-
'region': 'US',
338332
}
339333

340334
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -347,8 +341,7 @@ def test_create_impression_event__with_user_agent_when_bot_filtering_is_enabled(
347341
self.project_config.get_experiment_from_key('test_experiment'),
348342
'111129',
349343
'test_user',
350-
{'$opt_user_agent': 'Edge'},
351-
'US'
344+
{'$opt_user_agent': 'Edge'}
352345
)
353346

354347
self._validate_event_object(
@@ -400,7 +393,6 @@ def test_create_impression_event__with_empty_attributes_when_bot_filtering_is_en
400393
'enrich_decisions': True,
401394
'anonymize_ip': False,
402395
'revision': '42',
403-
'region': 'US',
404396
}
405397

406398
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -413,8 +405,7 @@ def test_create_impression_event__with_empty_attributes_when_bot_filtering_is_en
413405
self.project_config.get_experiment_from_key('test_experiment'),
414406
'111129',
415407
'test_user',
416-
None,
417-
'US'
408+
None
418409
)
419410

420411
self._validate_event_object(
@@ -472,7 +463,6 @@ def test_create_impression_event__with_user_agent_when_bot_filtering_is_disabled
472463
'enrich_decisions': True,
473464
'anonymize_ip': False,
474465
'revision': '42',
475-
'region': 'US',
476466
}
477467

478468
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -485,8 +475,7 @@ def test_create_impression_event__with_user_agent_when_bot_filtering_is_disabled
485475
self.project_config.get_experiment_from_key('test_experiment'),
486476
'111129',
487477
'test_user',
488-
{'$opt_user_agent': 'Chrome'},
489-
'US'
478+
{'$opt_user_agent': 'Chrome'}
490479
)
491480

492481
self._validate_event_object(
@@ -527,14 +516,13 @@ def test_create_conversion_event(self):
527516
'enrich_decisions': True,
528517
'anonymize_ip': False,
529518
'revision': '42',
530-
'region': 'US',
531519
}
532520

533521
with mock.patch('time.time', return_value=42.123), mock.patch(
534522
'uuid.uuid4', return_value='a68cf1ad-0393-4e18-af87-efe8f01a7c9c'
535523
):
536524
event_obj = self.event_builder.create_conversion_event(
537-
self.project_config, 'test_event', 'test_user', None, None, 'US'
525+
self.project_config, 'test_event', 'test_user', None, None
538526
)
539527
self._validate_event_object(
540528
event_obj,
@@ -576,14 +564,13 @@ def test_create_conversion_event__with_attributes(self):
576564
'enrich_decisions': True,
577565
'anonymize_ip': False,
578566
'revision': '42',
579-
'region': 'US',
580567
}
581568

582569
with mock.patch('time.time', return_value=42.123), mock.patch(
583570
'uuid.uuid4', return_value='a68cf1ad-0393-4e18-af87-efe8f01a7c9c'
584571
):
585572
event_obj = self.event_builder.create_conversion_event(
586-
self.project_config, 'test_event', 'test_user', {'test_attribute': 'test_value'}, None, 'US'
573+
self.project_config, 'test_event', 'test_user', {'test_attribute': 'test_value'}, None
587574
)
588575
self._validate_event_object(
589576
event_obj,
@@ -632,7 +619,6 @@ def test_create_conversion_event__with_user_agent_when_bot_filtering_is_enabled(
632619
'enrich_decisions': True,
633620
'anonymize_ip': False,
634621
'revision': '42',
635-
'region': 'US',
636622
}
637623

638624
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -641,7 +627,7 @@ def test_create_conversion_event__with_user_agent_when_bot_filtering_is_enabled(
641627
'optimizely.project_config.ProjectConfig.get_bot_filtering_value', return_value=True,
642628
):
643629
event_obj = self.event_builder.create_conversion_event(
644-
self.project_config, 'test_event', 'test_user', {'$opt_user_agent': 'Edge'}, None, 'US'
630+
self.project_config, 'test_event', 'test_user', {'$opt_user_agent': 'Edge'}, None
645631
)
646632

647633
self._validate_event_object(
@@ -696,7 +682,6 @@ def test_create_conversion_event__with_user_agent_when_bot_filtering_is_disabled
696682
'enrich_decisions': True,
697683
'anonymize_ip': False,
698684
'revision': '42',
699-
'region': 'US',
700685
}
701686

702687
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -705,7 +690,7 @@ def test_create_conversion_event__with_user_agent_when_bot_filtering_is_disabled
705690
'optimizely.project_config.ProjectConfig.get_bot_filtering_value', return_value=False,
706691
):
707692
event_obj = self.event_builder.create_conversion_event(
708-
self.project_config, 'test_event', 'test_user', {'$opt_user_agent': 'Chrome'}, None, 'US'
693+
self.project_config, 'test_event', 'test_user', {'$opt_user_agent': 'Chrome'}, None
709694
)
710695

711696
self._validate_event_object(
@@ -751,7 +736,6 @@ def test_create_conversion_event__with_event_tags(self):
751736
'enrich_decisions': True,
752737
'anonymize_ip': False,
753738
'revision': '42',
754-
'region': 'US',
755739
}
756740

757741
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -762,8 +746,7 @@ def test_create_conversion_event__with_event_tags(self):
762746
'test_event',
763747
'test_user',
764748
{'test_attribute': 'test_value'},
765-
{'revenue': 4200, 'value': 1.234, 'non-revenue': 'abc'},
766-
'US'
749+
{'revenue': 4200, 'value': 1.234, 'non-revenue': 'abc'}
767750
)
768751
self._validate_event_object(
769752
event_obj,
@@ -806,7 +789,6 @@ def test_create_conversion_event__with_invalid_event_tags(self):
806789
'enrich_decisions': True,
807790
'anonymize_ip': False,
808791
'revision': '42',
809-
'region': 'US',
810792
}
811793

812794
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -817,8 +799,7 @@ def test_create_conversion_event__with_invalid_event_tags(self):
817799
'test_event',
818800
'test_user',
819801
{'test_attribute': 'test_value'},
820-
{'revenue': '4200', 'value': True, 'non-revenue': 'abc'},
821-
'US'
802+
{'revenue': '4200', 'value': True, 'non-revenue': 'abc'}
822803
)
823804
self._validate_event_object(
824805
event_obj,
@@ -863,7 +844,6 @@ def test_create_conversion_event__when_event_is_used_in_multiple_experiments(sel
863844
'enrich_decisions': True,
864845
'anonymize_ip': False,
865846
'revision': '42',
866-
'region': 'US',
867847
}
868848

869849
with mock.patch('time.time', return_value=42.123), mock.patch(
@@ -874,8 +854,7 @@ def test_create_conversion_event__when_event_is_used_in_multiple_experiments(sel
874854
'test_event',
875855
'test_user',
876856
{'test_attribute': 'test_value'},
877-
{'revenue': 4200, 'value': 1.234, 'non-revenue': 'abc'},
878-
'US'
857+
{'revenue': 4200, 'value': 1.234, 'non-revenue': 'abc'}
879858
)
880859
self._validate_event_object(
881860
event_obj,

0 commit comments

Comments
 (0)