devcycle-python-server-sdk 3.4.1__tar.gz → 3.5.1__tar.gz

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.
Files changed (69) hide show
  1. {devcycle-python-server-sdk-3.4.1/devcycle_python_server_sdk.egg-info → devcycle-python-server-sdk-3.5.1}/PKG-INFO +1 -1
  2. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/cloud_client.py +2 -2
  3. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/devcycle_client.py +1 -1
  4. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/local_client.py +2 -2
  5. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/bucketed_config.py +10 -6
  6. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/user.py +3 -1
  7. {devcycle-python-server-sdk-3.4.1/devcycle_python_sdk/openfeature → devcycle-python-server-sdk-3.5.1/devcycle_python_sdk/open_feature_provider}/provider.py +6 -4
  8. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1/devcycle_python_server_sdk.egg-info}/PKG-INFO +1 -1
  9. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_server_sdk.egg-info/SOURCES.txt +5 -5
  10. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_server_sdk.egg-info/requires.txt +2 -2
  11. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/example/local_bucketing_client_example.py +1 -1
  12. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/api/test_local_bucketing.py +2 -12
  13. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/models/test_user.py +1 -1
  14. {devcycle-python-server-sdk-3.4.1/test/openfeature → devcycle-python-server-sdk-3.5.1/test/openfeature_test}/test_provider.py +2 -2
  15. {devcycle-python-server-sdk-3.4.1/test/openfeature → devcycle-python-server-sdk-3.5.1/test/openfeature_test}/test_provider_local_sdk.py +1 -1
  16. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/LICENSE +0 -0
  17. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/README.md +0 -0
  18. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/__init__.py +0 -0
  19. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/__init__.py +0 -0
  20. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/backoff.py +0 -0
  21. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/bucketing_client.py +0 -0
  22. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/config_client.py +0 -0
  23. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/event_client.py +0 -0
  24. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/api/local_bucketing.py +0 -0
  25. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/exceptions.py +0 -0
  26. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/managers/__init__.py +0 -0
  27. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/managers/config_manager.py +0 -0
  28. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/managers/event_queue_manager.py +0 -0
  29. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/__init__.py +0 -0
  30. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/error_response.py +0 -0
  31. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/event.py +0 -0
  32. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/feature.py +0 -0
  33. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/platform_data.py +0 -0
  34. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/models/variable.py +0 -0
  35. {devcycle-python-server-sdk-3.4.1/devcycle_python_sdk/openfeature → devcycle-python-server-sdk-3.5.1/devcycle_python_sdk/open_feature_provider}/__init__.py +0 -0
  36. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/options.py +0 -0
  37. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/protobuf/__init__.py +0 -0
  38. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/protobuf/utils.py +0 -0
  39. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/protobuf/variableForUserParams_pb2.py +0 -0
  40. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/util/__init__.py +0 -0
  41. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/util/strings.py +0 -0
  42. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_sdk/util/version.py +0 -0
  43. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_server_sdk.egg-info/dependency_links.txt +0 -0
  44. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/devcycle_python_server_sdk.egg-info/top_level.txt +0 -0
  45. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/example/__init__.py +0 -0
  46. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/example/cloud_client_example.py +0 -0
  47. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/example/openfeature_example.py +0 -0
  48. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/pyproject.toml +0 -0
  49. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/setup.cfg +0 -0
  50. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/setup.py +0 -0
  51. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/__init__.py +0 -0
  52. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/api/__init__.py +0 -0
  53. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/api/test_bucketing_client.py +0 -0
  54. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/api/test_config_client.py +0 -0
  55. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/api/test_event_client.py +0 -0
  56. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/fixture/__init__.py +0 -0
  57. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/fixture/data.py +0 -0
  58. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/managers/__init__.py +0 -0
  59. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/managers/test_config_manager.py +0 -0
  60. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/managers/test_event_queue_manager.py +0 -0
  61. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/models/__init__.py +0 -0
  62. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/models/test_bucketed_config.py +0 -0
  63. {devcycle-python-server-sdk-3.4.1/test/openfeature → devcycle-python-server-sdk-3.5.1/test/openfeature_test}/__init__.py +0 -0
  64. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/test_cloud_client.py +0 -0
  65. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/test_local_client.py +0 -0
  66. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/util/__init__.py +0 -0
  67. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/util/test_strings.py +0 -0
  68. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/util/test_utils.py +0 -0
  69. {devcycle-python-server-sdk-3.4.1 → devcycle-python-server-sdk-3.5.1}/test/util/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: devcycle-python-server-sdk
3
- Version: 3.4.1
3
+ Version: 3.5.1
4
4
  Summary: DevCycle Python SDK
5
5
  Home-page: https://github.com/devcycleHQ/python-server-sdk
6
6
  Author: UNKNOWN
@@ -14,9 +14,9 @@ from devcycle_python_sdk.models.event import DevCycleEvent
14
14
  from devcycle_python_sdk.models.variable import Variable
15
15
  from devcycle_python_sdk.models.feature import Feature
16
16
  from devcycle_python_sdk.util.version import sdk_version
