Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit f6651b6

Browse files
committed
feat: allow setting bandits initial configuration
1 parent 6840c33 commit f6651b6

File tree

5 files changed

+24
-5
lines changed

5 files changed

+24
-5
lines changed

eppo_client/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ def init(config: Config) -> EppoClient:
4040
flag_config_store.set_configurations(
4141
config.initial_configuration._flags_configuration.flags
4242
)
43+
if config.initial_configuration._bandits_configuration:
44+
bandit_config_store.set_configurations(
45+
config.initial_configuration._bandits_configuration.bandits
46+
)
4347

4448
config_requestor = ExperimentConfigurationRequestor(
4549
http_client=http_client,

eppo_client/configuration.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from eppo_client.models import UfcResponse
1+
from eppo_client.models import UfcResponse, BanditResponse
22

33

44
class Configuration:
@@ -7,5 +7,16 @@ class Configuration:
77
interpret feature flags.
88
"""
99

10-
def __init__(self, flags_configuration: str):
10+
_flags_configuration: UfcResponse
11+
_bandits_configuration: BanditResponse | None = None
12+
13+
def __init__(
14+
self,
15+
flags_configuration: str | bytes,
16+
bandits_configuration: str | bytes | None = None,
17+
) -> None:
1118
self._flags_configuration = UfcResponse.model_validate_json(flags_configuration)
19+
if bandits_configuration is not None:
20+
self._bandits_configuration = BanditResponse.model_validate_json(
21+
bandits_configuration
22+
)

eppo_client/configuration_store.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
class ConfigurationStore(Generic[T]):
9-
def __init__(self):
9+
def __init__(self) -> None:
1010
self.__is_initialized = False
1111
self.__cache: Dict[str, T] = {}
1212
self.__lock = ReadWriteLock()

eppo_client/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,7 @@ class BanditData(SdkBaseModel):
105105
bandit_model_version: str = Field(alias="modelVersion")
106106
bandit_model_data: BanditModelData = Field(alias="modelData")
107107
updated_at: datetime
108+
109+
110+
class BanditResponse(SdkBaseModel):
111+
bandits: dict[str, BanditData]

test/configuration_test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
def test_init_valid():
8-
Configuration(flags_configuration='{"flags": {}}')
8+
Configuration(flags_configuration=b'{"flags": {}}')
99

1010

1111
def test_init_invalid_json():
@@ -15,4 +15,4 @@ def test_init_invalid_json():
1515

1616
def test_init_invalid_format():
1717
with pytest.raises(pydantic.ValidationError):
18-
Configuration(flags_configuration='{"flags": []}')
18+
Configuration(flags_configuration=b'{"flags": []}')

0 commit comments

Comments
 (0)