devcycle-python-server-sdk 3.7.1__py3-none-any.whl → 3.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- 3.7.1
1
+ 3.8.0
@@ -80,7 +80,7 @@ class EnvironmentConfigManager(threading.Thread):
80
80
 
81
81
  json_config = json.dumps(self._config)
82
82
  self._local_bucketing.store_config(json_config)
83
- if self._options.enable_beta_realtime_updates:
83
+ if not self._options.disable_realtime_updates:
84
84
  if self._sse_manager is None:
85
85
  self._sse_manager = SSEManager(
86
86
  self.sse_state,
@@ -125,7 +125,7 @@ class DevCycleUser:
125
125
  if key == "user_id":
126
126
  continue
127
127
 
128
- if value:
128
+ if value is not None:
129
129
  if key == "email" and isinstance(value, str):
130
130
  user.email = value
131
131
  elif key == "name" and isinstance(value, str):
@@ -46,6 +46,7 @@ class DevCycleLocalOptions:
46
46
  disable_automatic_event_logging: bool = False,
47
47
  disable_custom_event_logging: bool = False,
48
48
  enable_beta_realtime_updates: bool = False,
49
+ disable_realtime_updates: bool = False,
49
50
  ):
50
51
  self.events_api_uri = events_api_uri
51
52
  self.config_cdn_uri = config_cdn_uri
@@ -61,7 +62,12 @@ class DevCycleLocalOptions:
61
62
  self.on_client_initialized = on_client_initialized
62
63
  self.event_request_timeout_ms = event_request_timeout_ms
63
64
  self.event_retry_delay_ms = event_retry_delay_ms
64
- self.enable_beta_realtime_updates = enable_beta_realtime_updates
65
+ self.disable_realtime_updates = disable_realtime_updates
66
+
67
+ if enable_beta_realtime_updates:
68
+ logger.warning(
69
+ "DevCycle: `enable_beta_realtime_updates` is deprecated and will be removed in a future release.",
70
+ )
65
71
 
66
72
  if self.flush_event_queue_size >= self.max_event_queue_size:
