dagster-shared 1.11.9__tar.gz → 1.11.11__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 (63) hide show
  1. {dagster_shared-1.11.9/dagster_shared.egg-info → dagster_shared-1.11.11}/PKG-INFO +1 -1
  2. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/error.py +6 -5
  3. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/objects/__init__.py +0 -4
  4. dagster_shared-1.11.11/dagster_shared/serdes/objects/models/__init__.py +4 -0
  5. dagster_shared-1.11.11/dagster_shared/serdes/objects/models/defs_state_info.py +41 -0
  6. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/cached_method.py +10 -5
  7. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/timing.py +31 -0
  8. dagster_shared-1.11.11/dagster_shared/version.py +1 -0
  9. {dagster_shared-1.11.9 → dagster_shared-1.11.11/dagster_shared.egg-info}/PKG-INFO +1 -1
  10. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared.egg-info/SOURCES.txt +2 -1
  11. dagster_shared-1.11.9/dagster_shared/serdes/objects/defs_state_info.py +0 -55
  12. dagster_shared-1.11.9/dagster_shared/version.py +0 -1
  13. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/LICENSE +0 -0
  14. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/MANIFEST.in +0 -0
  15. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/README.md +0 -0
  16. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/__init__.py +0 -0
  17. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/README.md +0 -0
  18. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/__init__.py +0 -0
  19. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/builder.py +0 -0
  20. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/decorator.py +0 -0
  21. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/functions.py +0 -0
  22. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/check/record.py +0 -0
  23. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/cli/__init__.py +0 -0
  24. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/dagster_model/__init__.py +0 -0
  25. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/dagster_model/pydantic_compat_layer.py +0 -0
  26. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/ipc.py +0 -0
  27. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/libraries/__init__.py +0 -0
  28. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/match.py +0 -0
  29. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/merger.py +0 -0
  30. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/modules.py +0 -0
  31. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/plus/__init__.py +0 -0
  32. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/plus/config.py +0 -0
  33. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/plus/config_utils.py +0 -0
  34. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/plus/login_server.py +0 -0
  35. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/py.typed +0 -0
  36. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/record/__init__.py +0 -0
  37. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/scaffold/__init__.py +0 -0
  38. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/__init__.py +0 -0
  39. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/errors.py +0 -0
  40. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/objects/definition_metadata.py +0 -0
  41. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/objects/package_entry.py +0 -0
  42. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/serdes.py +0 -0
  43. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/serdes/utils.py +0 -0
  44. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/seven/__init__.py +0 -0
  45. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/seven/abc.py +0 -0
  46. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/seven/compat/__init__.py +0 -0
  47. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/seven/json.py +0 -0
  48. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/seven/temp_dir.py +0 -0
  49. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/telemetry/__init__.py +0 -0
  50. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/__init__.py +0 -0
  51. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/config.py +0 -0
  52. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/hash.py +0 -0
  53. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/test.py +0 -0
  54. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/utils/warnings.py +0 -0
  55. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/yaml_utils/__init__.py +0 -0
  56. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/yaml_utils/sample_yaml.py +0 -0
  57. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared/yaml_utils/source_position.py +0 -0
  58. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared.egg-info/dependency_links.txt +0 -0
  59. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared.egg-info/not-zip-safe +0 -0
  60. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared.egg-info/requires.txt +0 -0
  61. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/dagster_shared.egg-info/top_level.txt +0 -0
  62. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/setup.cfg +0 -0
  63. {dagster_shared-1.11.9 → dagster_shared-1.11.11}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster_shared
3
- Version: 1.11.9
3
+ Version: 1.11.11
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
@@ -1,4 +1,5 @@
1
1
  # mypy does not support recursive types, so "cause" has to be typed `Any`
2
+ import os
2
3
  import sys
3
4
  import traceback
4
5
  from collections.abc import Sequence
