dagster-shared 1.12.10__py3-none-any.whl → 1.12.12__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.
- dagster_shared/telemetry/__init__.py +68 -1
- dagster_shared/utils/cached_method.py +2 -2
- dagster_shared/version.py +1 -1
- {dagster_shared-1.12.10.dist-info → dagster_shared-1.12.12.dist-info}/METADATA +1 -1
- {dagster_shared-1.12.10.dist-info → dagster_shared-1.12.12.dist-info}/RECORD +8 -8
- {dagster_shared-1.12.10.dist-info → dagster_shared-1.12.12.dist-info}/WHEEL +1 -1
- {dagster_shared-1.12.10.dist-info → dagster_shared-1.12.12.dist-info}/licenses/LICENSE +0 -0
- {dagster_shared-1.12.10.dist-info → dagster_shared-1.12.12.dist-info}/top_level.txt +0 -0
|
@@ -18,6 +18,7 @@ MAX_BYTES = 10485760 # 10 MB = 10 * 1024 * 1024 bytes
|
|
|
18
18
|
DAGSTER_HOME_FALLBACK = "~/.dagster"
|
|
19
19
|
TELEMETRY_STR = ".telemetry"
|
|
20
20
|
INSTANCE_ID_STR = "instance_id"
|
|
21
|
+
USER_ID_STR = "user_id"
|
|
21
22
|
|
|
22
23
|
KNOWN_CI_ENV_VAR_KEYS = {
|
|
23
24
|
"GITLAB_CI", # https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
|
|
@@ -84,6 +85,17 @@ def get_or_create_dir_from_dagster_home(target_dir: str) -> str:
|
|
|
84
85
|
return dagster_home_logs_path
|
|
85
86
|
|
|
86
87
|
|
|
88
|
+
def get_or_create_user_telemetry_dir() -> str:
|
|
89
|
+
"""Always return ~/.dagster/.telemetry/, ignoring $DAGSTER_HOME.
|
|
90
|
+
|
|
91
|
+
This is used for user-level telemetry data (like user_id) that should be
|
|
92
|
+
consistent across all Dagster instances for a given user.
|
|
93
|
+
"""
|
|
94
|
+
path = os.path.join(os.path.expanduser(DAGSTER_HOME_FALLBACK), TELEMETRY_STR)
|
|
95
|
+
os.makedirs(path, exist_ok=True)
|
|
96
|
+
return path
|
|
97
|
+
|
|
98
|
+
|
|
87
99
|
class TelemetrySettings(NamedTuple):
|
|
88
100
|
dagster_telemetry_enabled: bool
|
|
89
101
|
instance_id: Optional[str]
|
|
@@ -154,6 +166,7 @@ class TelemetryEntry(
|
|
|
154
166
|
("event_id", str),
|
|
155
167
|
("elapsed_time", str),
|
|
156
168
|
("instance_id", str),
|
|
169
|
+
("user_id", str),
|
|
157
170
|
("metadata", Mapping[str, str]),
|
|
158
171
|
("python_version", str),
|
|
159
172
|
("dagster_version", str),
|
|
@@ -173,7 +186,8 @@ class TelemetryEntry(
|
|
|
173
186
|
client_time - Client time
|
|
174
187
|
elapsed_time - Time elapsed between start of function and end of function call
|
|
175
188
|
event_id - Unique id for the event
|
|
176
|
-
instance_id - Unique id for dagster instance
|
|
189
|
+
instance_id - Unique id for dagster instance (varies by $DAGSTER_HOME)
|
|
190
|
+
user_id - Unique id for the user (consistent across all instances, stored in ~/.dagster)
|
|
177
191
|
python_version - Python version
|
|
178
192
|
metadata - More information i.e. pipeline success (boolean)
|
|
179
193
|
version - Schema version
|
|
@@ -192,6 +206,7 @@ class TelemetryEntry(
|
|
|
192
206
|
client_time: str,
|
|
193
207
|
event_id: str,
|
|
194
208
|
instance_id: str,
|
|
209
|
+
user_id: str,
|
|
195
210
|
metadata: Optional[Mapping[str, str]] = None,
|
|
196
211
|
elapsed_time: Optional[str] = None,
|
|
197
212
|
run_storage_id: Optional[str] = None,
|
|
@@ -206,6 +221,7 @@ class TelemetryEntry(
|
|
|
206
221
|
elapsed_time=elapsed_time or "",
|
|
207
222
|
event_id=event_id,
|
|
208
223
|
instance_id=instance_id,
|
|
224
|
+
user_id=user_id,
|
|
209
225
|
python_version=get_python_version(),
|
|
210
226
|
metadata=metadata or {},
|
|
211
227
|
dagster_version=__version__ or "None",
|
|
@@ -239,6 +255,7 @@ def log_telemetry_action(
|
|
|
239
255
|
elapsed_time=str(elapsed_time),
|
|
240
256
|
event_id=str(uuid.uuid4()),
|
|
241
257
|
instance_id=instance_id,
|
|
258
|
+
user_id=get_or_set_user_id(),
|
|
242
259
|
metadata=metadata,
|
|
243
260
|
run_storage_id=run_storage_id,
|
|
244
261
|
)._asdict()
|
|
@@ -277,6 +294,56 @@ def get_or_set_instance_id() -> str:
|
|
|
277
294
|
return instance_id
|
|
278
295
|
|
|
279
296
|
|
|
297
|
+
def get_or_set_user_id() -> str:
|
|
298
|
+
"""Get or create a user-level telemetry ID.
|
|
299
|
+
|
|
300
|
+
Unlike instance_id which varies by $DAGSTER_HOME, user_id is always stored
|
|
301
|
+
in ~/.dagster/.telemetry/user_id.yaml to ensure consistency across all
|
|
302
|
+
Dagster instances for a given user.
|
|
303
|
+
"""
|
|
304
|
+
user_id = _get_telemetry_user_id()
|
|
305
|
+
if user_id is None:
|
|
306
|
+
user_id = _set_telemetry_user_id() or "<<unable_to_set_user_id>>"
|
|
307
|
+
return user_id
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def _get_telemetry_user_id() -> Optional[str]:
|
|
311
|
+
"""Gets the user_id from ~/.dagster/.telemetry/user_id.yaml."""
|
|
312
|
+
import yaml
|
|
313
|
+
|
|
314
|
+
user_id_path = os.path.join(get_or_create_user_telemetry_dir(), "user_id.yaml")
|
|
315
|
+
if not os.path.exists(user_id_path):
|
|
316
|
+
return None
|
|
317
|
+
|
|
318
|
+
try:
|
|
319
|
+
with open(user_id_path, encoding="utf8") as user_id_file:
|
|
320
|
+
user_id_yaml = yaml.safe_load(user_id_file)
|
|
321
|
+
if (
|
|
322
|
+
user_id_yaml
|
|
323
|
+
and USER_ID_STR in user_id_yaml
|
|
324
|
+
and isinstance(user_id_yaml[USER_ID_STR], str)
|
|
325
|
+
):
|
|
326
|
+
return user_id_yaml[USER_ID_STR]
|
|
327
|
+
except Exception:
|
|
328
|
+
pass
|
|
329
|
+
return None
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
def _set_telemetry_user_id() -> Optional[str]:
|
|
333
|
+
"""Sets the user_id at ~/.dagster/.telemetry/user_id.yaml."""
|
|
334
|
+
import yaml
|
|
335
|
+
|
|
336
|
+
user_id_path = os.path.join(get_or_create_user_telemetry_dir(), "user_id.yaml")
|
|
337
|
+
user_id = str(uuid.uuid4())
|
|
338
|
+
|
|
339
|
+
try:
|
|
340
|
+
with open(user_id_path, "w", encoding="utf8") as user_id_file:
|
|
341
|
+
yaml.dump({USER_ID_STR: user_id}, user_id_file, default_flow_style=False)
|
|
342
|
+
return user_id
|
|
343
|
+
except Exception:
|
|
344
|
+
return None
|
|
345
|
+
|
|
346
|
+
|
|
280
347
|
# Gets the instance_id at $DAGSTER_HOME/.telemetry/id.yaml
|
|
281
348
|
def _get_telemetry_instance_id() -> Optional[str]:
|
|
282
349
|
import yaml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import asyncio
|
|
2
1
|
from collections.abc import Callable, Hashable, Mapping
|
|
3
2
|
from functools import wraps
|
|
3
|
+
from inspect import iscoroutinefunction
|
|
4
4
|
from typing import Any, Concatenate, TypeVar, cast
|
|
5
5
|
|
|
6
6
|
from typing_extensions import ParamSpec
|
|
@@ -93,7 +93,7 @@ def cached_method(method: Callable[Concatenate[S, P], T]) -> Callable[Concatenat
|
|
|
93
93
|
|
|
94
94
|
return canonical_kwargs
|
|
95
95
|
|
|
96
|
-
if
|
|
96
|
+
if iscoroutinefunction(method):
|
|
97
97
|
|
|
98
98
|
@wraps(method)
|
|
99
99
|
async def _async_cached_method_wrapper(self: S, *args: P.args, **kwargs: P.kwargs) -> T:
|
dagster_shared/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.12.
|
|
1
|
+
__version__ = "1.12.12"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dagster_shared
|
|
3
|
-
Version: 1.12.
|
|
3
|
+
Version: 1.12.12
|
|
4
4
|
Summary: Shared code between dagster and dagster-dg-core.
|
|
5
5
|
Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-shared
|
|
6
6
|
Author: Dagster Labs
|
|
@@ -5,7 +5,7 @@ dagster_shared/match.py,sha256=P9wQSvzb7a03jXlC-0w9msoX5bV_BE1uSvdYvavNO6M,3444
|
|
|
5
5
|
dagster_shared/merger.py,sha256=c9cJTwHtgMXgR9MtB-KwZEMtQSXn13rF08F2ID5aDTg,1758
|
|
6
6
|
dagster_shared/modules.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
dagster_shared/py.typed,sha256=mDShSrm8qg9qjacQc2F-rI8ATllqP6EdgHuEYxuCXZ0,7
|
|
8
|
-
dagster_shared/version.py,sha256=
|
|
8
|
+
dagster_shared/version.py,sha256=vKk1j8B-0kB8gelcQBK0OZVY0ogGIIA3KR4K_1iNmJQ,24
|
|
9
9
|
dagster_shared/check/README.md,sha256=UlxRVMWJEoVAlaHWDvhobUpuNQGBG5-ddqZ6OIfLYnM,1352
|
|
10
10
|
dagster_shared/check/__init__.py,sha256=CHSOqJpaeWr6skJT7jD8HnN5s4bdnoX4x94sGN55KqA,3482
|
|
11
11
|
dagster_shared/check/builder.py,sha256=FvxiGCOCOgA5cWEDPXVF7c2grnjhR2dkuxEN3dRpoEI,17570
|
|
@@ -36,9 +36,9 @@ dagster_shared/seven/abc.py,sha256=vaqd-UGzvqAADutqU4O0V7-Hihe0vQNerj2SlCPJMFQ,5
|
|
|
36
36
|
dagster_shared/seven/json.py,sha256=TElHKCmD71QJSDKvFP4e_vLMoSAFsAllPAbmplzSN30,383
|
|
37
37
|
dagster_shared/seven/temp_dir.py,sha256=L03xfE14yxlcmjCI9NrViY36r4MMjaahfexJygMPaJo,354
|
|
38
38
|
dagster_shared/seven/compat/__init__.py,sha256=8BqkAab5uZGmSyvBFpePjAaXR9seNDobs3TYI45nt5k,105
|
|
39
|
-
dagster_shared/telemetry/__init__.py,sha256=
|
|
39
|
+
dagster_shared/telemetry/__init__.py,sha256=KeUTJmsmH3Xh4_6hRFAoIH9QdptnNogzygg4kwXebbI,13611
|
|
40
40
|
dagster_shared/utils/__init__.py,sha256=m4QRhlvU_XCN3BWcUr_mead-7Ui4XvQJo3SIDgljirU,4310
|
|
41
|
-
dagster_shared/utils/cached_method.py,sha256=
|
|
41
|
+
dagster_shared/utils/cached_method.py,sha256=_l_cL-U98ZX8uZDPSLhKEOP3dZeTS6Of3RX9oV2gA_E,7200
|
|
42
42
|
dagster_shared/utils/config.py,sha256=np_6pJ6r3xRKfV-cPeR6qVXebhj-Oznw3rhWP67miNM,3536
|
|
43
43
|
dagster_shared/utils/hash.py,sha256=WA0FegijIAhMphC0gt30tTqpR6BecRk1GhIMtV71qbU,2060
|
|
44
44
|
dagster_shared/utils/test.py,sha256=rF0eXymdihf25euuyfQrnH7w8dicUDFAIloKlmKXyZ0,20
|
|
@@ -47,8 +47,8 @@ dagster_shared/utils/warnings.py,sha256=yxiG8ghc3RwyomRItwIKQe6TrUdTlJAUX3BssOwe
|
|
|
47
47
|
dagster_shared/yaml_utils/__init__.py,sha256=Ya7qT3aJGPC1TgD-pSkkhLX5U4QbrUkCsrUtZQeACXg,10529
|
|
48
48
|
dagster_shared/yaml_utils/sample_yaml.py,sha256=YC-1h1P48F3QV-Uwo-MqzEkzlrMliXPfZM_X6ynZvTQ,5461
|
|
49
49
|
dagster_shared/yaml_utils/source_position.py,sha256=yVSnHUkBYzWzLzqtyGbqRjH2b7oTeiE4K3b-uokYUIQ,9786
|
|
50
|
-
dagster_shared-1.12.
|
|
51
|
-
dagster_shared-1.12.
|
|
52
|
-
dagster_shared-1.12.
|
|
53
|
-
dagster_shared-1.12.
|
|
54
|
-
dagster_shared-1.12.
|
|
50
|
+
dagster_shared-1.12.12.dist-info/licenses/LICENSE,sha256=hgU51ohULAFKZE2la8sartPYoUaAA14jxFAfFC4Tow0,11347
|
|
51
|
+
dagster_shared-1.12.12.dist-info/METADATA,sha256=701-XPDihIqTjyXuiayhLchrhs617grhdcF6pEu_bt8,1148
|
|
52
|
+
dagster_shared-1.12.12.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
53
|
+
dagster_shared-1.12.12.dist-info/top_level.txt,sha256=S8ADcO4aTW07ONhLHXDxiuSkDzucgYKOlocB2x3r_dY,15
|
|
54
|
+
dagster_shared-1.12.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|