devcycle-python-server-sdk 3.7.1__py3-none-any.whl → 3.9.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.
- devcycle_python_sdk/VERSION.txt +1 -1
- devcycle_python_sdk/managers/config_manager.py +2 -2
- devcycle_python_sdk/models/user.py +1 -1
- devcycle_python_sdk/options.py +7 -1
- {devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/METADATA +7 -2
- {devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/RECORD +13 -13
- {devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/WHEEL +1 -1
- example/local_bucketing_client_example.py +1 -1
- test/managers/test_config_manager.py +3 -1
- test/models/test_user.py +2 -2
- test/test_local_client.py +1 -0
- {devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/LICENSE +0 -0
- {devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/top_level.txt +0 -0
devcycle_python_sdk/VERSION.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.9.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.
|
|
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,
|
|
@@ -136,7 +136,7 @@ class EnvironmentConfigManager(threading.Thread):
|
|
|
136
136
|
or dvc_data.get("type") is None
|
|
137
137
|
):
|
|
138
138
|
logger.info("DevCycle: Received refetchConfig message - updating config")
|
|
139
|
-
self._get_config(dvc_data["lastModified"])
|
|
139
|
+
self._get_config(dvc_data["lastModified"] / 1000.0)
|
|
140
140
|
|
|
141
141
|
def sse_error(self, error: ld_eventsource.actions.Fault):
|
|
142
142
|
logger.warning(f"DevCycle: Received SSE error: {error}")
|
devcycle_python_sdk/options.py
CHANGED
|
@@ -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.
|
|
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(
|
{devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: devcycle-python-server-sdk
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.9.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
|
|
{devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/RECORD
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
devcycle_python_sdk/VERSION.txt,sha256=
|
|
1
|
+
devcycle_python_sdk/VERSION.txt,sha256=XA-ecQ1vWbtZmARE89xYiG_FZKCi2KHVNNMpa-LGfag,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=
|
|
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=
|
|
17
|
+
devcycle_python_sdk/managers/config_manager.py,sha256=JYRLAJTLDWEjeZk7Af7rxpw1t6SR-ei81S8MEc36eOU,5636
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
65
|
-
devcycle_python_server_sdk-3.
|
|
66
|
-
devcycle_python_server_sdk-3.
|
|
67
|
-
devcycle_python_server_sdk-3.
|
|
68
|
-
devcycle_python_server_sdk-3.
|
|
64
|
+
devcycle_python_server_sdk-3.9.0.dist-info/LICENSE,sha256=tHQMqu-Jic2UpMGqb-vNFbGygysl8IG4l1clnnh0OFo,1071
|
|
65
|
+
devcycle_python_server_sdk-3.9.0.dist-info/METADATA,sha256=LvCYRerx1EGKdJ9ooBOyFvvqxzcThNtKuIUXiFtPL44,684
|
|
66
|
+
devcycle_python_server_sdk-3.9.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
67
|
+
devcycle_python_server_sdk-3.9.0.dist-info/top_level.txt,sha256=34f8zDzihAHoH7siAFlmscyO_QLNWWq9HApFlwtYL4k,33
|
|
68
|
+
devcycle_python_server_sdk-3.9.0.dist-info/RECORD,,
|
|
@@ -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(
|
|
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(
|
|
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":
|
|
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":
|
|
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="")
|
{devcycle_python_server_sdk-3.7.1.dist-info → devcycle_python_server_sdk-3.9.0.dist-info}/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|