-
Notifications
You must be signed in to change notification settings - Fork 526
Expand file tree
/
Copy pathconstants.py
More file actions
124 lines (112 loc) · 3.21 KB
/
constants.py
File metadata and controls
124 lines (112 loc) · 3.21 KB
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from typing import get_args
from app_analytics.types import InputLabel, KnownSDK, Label, PeriodType
ANALYTICS_READ_BUCKET_SIZE = 15
# get_usage_data() related period constants
CURRENT_BILLING_PERIOD: PeriodType
PREVIOUS_BILLING_PERIOD: PeriodType
NINETY_DAY_PERIOD: PeriodType
(
CURRENT_BILLING_PERIOD,
PREVIOUS_BILLING_PERIOD,
NINETY_DAY_PERIOD,
) = get_args(PeriodType)
# We make sure to only track known SDK versions
# because, when we prepare the data for Influx, we need to map to numeric IDs.
# This allows us to efficiently store usage and evaluation data.
SDK_USER_AGENT_KNOWN_VERSIONS: dict[KnownSDK, list[str]] = {
"flagsmith-dotnet-sdk": [
"unknown",
"9.0.0",
],
"flagsmith-elixir-sdk": [
"unknown",
"2.3.0",
"2.3.1",
],
"flagsmith-flutter-sdk": [
"unknown",
"6.1.0",
],
"flagsmith-go-sdk": [
"unknown",
"5.0.0",
],
"flagsmith-java-sdk": [
"unknown",
"8.0.0",
"8.0.1",
],
"flagsmith-js-sdk": [
"unknown",
"9.3.1",
"10.0.0",
],
"flagsmith-kotlin-android-sdk": ["unknown"],
"flagsmith-nodejs-sdk": [
"unknown",
"6.2.0",
"7.0.2",
"7.0.3",
"8.0.0",
"8.0.1",
"8.0.2",
],
"flagsmith-php-sdk": [
"unknown",
"5.0.0",
"5.1.0",
],
"flagsmith-python-sdk": [
"unknown",
"5.0.0",
"5.0.1",
"5.0.2",
"5.0.3",
"5.1.0",
"5.1.1",
],
"flagsmith-ruby-sdk": [
"unknown",
"5.0.0",
],
"flagsmith-rust-sdk": [
"unknown",
"2.1.0",
],
"flagsmith-swift-ios-sdk": ["unknown"],
}
SDK_USER_AGENT_INFLUX_IDS: list[tuple[KnownSDK, int]] = [
("flagsmith-dotnet-sdk", 0),
("flagsmith-elixir-sdk", 10000),
("flagsmith-flutter-sdk", 20000),
("flagsmith-go-sdk", 30000),
("flagsmith-java-sdk", 40000),
("flagsmith-js-sdk", 50000),
("flagsmith-kotlin-android-sdk", 60000),
("flagsmith-nodejs-sdk", 70000),
("flagsmith-php-sdk", 80000),
("flagsmith-python-sdk", 90000),
("flagsmith-ruby-sdk", 100000),
("flagsmith-rust-sdk", 110000),
("flagsmith-swift-ios-sdk", 120000),
]
SDK_USER_AGENTS_BY_INFLUX_ID: dict[int, str] = {}
SDK_INFLUX_IDS_BY_USER_AGENT: dict[str, int] = {}
for sdk_name, sdk_id in SDK_USER_AGENT_INFLUX_IDS:
for version_index, version in enumerate(SDK_USER_AGENT_KNOWN_VERSIONS[sdk_name]):
influx_id = sdk_id + version_index
user_agent = f"{sdk_name}/{version}"
SDK_USER_AGENTS_BY_INFLUX_ID[influx_id] = user_agent
SDK_INFLUX_IDS_BY_USER_AGENT[user_agent] = influx_id
# Optional headers sent from client SDK mapped to their respective labels.
TRACK_HEADERS: dict[str, InputLabel] = {
"Flagsmith-Application-Name": "client_application_name",
"Flagsmith-Application-Version": "client_application_version",
"Flagsmith-SDK-User-Agent": "sdk_user_agent",
"User-Agent": "user_agent",
}
LABELS: tuple[Label, ...] = get_args(Label)
NO_ANALYTICS_DATABASE_CONFIGURED_WARNING = (
"No analytics database configured. "
"Please set `USE_POSTGRES_FOR_ANALYTICS` or `INFLUXDB_TOKEN` in settings."
)