@@ -102,14 +103,14 @@ class SerializableErrorInfo(
102
103
 
103
104
 
104
105
  DAGSTER_FRAMEWORK_SUBSTRINGS = [
105
- "/site-packages/dagster",
106
- "/python_modules/dagster",
107
- "/python_modules/libraries/dagster",
106
+ os.sep + os.path.join("site-packages", "dagster"),
107
+ os.sep + os.path.join("python_modules", "dagster"),
108
+ os.sep + os.path.join("python_modules", "libraries", "dagster"),
108
109
  ]
109
110
 
110
111
  IMPORT_MACHINERY_SUBSTRINGS = [
111
- "importlib/__init__.py",
112
- "importlib/metadata/__init__.py",
112
+ os.path.join("importlib", "__init__.py"),
113
+ os.path.join("importlib", "metadata", "__init__.py"),
113
114
  "importlib._bootstrap",
114
115
  ]
115
116
 
@@ -1,7 +1,3 @@
1
- from dagster_shared.serdes.objects.defs_state_info import (
2
- DefsKeyStateInfo as DefsKeyStateInfo,
3
- DefsStateInfo as DefsStateInfo,
4
- )
5
1
  from dagster_shared.serdes.objects.package_entry import (
6
2
  ComponentFeatureData as ComponentFeatureData,
7
3
  EnvRegistryKey as EnvRegistryKey,
@@ -0,0 +1,4 @@
1
+ from dagster_shared.serdes.objects.models.defs_state_info import (
2
+ DefsKeyStateInfo as DefsKeyStateInfo,
3
+ DefsStateInfo as DefsStateInfo,
4
+ )
@@ -0,0 +1,41 @@
1
+ import time
2
+ from collections.abc import Mapping
3
+ from typing import Optional
4
+
5
+ from dagster_shared.dagster_model import DagsterModel
6
+ from dagster_shared.serdes import whitelist_for_serdes
7
+
8
+
9
+ @whitelist_for_serdes
10
+ class DefsKeyStateInfo(DagsterModel):
11
+ """Records information about the version of the state for a given defs key."""
12
+
13
+ version: str
14
+ create_timestamp: float
15
+
16
+
17
+ @whitelist_for_serdes
18
+ class DefsStateInfo(DagsterModel):
19
+ """All of the information about the state version that will be used to load a given code location."""
20
+
21
+ info_mapping: Mapping[str, Optional[DefsKeyStateInfo]]
22
+
23
+ @staticmethod
24
+ def empty() -> "DefsStateInfo":
25
+ return DefsStateInfo(info_mapping={})
26
+
27
+ @staticmethod
28
+ def add_version(
29
+ current_info: Optional["DefsStateInfo"], key: str, version: Optional[str]
30
+ ) -> "DefsStateInfo":
31
+ new_info = (
32
+ DefsKeyStateInfo(version=version, create_timestamp=time.time()) if version else None
33
+ )
34
+ if current_info is None:
35
+ return DefsStateInfo(info_mapping={key: new_info})
36
+ else:
37
+ return DefsStateInfo(info_mapping={**current_info.info_mapping, key: new_info})
38
+
39
+ def get_version(self, key: str) -> Optional[str]:
40
+ info = self.info_mapping.get(key)
41
+ return info.version if info else None
@@ -105,9 +105,11 @@ def cached_method(method: Callable[Concatenate[S, P], T]) -> Callable[Concatenat
105
105
  cache_dict[method.__name__] = {}
106
106
 
107
107
  cache = cache_dict[method.__name__]
108
-
109
- canonical_kwargs = get_canonical_kwargs(*args, **kwargs)
110
- key = make_cached_method_cache_key(canonical_kwargs)
108
+ if not args and not kwargs:
109
+ key = NO_ARGS_HASH_VALUE
110
+ else:
111
+ canonical_kwargs = get_canonical_kwargs(*args, **kwargs)
112
+ key = make_cached_method_cache_key(canonical_kwargs)
111
113
 
112
114
  if key not in cache:
113
115
  result = await method(self, *args, **kwargs)
@@ -128,9 +130,12 @@ def cached_method(method: Callable[Concatenate[S, P], T]) -> Callable[Concatenat
128
130
  cache_dict[method.__name__] = {}
129
131
 
130
132
  cache = cache_dict[method.__name__]
133
+ if not args and not kwargs:
134
+ key = NO_ARGS_HASH_VALUE
135
+ else:
136
+ canonical_kwargs = get_canonical_kwargs(*args, **kwargs)
137
+ key = make_cached_method_cache_key(canonical_kwargs)
131
138
 
132
- canonical_kwargs = get_canonical_kwargs(*args, **kwargs)
133
- key = make_cached_method_cache_key(canonical_kwargs)
134
139
  if key not in cache:
135
140
  result = method(self, *args, **kwargs)
136
141
  cache[key] = result
@@ -1,3 +1,8 @@
1
+ import os
2
+ import time
3
+ from contextlib import contextmanager
4
+
5
+
1
6
  def format_duration(milliseconds: float) -> str:
2
7
  """Given milliseconds, return human readable duration string such as:
3
8
  533ms, 2.1s, 4m52s, 34m12s, 1h4m.
@@ -31,3 +36,29 @@ def format_duration(milliseconds: float) -> str:
31
36
  hours = int(milliseconds // (1000 * 60 * 60))
32
37
  minutes = int(milliseconds % (1000 * 60 * 60) // (1000 * 60))
33
38
  return f"{hours}h{minutes}m"
39
+
40
+
41
+ @contextmanager
42
+ def fixed_timezone(tzname: str = "UTC"):
43
+ """Temporarily set the process-wide timezone to `tzname`.
44
+ Temporarily set the process-wide timezone to `tzname`.
45
+
46
+ Example:
47
+ with fixed_timezone("America/New_York"):
48
+ dt = datetime.fromtimestamp(0)
49
+ print(dt.strftime("%Y-%m-%d %H:%M %Z"))
50
+ # 1969-12-31 19:00 EST
51
+ """
52
+ prev = os.environ.get("TZ")
53
+ os.environ["TZ"] = tzname
54
+ if hasattr(time, "tzset"):
55
+ time.tzset()
56
+ try:
57
+ yield
58
+ finally:
59
+ if prev is None:
60
+ os.environ.pop("TZ", None)
61
+ else:
62
+ os.environ["TZ"] = prev
63
+ if hasattr(time, "tzset"):
64
+ time.tzset()
@@ -0,0 +1 @@
1
+ __version__ = "1.11.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dagster_shared
3
- Version: 1.11.9
3
+ Version: 1.11.11
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
@@ -39,8 +39,9 @@ dagster_shared/serdes/serdes.py
39
39
  dagster_shared/serdes/utils.py
40
40
  dagster_shared/serdes/objects/__init__.py
41
41
  dagster_shared/serdes/objects/definition_metadata.py
42
- dagster_shared/serdes/objects/defs_state_info.py
43
42
  dagster_shared/serdes/objects/package_entry.py
43
+ dagster_shared/serdes/objects/models/__init__.py
44
+ dagster_shared/serdes/objects/models/defs_state_info.py
44
45
  dagster_shared/seven/__init__.py
45
46
  dagster_shared/seven/abc.py
46
47
  dagster_shared/seven/json.py
@@ -1,55 +0,0 @@
1
- import time
2
- from collections.abc import Mapping
3
- from typing import Any, Optional
4
-
5
- from dagster_shared.record import record
6
- from dagster_shared.serdes import whitelist_for_serdes
7
-
8
-
9
- @whitelist_for_serdes
10
- @record
11
- class DefsKeyStateInfo:
12
- """Records information about the version of the state for a given defs key."""
13
-
14
- version: str
15
- create_timestamp: float
16
-
17
- @staticmethod
18
- def from_dict(val: dict[str, Any]) -> "DefsKeyStateInfo":
19
- return DefsKeyStateInfo(version=val["version"], create_timestamp=val["create_timestamp"])
20
-
21
- def to_dict(self) -> dict[str, Any]:
22
- return {"version": self.version, "create_timestamp": self.create_timestamp}
23
-
24
-
25
- @whitelist_for_serdes
26
- @record
27
- class DefsStateInfo:
28
- """All of the information about the state version that will be used to load a given code location."""
29
-
30
- info_mapping: Mapping[str, DefsKeyStateInfo]
31
-
32
- @staticmethod
33
- def add_version(
34
- current_info: Optional["DefsStateInfo"], key: str, version: str
35
- ) -> "DefsStateInfo":
36
- new_info = DefsKeyStateInfo(version=version, create_timestamp=time.time())
37
- if current_info is None:
38
- return DefsStateInfo(info_mapping={key: new_info})
39
- else:
40
- return DefsStateInfo(info_mapping={**current_info.info_mapping, key: new_info})
41
-
42
- @staticmethod
43
- def from_dict(val: dict[str, Any]) -> "DefsStateInfo":
44
- """Used for converting from the user-facing dict representation."""
45
- return DefsStateInfo(
46
- info_mapping={key: DefsKeyStateInfo.from_dict(info) for key, info in val.items()}
47
- )
48
-
49
- def to_dict(self) -> dict[str, Any]:
50
- """Used for converting to the user-facing dict representation."""
51
- return {key: info.to_dict() for key, info in self.info_mapping.items()}
52
-
53
- def get_version(self, key: str) -> Optional[str]:
54
- info = self.info_mapping.get(key)
55
- return info.version if info else None
@@ -1 +0,0 @@
1
- __version__ = "1.11.9"