17
- from devcycle_python_sdk.openfeature.provider import DevCycleProvider
17
+ from devcycle_python_sdk.open_feature_provider.provider import DevCycleProvider
18
18
 
19
- from openfeature.provider.provider import AbstractProvider
19
+ from openfeature.provider import AbstractProvider
20
20
 
21
21
  logger = logging.getLogger(__name__)
22
22
 
@@ -4,7 +4,7 @@ from abc import abstractmethod
4
4
  from devcycle_python_sdk.models.user import DevCycleUser
5
5
  from devcycle_python_sdk.models.variable import Variable
6
6
 
7
- from openfeature.provider.provider import AbstractProvider
7
+ from openfeature.provider import AbstractProvider
8
8
 
9
9
 
10
10
  class AbstractDevCycleClient:
@@ -14,8 +14,8 @@ from devcycle_python_sdk.models.feature import Feature
14
14
  from devcycle_python_sdk.models.platform_data import default_platform_data
15
15
  from devcycle_python_sdk.models.user import DevCycleUser
16
16
  from devcycle_python_sdk.models.variable import Variable
17
- from devcycle_python_sdk.openfeature.provider import DevCycleProvider
18
- from openfeature.provider.provider import AbstractProvider
17
+ from devcycle_python_sdk.open_feature_provider.provider import DevCycleProvider
18
+ from openfeature.provider import AbstractProvider
19
19
 
20
20
  logger = logging.getLogger(__name__)
21
21
 
@@ -55,14 +55,16 @@ class OptInSettings:
55
55
  class ProjectSettings:
56
56
  edge_db: Optional[EdgeDBSettings]
57
57
  opt_in: Optional[OptInSettings]
58
+ disable_passthrough_rollouts: Optional[bool]
58
59
 
59
60
  @classmethod
60
61
  def from_json(cls, data: dict) -> "ProjectSettings":
61
62
  return cls(
62
- edge_db=EdgeDBSettings.from_json(data["edgeDB"])
63
- if "edgeDB" in data
64
- else None,
63
+ edge_db=(
64
+ EdgeDBSettings.from_json(data["edgeDB"]) if "edgeDB" in data else None
65
+ ),
65
66
  opt_in=OptInSettings.from_json(data["optIn"]) if "optIn" in data else None,
67
+ disable_passthrough_rollouts=data.get("disablePassthroughRollouts", False),
66
68
  )
67
69
 
68
70
 
@@ -79,9 +81,11 @@ class Project:
79
81
  id=data["_id"],
80
82
  key=data["key"],
81
83
  a0_organization=data["a0_organization"],
82
- settings=ProjectSettings.from_json(data["settings"])
83
- if "settings" in data
84
- else None,
84
+ settings=(
85
+ ProjectSettings.from_json(data["settings"])
86
+ if "settings" in data
87
+ else None
88
+ ),
85
89
  )
86
90
 
87
91
 
@@ -94,7 +94,9 @@ class DevCycleUser:
94
94
  )
95
95
 
96
96
  @staticmethod