67
73
  logger.warning(
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: devcycle-python-server-sdk
3
- Version: 3.7.1
3
+ Version: 3.8.0
4
4
  Summary: DevCycle Python SDK
5
5
  Home-page: https://github.com/devcycleHQ/python-server-sdk
6
6
  Author-email:
@@ -15,6 +15,11 @@ Requires-Dist: openfeature-sdk>=0.7.0
15
15
  Requires-Dist: launchdarkly-eventsource>=1.2.0
16
16
  Requires-Dist: responses~=0.23.1
17
17
  Requires-Dist: dataclasses~=0.6
18
+ Dynamic: description
19
+ Dynamic: home-page
20
+ Dynamic: keywords
21
+ Dynamic: requires-dist
22
+ Dynamic: summary
18
23
 
19
24
  The DevCycle Python SDK used for feature management.
20
25
 
@@ -1,11 +1,11 @@
1
- devcycle_python_sdk/VERSION.txt,sha256=Tpnn6sIcK3GpcTnKzKaV2YyT-9fdJlBfBPUnGAmsS5Q,6
1
+ devcycle_python_sdk/VERSION.txt,sha256=iCBq_S2bVspxRmyF0e0UIbHbDnj6AAcml5GPuKmsVO8,6
2
2
  devcycle_python_sdk/__init__.py,sha256=30TcYb9PbvVi97gwk16omCGG1UoUI9lmmU7xpvxNMvc,336
3
3
  devcycle_python_sdk/bucketing-lib.release.wasm,sha256=AJyYTuQs-PRjAiH9yzSgn-iESa9W7Vu0AQHLJHC5QS0,214842
4
4
  devcycle_python_sdk/cloud_client.py,sha256=UMfXvXwO4v3pZW9ZA52ivxPH1Lp4Goy5gpV_s0qCpxQ,7352
5
5
  devcycle_python_sdk/devcycle_client.py,sha256=W5MeOslkXjTqZtoSy_Bbbug8gVoicjxshpKjDteEr6E,917
6
6
  devcycle_python_sdk/exceptions.py,sha256=Et7fS8pEFbHkFY86T2pJoEUstwjh4_rzhJxVH8fzAns,1053
7
7
  devcycle_python_sdk/local_client.py,sha256=WeXt-gWhFsaPjAp2UEmygQhzx_ygx2Jaq0z0yRHaah0,9448
8
- devcycle_python_sdk/options.py,sha256=TRofo42DvtWlVlGiUfOygIBzidei5oaCZRWpZgDgr0Q,4700
8
+ devcycle_python_sdk/options.py,sha256=WOpeI9U_9Gsf3OFWvoRIBRgJVZEqFxuEYTII71r5L24,4939
9
9
  devcycle_python_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  devcycle_python_sdk/api/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
11
11
  devcycle_python_sdk/api/backoff.py,sha256=F6WYCloaZD9CjNu6mKBMq7K20S8-i2WVU6X05ZRoawE,303
@@ -14,7 +14,7 @@ devcycle_python_sdk/api/config_client.py,sha256=73aQAq130rTHpQrVDX6n_DwFKz0WuKxR
14
14
  devcycle_python_sdk/api/event_client.py,sha256=WxkuV6geEC9MgG4FN36HeEQQa22ilq2mkOVMZkpiEk4,3356
15
15
  devcycle_python_sdk/api/local_bucketing.py,sha256=_MAMCHviIS1n4GiU-CnnLBeEVX8BUFRqwNbA1IQi84U,16470
16
16
  devcycle_python_sdk/managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- devcycle_python_sdk/managers/config_manager.py,sha256=U8ok13HjEi5to-GxH6hDuHEq09O5e7h51Aeui05XbdQ,5627
17
+ devcycle_python_sdk/managers/config_manager.py,sha256=64ds-8Q9KRKy3lpAKXygPG9tA8ea5wGsFaL6mQ2gsSY,5627
18
18
  devcycle_python_sdk/managers/event_queue_manager.py,sha256=uPy1vO6OAisZjUNAhWELE_g17alTiOcPv42z-WwkGck,8110
19
19
  devcycle_python_sdk/managers/sse_manager.py,sha256=aJKHPmvv8SR4DU9IOi-KrUSCxQoHdMwoemb2lSVfmVQ,2369
20
20
  devcycle_python_sdk/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -23,7 +23,7 @@ devcycle_python_sdk/models/error_response.py,sha256=r_dRUDAbral9UGaMYcnBsZOr9Hmk
23
23
  devcycle_python_sdk/models/event.py,sha256=-6bhKp72mAgaoSxvhS__G4vvfQ9Psj83fc0Igelzw3o,3713
24
24
  devcycle_python_sdk/models/feature.py,sha256=m3wxxIjC5jxhKpPLI4RcsBaNLuy-zsMqoAgc8ySPe0I,852
25
25
  devcycle_python_sdk/models/platform_data.py,sha256=kIFevH5trsxI32qp7BW6glUCpipgpaVBKGqJWzQd5Xo,783
26
- devcycle_python_sdk/models/user.py,sha256=57d_n8Yy8g-zsGzVF0hmSf4McPtFPJJ0LLY_ql75FWk,6266
26
+ devcycle_python_sdk/models/user.py,sha256=P2yRqorHosN6ho6lB8eTtz2zY0r4NnU3t8NuLU4nllw,6278
27
27
  devcycle_python_sdk/models/variable.py,sha256=qp00SyCNyfYiMlTwnDSDJ4ZetRF35JHTbYZQOBxFIqY,1711
28
28
  devcycle_python_sdk/open_feature_provider/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  devcycle_python_sdk/open_feature_provider/provider.py,sha256=VjUMhCYiMLixXUSSIjQ7kVCQrls1QD_Nltooe5EjGks,4539
@@ -36,11 +36,11 @@ devcycle_python_sdk/util/strings.py,sha256=gH0Xm3gIXNqn6hczKPk10Jn5_9knuD7OB5MrB
36
36
  devcycle_python_sdk/util/version.py,sha256=Cz7Us_EuXP-T8GI47g2WHYdBJj_zKo-5y545IDHJAjI,253
37
37
  example/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  example/cloud_client_example.py,sha256=YD8ZsTv3dPYfbFUKraRpRT0VsJGrPwjm8ZCuA5H54yI,2463
39
- example/local_bucketing_client_example.py,sha256=4BKNp7KE_Co9xxRTbJOfG2jQFjtFagPYsvytu93Q5_A,2829
39
+ example/local_bucketing_client_example.py,sha256=TaIfy3VnW9fXii9NPYs5UOuP4fLKruXMjnZApveqzl4,2796
40
40
  example/openfeature_example.py,sha256=kO6F-Xk20l6CPiMfIxSRreshEGmHMFHRg3zbeLXa3AI,2410
41
41
  test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  test/test_cloud_client.py,sha256=zjk302m7qKMCQryolkc1WKLFmbGWUxA0VtHlZk0rY-0,11442
43
- test/test_local_client.py,sha256=kDB5-cPJGyQtVdHV4MUM-CBBeOpN-oScr6I0OuyGPmE,13022
43
+ test/test_local_client.py,sha256=GpuN9eTYKpacol7BtsB_uiviyPUxiKtxBdRcuI1m9qA,13065
44
44
  test/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  test/api/test_bucketing_client.py,sha256=M2mjACowLvbsIjXdP-w8-fwY02xqv1X1r_h9v-pXa7A,7739
46
46
  test/api/test_config_client.py,sha256=3BwMm4y-4NQcdW2DDGppoJLIF-ffgjlUJti2Qjw1D1M,5129
@@ -49,11 +49,11 @@ test/api/test_local_bucketing.py,sha256=0mReZ4bsFUoJWPAIcQrWXDZ9UoC5mF9MuI-9BVB6
49
49
  test/fixture/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  test/fixture/data.py,sha256=6ReLxWPMhCDbJ5Ex24_iR0PJNjKzPFV1I9j_v0FVbBU,1462
51
51
  test/managers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- test/managers/test_config_manager.py,sha256=X0DxzWdjkvkUmarJSgzTDvO2Ma0TU6RNwL0WUwX2uA8,5963
52
+ test/managers/test_config_manager.py,sha256=2TUnt8501KM7UlJNH7srIhvC-izehD7nOfqZN5XgPJI,6016
53
53
  test/managers/test_event_queue_manager.py,sha256=z850atk8zAlD7sYaA1OJwgCFcfC0ps4NEk4XUnNCq1U,11629
54
54
  test/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  test/models/test_bucketed_config.py,sha256=8wCEyxaHxY21nl7ZbiFzp-IzZQBZIPIVPPzeREjumQk,858
56
- test/models/test_user.py,sha256=ZNTBSKLDrqrsqZuaw5AHtc_FW4empSTaeNPZHZaFlI4,6736
56
+ test/models/test_user.py,sha256=W1HaNtpuzfM2Tfm3XVMD7yDcekjtLH-b7_NZG5ovkUY,6738
57
57
  test/openfeature_test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  test/openfeature_test/test_provider.py,sha256=UPxAD5e7NvpIhmqNFCrTY_yrKrMyYxBc2xuMAgdSGvw,7653
59
59
  test/openfeature_test/test_provider_local_sdk.py,sha256=ad0QizKSS-lbqlIjiQvwtKHP7PCFfYam3OKHtvsFBkU,4426
@@ -61,8 +61,8 @@ test/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  test/util/test_strings.py,sha256=T5H5U0af7_ld1yJC8IdDmay_Mx-iJQ5Fi5fbvKcAc7A,862
62
62
  test/util/test_utils.py,sha256=tVBJm_qnqg-4PssLpXIxqlk0JehuiAIPs4zpi2oNVnY,6671
63
63
  test/util/test_version.py,sha256=3Xg0_84m0bdHXz6pxd2Z85Oz9DoUC1T0Ol_WqEH_jac,335
64
- devcycle_python_server_sdk-3.7.1.dist-info/LICENSE,sha256=tHQMqu-Jic2UpMGqb-vNFbGygysl8IG4l1clnnh0OFo,1071
65
- devcycle_python_server_sdk-3.7.1.dist-info/METADATA,sha256=7iRcy6f-15UNPk8GalpC-RJM-Ls_qJOKtBxjZ0tSD9o,586
66
- devcycle_python_server_sdk-3.7.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
67
- devcycle_python_server_sdk-3.7.1.dist-info/top_level.txt,sha256=34f8zDzihAHoH7siAFlmscyO_QLNWWq9HApFlwtYL4k,33
68
- devcycle_python_server_sdk-3.7.1.dist-info/RECORD,,
64
+ devcycle_python_server_sdk-3.8.0.dist-info/LICENSE,sha256=tHQMqu-Jic2UpMGqb-vNFbGygysl8IG4l1clnnh0OFo,1071
65
+ devcycle_python_server_sdk-3.8.0.dist-info/METADATA,sha256=3mJ9Qy7LhLeWbba7JnkxHEaCBh6LNi8K2tQpjzlKSik,684
66
+ devcycle_python_server_sdk-3.8.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
67
+ devcycle_python_server_sdk-3.8.0.dist-info/top_level.txt,sha256=34f8zDzihAHoH7siAFlmscyO_QLNWWq9HApFlwtYL4k,33
68
+ devcycle_python_server_sdk-3.8.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -21,7 +21,7 @@ def main():
21
21
 
22
22
  # create an instance of the DevCycle Client object
23
23
  server_sdk_key = os.environ["DEVCYCLE_SERVER_SDK_KEY"]
24
- options = DevCycleLocalOptions(enable_beta_realtime_updates=True)
24
+ options = DevCycleLocalOptions()
25
25
  client = DevCycleLocalClient(server_sdk_key, options)
26
26
 
27
27
  # Wait for DevCycle to initialize and load the configuration
@@ -19,7 +19,9 @@ class EnvironmentConfigManagerTest(unittest.TestCase):
19
19
  def setUp(self) -> None:
20
20
  self.sdk_key = "dvc_server_" + str(uuid.uuid4())
21
21
  self.test_local_bucketing = MagicMock()
22
- self.test_options = DevCycleLocalOptions(config_polling_interval_ms=500)
22
+ self.test_options = DevCycleLocalOptions(
23
+ config_polling_interval_ms=500, disable_realtime_updates=True
24
+ )
23
25
 
24
26
  now = datetime.now()
25
27
  stamp = mktime(now.timetuple())
test/models/test_user.py CHANGED
@@ -129,7 +129,7 @@ class DevCycleUserTest(unittest.TestCase):
129
129
  "strValue": "hello",
130
130
  "intValue": 123,
131
131
  "floatValue": 3.1456,
132
- "boolValue": True,
132
+ "boolValue": False,
133
133
  },
134
134
  )
135
135
  user = DevCycleUser.create_user_from_context(context)
@@ -143,7 +143,7 @@ class DevCycleUserTest(unittest.TestCase):
143
143
  "strValue": "hello",
144
144
  "intValue": 123,
145
145
  "floatValue": 3.1456,
146
- "boolValue": True,
146
+ "boolValue": False,
147
147
  },
148
148
  )
149
149
  self.assertEqual(user.privateCustomData, None)
test/test_local_client.py CHANGED
@@ -40,6 +40,7 @@ class DevCycleLocalClientTest(unittest.TestCase):
40
40
  config_cdn_uri="http://localhost/",
41
41
  disable_custom_event_logging=True,
42
42
  disable_automatic_event_logging=True,
43
+ disable_realtime_updates=True,
43
44
  )
44
45
  self.test_user = DevCycleUser(user_id="test_user_id")
45
46
  self.test_user_empty_id = DevCycleUser(user_id="")