-
Notifications
You must be signed in to change notification settings - Fork 421
/
Copy pathbase.py
63 lines (52 loc) · 1.74 KB
/
base.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Any
class StoreProvider(ABC):
@property
@abstractmethod
def get_raw_configuration(self) -> dict[str, Any]:
"""Get configuration from any store and return the parsed JSON dictionary"""
raise NotImplementedError() # pragma: no cover
@abstractmethod
def get_configuration(self) -> dict[str, Any]:
"""Get configuration from any store and return the parsed JSON dictionary
If envelope is set, it'll extract and return feature flags from configuration,
otherwise it'll return the entire configuration fetched from the store.
Raises
------
ConfigurationStoreError
Any error that can occur during schema fetch or JSON parse
Returns
-------
dict[str, Any]
parsed JSON dictionary
Example
-------
```python
{
"premium_features": {
"default": False,
"rules": {
"customer tier equals premium": {
"when_match": True,
"conditions": [
{
"action": "EQUALS",
"key": "tier",
"value": "premium",
}
],
}
},
},
"feature_two": {
"default": False
}
}
```
"""
raise NotImplementedError() # pragma: no cover
class BaseValidator(ABC):
@abstractmethod
def validate(self):
raise NotImplementedError() # pragma: no cover