97
- def create_user_from_context(context: EvaluationContext) -> "DevCycleUser":
97
+ def create_user_from_context(
98
+ context: Optional[EvaluationContext],
99
+ ) -> "DevCycleUser":
98
100
  """
99
101
  Builds a DevCycleUser instance from the evaluation context. Will raise a TargetingKeyMissingError if
100
102
  the context does not contain a valid targeting key or user_id attribute
@@ -5,7 +5,7 @@ from typing import Any, Optional, Union, List
5
5
  from devcycle_python_sdk import AbstractDevCycleClient
6
6
  from devcycle_python_sdk.models.user import DevCycleUser
7
7
 
8
- from openfeature.provider.provider import AbstractProvider
8
+ from openfeature.provider import AbstractProvider
9
9
  from openfeature.evaluation_context import EvaluationContext
10
10
  from openfeature.flag_evaluation import FlagResolutionDetails, Reason
11
11
  from openfeature.exception import ErrorCode, InvalidContextError, TypeMismatchError
@@ -58,9 +58,11 @@ class DevCycleProvider(AbstractProvider):
58
58
  else:
59
59
  return FlagResolutionDetails(
60
60
  value=variable.value,
61
- reason=Reason.DEFAULT
62
- if variable.isDefaulted
63
- else Reason.TARGETING_MATCH,
61
+ reason=(
62
+ Reason.DEFAULT
63
+ if variable.isDefaulted
64
+ else Reason.TARGETING_MATCH
65
+ ),
64
66
  )
65
67
  except ValueError as e:
66
68
  # occurs if the key or default value is None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: devcycle-python-server-sdk
3
- Version: 3.4.1
3
+ Version: 3.5.1
4
4
  Summary: DevCycle Python SDK
5
5
  Home-page: https://github.com/devcycleHQ/python-server-sdk
6
6
  Author: UNKNOWN
@@ -26,8 +26,8 @@ devcycle_python_sdk/models/feature.py
26
26
  devcycle_python_sdk/models/platform_data.py
27
27
  devcycle_python_sdk/models/user.py
28
28
  devcycle_python_sdk/models/variable.py
29
- devcycle_python_sdk/openfeature/__init__.py
30
- devcycle_python_sdk/openfeature/provider.py
29
+ devcycle_python_sdk/open_feature_provider/__init__.py
30
+ devcycle_python_sdk/open_feature_provider/provider.py
31
31
  devcycle_python_sdk/protobuf/__init__.py
32
32
  devcycle_python_sdk/protobuf/utils.py
33
33
  devcycle_python_sdk/protobuf/variableForUserParams_pb2.py
@@ -59,9 +59,9 @@ test/managers/test_event_queue_manager.py
59
59
  test/models/__init__.py
60
60
  test/models/test_bucketed_config.py
61
61
  test/models/test_user.py
62
- test/openfeature/__init__.py
63
- test/openfeature/test_provider.py
64
- test/openfeature/test_provider_local_sdk.py
62
+ test/openfeature_test/__init__.py
63
+ test/openfeature_test/test_provider.py
64
+ test/openfeature_test/test_provider_local_sdk.py
65
65
  test/util/__init__.py
66
66
  test/util/test_strings.py
67
67
  test/util/test_utils.py
@@ -1,6 +1,6 @@
1
1
  setuptools>=21.0.0
2
2
  urllib3>=1.15.1
3
- requests~=2.31.0
3
+ requests~=2.31
4
4
  wasmtime==9.0.0
5
5
  protobuf>=4.23.3
6
- openfeature-sdk>=0.3.1
6
+ openfeature-sdk>=0.7.0
@@ -7,7 +7,7 @@ from devcycle_python_sdk import DevCycleLocalClient, DevCycleLocalOptions
7
7
  from devcycle_python_sdk.models.user import DevCycleUser
8
8
  from devcycle_python_sdk.models.event import DevCycleEvent, EventType
9
9
 
10
- VARIABLE_KEY = "test-boolean-variable"
10
+ VARIABLE_KEY = "python-example-tests"
11
11
 
12
12
  logger = logging.getLogger(__name__)
13
13
 
@@ -5,10 +5,7 @@ import unittest
5
5
  from devcycle_python_sdk.api.local_bucketing import LocalBucketing, WASMAbortError
6
6
  from devcycle_python_sdk.models.bucketed_config import (
7
7
  Environment,
8
- EdgeDBSettings,
9
8
  FeatureVariation,
10
- OptInColors,
11
- OptInSettings,
12
9
  Project,
13
10
  ProjectSettings,
14
11
  )
@@ -211,22 +208,15 @@ class LocalBucketingTest(unittest.TestCase):
211
208
  self.assertIsNotNone(result)
212
209
  self.assertEqual(result.user, user)
213
210
  self.assertEqual(
214
- result.project,
215
211
  Project(
216
212
  id="61f97628ff4afcb6d057dbf0",
217
213
  key="emma-project",
218
214
  a0_organization="org_tPyJN5dvNNirKar7",
219
215
  settings=ProjectSettings(
220
- edge_db=EdgeDBSettings(enabled=False),
221
- opt_in=OptInSettings(
222
- enabled=True,
223
- title="EarlyAccess",
224
- description="Getearlyaccesstobetafeaturesbelow!",
225
- image_url="",
226
- colors=OptInColors(primary="#531cd9", secondary="#16dec0"),
227
- ),
216
+ edge_db=None, opt_in=None, disable_passthrough_rollouts=False
228
217
  ),
229
218
  ),
219
+ result.project,
230
220
  )
231
221
  self.assertEqual(
232
222
  result.environment,
@@ -3,7 +3,7 @@ import unittest
3
3
 
4
4
  from devcycle_python_sdk.models.user import DevCycleUser
5
5
 
6
- from openfeature.provider.provider import EvaluationContext
6
+ from openfeature.provider import EvaluationContext
7
7
  from openfeature.exception import TargetingKeyMissingError, InvalidContextError
8
8
 
9
9
 
@@ -2,7 +2,7 @@ import logging
2
2
  import unittest
3
3
  from unittest.mock import MagicMock
4
4
 
5
- from openfeature.provider.provider import EvaluationContext
5
+ from openfeature.provider import EvaluationContext
6
6
  from openfeature.flag_evaluation import Reason
7
7
  from openfeature.exception import (
8
8
  ErrorCode,
@@ -13,7 +13,7 @@ from openfeature.exception import (
13
13
 
14
14
  from devcycle_python_sdk.models.variable import Variable, TypeEnum
15
15
 
16
- from devcycle_python_sdk.openfeature.provider import (
16
+ from devcycle_python_sdk.open_feature_provider.provider import (
17
17
  DevCycleProvider,
18
18
  )
19
19
 
@@ -7,7 +7,7 @@ import responses
7
7
  from devcycle_python_sdk import DevCycleLocalClient, DevCycleLocalOptions
8
8
  from test.fixture.data import small_config_json
9
9
 
10
- from openfeature.provider.provider import EvaluationContext
10
+ from openfeature.provider import EvaluationContext
11
11
  from openfeature.flag_evaluation import Reason
12
12
 
13
13
  logger = logging.getLogger(__name__)