dagster-wandb 0.24.2__tar.gz → 0.28.6__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 (26) hide show
  1. {dagster-wandb-0.24.2/dagster_wandb.egg-info → dagster_wandb-0.28.6}/PKG-INFO +20 -6
  2. dagster_wandb-0.28.6/dagster_wandb/__init__.py +19 -0
  3. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/io_manager.py +10 -16
  4. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/launch/ops.py +3 -3
  5. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/resources.py +3 -3
  6. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/types.py +7 -14
  7. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/utils/pickling.py +10 -10
  8. dagster_wandb-0.28.6/dagster_wandb/version.py +1 -0
  9. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6/dagster_wandb.egg-info}/PKG-INFO +20 -6
  10. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb.egg-info/requires.txt +1 -1
  11. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/setup.py +3 -6
  12. dagster-wandb-0.24.2/dagster_wandb/__init__.py +0 -19
  13. dagster-wandb-0.24.2/dagster_wandb/version.py +0 -1
  14. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/LICENSE +0 -0
  15. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/MANIFEST.in +0 -0
  16. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/README.md +0 -0
  17. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/launch/__init__.py +0 -0
  18. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/launch/configs.py +0 -0
  19. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/py.typed +0 -0
  20. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/utils/__init__.py +0 -0
  21. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb/utils/errors.py +0 -0
  22. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb.egg-info/SOURCES.txt +0 -0
  23. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb.egg-info/dependency_links.txt +0 -0
  24. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb.egg-info/not-zip-safe +0 -0
  25. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/dagster_wandb.egg-info/top_level.txt +0 -0
  26. {dagster-wandb-0.24.2 → dagster_wandb-0.28.6}/setup.cfg +0 -0
@@ -1,17 +1,31 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: dagster-wandb
3
- Version: 0.24.2
3
+ Version: 0.28.6
4
4
  Summary: Package for wandb Dagster components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-wandb
6
6
  Author: Dagster Labs
7
7
  Author-email: hello@dagsterlabs.com
8
8
  License: Apache-2.0
9
- Classifier: Programming Language :: Python :: 3.8
10
- Classifier: Programming Language :: Python :: 3.9
11
9
  Classifier: Programming Language :: Python :: 3.10
12
10
  Classifier: Programming Language :: Python :: 3.11
13
11
  Classifier: License :: OSI Approved :: Apache Software License
14
12
  Classifier: Operating System :: OS Independent
15
- Requires-Python: >=3.8,<3.13
16
- Provides-Extra: dev
13
+ Requires-Python: >=3.10,<3.14
17
14
  License-File: LICENSE
15
+ Requires-Dist: dagster==1.12.6
16
+ Requires-Dist: wandb<1.0,>=0.15.11
17
+ Provides-Extra: dev
18
+ Requires-Dist: cloudpickle; extra == "dev"
19
+ Requires-Dist: joblib; extra == "dev"
20
+ Requires-Dist: callee; extra == "dev"
21
+ Requires-Dist: dill; extra == "dev"
22
+ Dynamic: author
23
+ Dynamic: author-email
24
+ Dynamic: classifier
25
+ Dynamic: home-page
26
+ Dynamic: license
27
+ Dynamic: license-file
28
+ Dynamic: provides-extra
29
+ Dynamic: requires-dist
30
+ Dynamic: requires-python
31
+ Dynamic: summary
@@ -0,0 +1,19 @@
1
+ from dagster_shared.libraries import DagsterLibraryRegistry
2
+
3
+ from dagster_wandb.io_manager import WandbArtifactsIOManagerError, wandb_artifacts_io_manager
4
+ from dagster_wandb.launch.ops import run_launch_agent, run_launch_job
5
+ from dagster_wandb.resources import wandb_resource
6
+ from dagster_wandb.types import SerializationModule, WandbArtifactConfiguration
7
+ from dagster_wandb.version import __version__
8
+
9
+ DagsterLibraryRegistry.register("dagster-wandb", __version__)
10
+
11
+ __all__ = [
12
+ "SerializationModule",
13
+ "WandbArtifactConfiguration",
14
+ "WandbArtifactsIOManagerError",
15
+ "run_launch_agent",
16
+ "run_launch_job",
17
+ "wandb_artifacts_io_manager",
18
+ "wandb_resource",
19
+ ]
@@ -3,11 +3,10 @@ import os
3
3
  import pickle
4
4
  import platform
5
5
  import shutil
6
- import sys
7
6
  import time
8
7
  import uuid
9
8
  from contextlib import contextmanager
10
- from typing import List, Optional
9
+ from typing import Optional, TypedDict
11
10
 
12
11
  from dagster import (
13
12
  Field,
@@ -24,25 +23,20 @@ from dagster._core.storage.io_manager import dagster_maintained_io_manager
24
23
  from wandb import Artifact
25
24
  from wandb.data_types import WBValue
26
25
 
27
- from .resources import WANDB_CLOUD_HOST
28
- from .utils.errors import (
26
+ from dagster_wandb.resources import WANDB_CLOUD_HOST
27
+ from dagster_wandb.utils.errors import (
29
28
  WandbArtifactsIOManagerError,
30
29
  raise_on_empty_configuration,
31
30
  raise_on_unknown_partition_keys,
32
31
  raise_on_unknown_read_configuration_keys,
33
32
  raise_on_unknown_write_configuration_keys,
34
33
  )
35
- from .utils.pickling import (
34
+ from dagster_wandb.utils.pickling import (
36
35
  ACCEPTED_SERIALIZATION_MODULES,
37
36
  pickle_artifact_content,
38
37
  unpickle_artifact_content,
39
38
  )
40
- from .version import __version__
41
-
42
- if sys.version_info >= (3, 8):
43
- from typing import TypedDict
44
- else:
45
- from typing_extensions import TypedDict
39
+ from dagster_wandb.version import __version__
46
40
 
47
41
  UNIT_TEST_RUN_ID = "0ab2e48b-6d63-4ff5-b160-662cc60145f4"
48
42
 
@@ -54,7 +48,7 @@ class Config(TypedDict):
54
48
  wandb_project: str
55
49
  wandb_run_name: Optional[str]
56
50
  wandb_run_id: Optional[str]
57
- wandb_run_tags: Optional[List[str]]
51
+ wandb_run_tags: Optional[list[str]]
58
52
  base_dir: str
59
53
  cache_duration_in_minutes: Optional[int]
60
54
 
@@ -295,7 +289,7 @@ class ArtifactsIOManager(IOManager):
295
289
  context.log.warning(
296
290
  "You've included a 'serialization_module' in the"
297
291
  " 'wandb_artifact_configuration' settings. However, this doesn't have"
298
- " any impact when the output is already an W&B object like e.g Table or"
292
+ " any impact when the output is already a W&B object like e.g Table or"
299
293
  " Image."
300
294
  )
301
295
  # Adds the WBValue object using the class name as the name for the file
@@ -395,10 +389,10 @@ class ArtifactsIOManager(IOManager):
395
389
 
396
390
  artifact_name = parameters.get("name")
397
391
  if artifact_name is None:
398
- artifact_name = context.asset_key[0][0] # name of asset
392
+ artifact_name = context.asset_key.path[0] # name of asset
399
393
 
400
394
  partitions = [
401
- (key, f"{artifact_name}.{ str(key).replace('|', '-')}")
395
+ (key, f"{artifact_name}.{str(key).replace('|', '-')}")
402
396
  for key in context.asset_partition_keys
403
397
  ]
404
398
 
@@ -547,7 +541,7 @@ class ArtifactsIOManager(IOManager):
547
541
  path = artifact.get_path(path)
548
542
  return path.download(root=artifacts_path)
549
543
 
550
- artifact_dir = artifact.download(root=artifacts_path, recursive=True)
544
+ artifact_dir = artifact.download(root=artifacts_path)
551
545
 
552
546
  unpickled_content = unpickle_artifact_content(artifact_dir)
553
547
  if unpickled_content is not None:
@@ -1,7 +1,7 @@
1
1
  from dagster import OpExecutionContext, op
2
2
  from wandb.sdk.launch import launch, launch_add
3
3
 
4
- from .configs import launch_agent_config, launch_config
4
+ from dagster_wandb.launch.configs import launch_agent_config, launch_config
5
5
 
6
6
 
7
7
  def raise_on_invalid_config(context: OpExecutionContext):
@@ -79,7 +79,7 @@ def run_launch_agent(context: OpExecutionContext):
79
79
  }
80
80
  context.log.info(f"Launch agent configuration: {config}")
81
81
  context.log.info("Running Launch agent...")
82
- launch.create_and_run_agent(api=context.resources.wandb_resource["api"], config=config)
82
+ launch.create_and_run_agent(api=context.resources.wandb_resource["api"], config=config) # pyright: ignore[reportFunctionMemberAccess]
83
83
 
84
84
 
85
85
  @op(
@@ -150,7 +150,7 @@ def run_launch_job(context: OpExecutionContext):
150
150
  queue = context.op_config.get("queue")
151
151
  if queue is None:
152
152
  context.log.info("No queue provided, running Launch job locally")
153
- launch.run(api=context.resources.wandb_resource["api"], config=config)
153
+ launch.run(api=context.resources.wandb_resource["api"], config=config) # pyright: ignore[reportFunctionMemberAccess]
154
154
  else:
155
155
  synchronous = config.get("synchronous", True)
156
156
  config.pop("synchronous", None)
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict
1
+ from typing import Any
2
2
 
3
3
  import wandb
4
4
  from dagster import Field, InitResourceContext, String, StringSource, resource
@@ -27,7 +27,7 @@ WANDB_CLOUD_HOST: str = "https://api.wandb.ai"
27
27
  },
28
28
  description="Resource for interacting with Weights & Biases",
29
29
  )
30
- def wandb_resource(context: InitResourceContext) -> Dict[str, Any]:
30
+ def wandb_resource(context: InitResourceContext) -> dict[str, Any]:
31
31
  """Dagster resource used to communicate with the W&B API. It's useful when you want to use the
32
32
  wandb client within your ops and assets. It's a required resources if you are using the W&B IO
33
33
  Manager.
@@ -37,7 +37,7 @@ def wandb_resource(context: InitResourceContext) -> Dict[str, Any]:
37
37
  For a complete set of documentation, see `Dagster integration <https://docs.wandb.ai/guides/integrations/dagster>`_.
38
38
 
39
39
  To configure this resource, we recommend using the `configured
40
- <https://docs.dagster.io/concepts/configuration/configured>`_ method.
40
+ <https://legacy-docs.dagster.io/concepts/configuration/configured>`_ method.
41
41
 
42
42
  **Example:**
43
43
 
@@ -1,18 +1,11 @@
1
- import sys
2
-
3
- if sys.version_info >= (3, 8):
4
- from typing import TypedDict
5
- else:
6
- from typing_extensions import TypedDict
7
-
8
- from typing import Any, Dict, List
1
+ from typing import Any, TypedDict
9
2
 
10
3
 
11
4
  class SerializationModule(TypedDict, total=False):
12
5
  """W&B Artifacts IO Manager configuration of the serialization module. Useful for type checking."""
13
6
 
14
7
  name: str
15
- parameters: Dict[str, Any]
8
+ parameters: dict[str, Any]
16
9
 
17
10
 
18
11
  class WandbArtifactConfiguration(TypedDict, total=False):
@@ -21,9 +14,9 @@ class WandbArtifactConfiguration(TypedDict, total=False):
21
14
  name: str
22
15
  type: str
23
16
  description: str
24
- aliases: List[str]
25
- add_dirs: List[Dict[str, Any]]
26
- add_files: List[Dict[str, Any]]
27
- add_references: List[Dict[str, Any]]
17
+ aliases: list[str]
18
+ add_dirs: list[dict[str, Any]]
19
+ add_files: list[dict[str, Any]]
20
+ add_references: list[dict[str, Any]]
28
21
  serialization_module: SerializationModule
29
- partitions: Dict[str, Dict[str, Any]]
22
+ partitions: dict[str, dict[str, Any]]
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import pickle
3
3
 
4
- from .errors import WandbArtifactsIOManagerError
4
+ from dagster_wandb.utils.errors import WandbArtifactsIOManagerError
5
5
 
6
6
  PICKLE_FILENAME = "output.pickle"
7
7
  DILL_FILENAME = "output.dill"
@@ -55,7 +55,7 @@ def pickle_artifact_content(
55
55
  **artifact.metadata,
56
56
  **{
57
57
  "source_serialization_module": "dill",
58
- "source_dill_version_used": dill.__version__,
58
+ "source_dill_version_used": dill.__version__, # pyright: ignore[reportOptionalMemberAccess]
59
59
  "source_pickle_protocol_used": serialization_module_parameters_with_protocol[
60
60
  "protocol"
61
61
  ],
@@ -63,7 +63,7 @@ def pickle_artifact_content(
63
63
  }
64
64
  with artifact.new_file(DILL_FILENAME, "wb") as file:
65
65
  try:
66
- dill.dump(
66
+ dill.dump( # pyright: ignore[reportOptionalMemberAccess]
67
67
  obj,
68
68
  file,
69
69
  **serialization_module_parameters_with_protocol,
@@ -88,7 +88,7 @@ def pickle_artifact_content(
88
88
  **artifact.metadata,
89
89
  **{
90
90
  "source_serialization_module": "cloudpickle",
91
- "source_cloudpickle_version_used": cloudpickle.__version__,
91
+ "source_cloudpickle_version_used": cloudpickle.__version__, # pyright: ignore[reportOptionalMemberAccess]
92
92
  "source_pickle_protocol_used": serialization_module_parameters_with_protocol[
93
93
  "protocol"
94
94
  ],
@@ -96,7 +96,7 @@ def pickle_artifact_content(
96
96
  }
97
97
  with artifact.new_file(CLOUDPICKLE_FILENAME, "wb") as file:
98
98
  try:
99
- cloudpickle.dump(
99
+ cloudpickle.dump( # pyright: ignore[reportOptionalMemberAccess]
100
100
  obj,
101
101
  file,
102
102
  **serialization_module_parameters_with_protocol,
@@ -120,7 +120,7 @@ def pickle_artifact_content(
120
120
  **artifact.metadata,
121
121
  **{
122
122
  "source_serialization_module": "joblib",
123
- "source_joblib_version_used": joblib.__version__,
123
+ "source_joblib_version_used": joblib.__version__, # pyright: ignore[reportOptionalMemberAccess]
124
124
  "source_pickle_protocol_used": serialization_module_parameters_with_protocol[
125
125
  "protocol"
126
126
  ],
@@ -128,7 +128,7 @@ def pickle_artifact_content(
128
128
  }
129
129
  with artifact.new_file(JOBLIB_FILENAME, "wb") as file:
130
130
  try:
131
- joblib.dump(
131
+ joblib.dump( # pyright: ignore[reportOptionalMemberAccess]
132
132
  obj,
133
133
  file,
134
134
  **serialization_module_parameters_with_protocol,
@@ -182,7 +182,7 @@ def unpickle_artifact_content(artifact_dir):
182
182
  " was not found. Please, make sure it's installed."
183
183
  )
184
184
  with open(f"{artifact_dir}/{DILL_FILENAME}", "rb") as file:
185
- input_value = dill.load(file)
185
+ input_value = dill.load(file) # pyright: ignore[reportOptionalMemberAccess]
186
186
  return input_value
187
187
  elif os.path.exists(f"{artifact_dir}/{CLOUDPICKLE_FILENAME}"):
188
188
  if not has_cloudpickle:
@@ -191,7 +191,7 @@ def unpickle_artifact_content(artifact_dir):
191
191
  " module was not found. Please, make sure it's installed."
192
192
  )
193
193
  with open(f"{artifact_dir}/{CLOUDPICKLE_FILENAME}", "rb") as file:
194
- input_value = cloudpickle.load(file)
194
+ input_value = cloudpickle.load(file) # pyright: ignore[reportOptionalMemberAccess]
195
195
  return input_value
196
196
  elif os.path.exists(f"{artifact_dir}/{JOBLIB_FILENAME}"):
197
197
  if not has_joblib:
@@ -200,7 +200,7 @@ def unpickle_artifact_content(artifact_dir):
200
200
  " was not found. Please, make sure it's installed."
201
201
  )
202
202
  with open(f"{artifact_dir}/{JOBLIB_FILENAME}", "rb") as file:
203
- input_value = joblib.load(file)
203
+ input_value = joblib.load(file) # pyright: ignore[reportOptionalMemberAccess]
204
204
  return input_value
205
205
  elif os.path.exists(f"{artifact_dir}/{PICKLE_FILENAME}"):
206
206
  with open(f"{artifact_dir}/{PICKLE_FILENAME}", "rb") as file:
@@ -0,0 +1 @@
1
+ __version__ = "0.28.6"
@@ -1,17 +1,31 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: dagster-wandb
3
- Version: 0.24.2
3
+ Version: 0.28.6
4
4
  Summary: Package for wandb Dagster components.
5
5
  Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-wandb
6
6
  Author: Dagster Labs
7
7
  Author-email: hello@dagsterlabs.com
8
8
  License: Apache-2.0
9
- Classifier: Programming Language :: Python :: 3.8
10
- Classifier: Programming Language :: Python :: 3.9
11
9
  Classifier: Programming Language :: Python :: 3.10
12
10
  Classifier: Programming Language :: Python :: 3.11
13
11
  Classifier: License :: OSI Approved :: Apache Software License
14
12
  Classifier: Operating System :: OS Independent
15
- Requires-Python: >=3.8,<3.13
16
- Provides-Extra: dev
13
+ Requires-Python: >=3.10,<3.14
17
14
  License-File: LICENSE
15
+ Requires-Dist: dagster==1.12.6
16
+ Requires-Dist: wandb<1.0,>=0.15.11
17
+ Provides-Extra: dev
18
+ Requires-Dist: cloudpickle; extra == "dev"
19
+ Requires-Dist: joblib; extra == "dev"
20
+ Requires-Dist: callee; extra == "dev"
21
+ Requires-Dist: dill; extra == "dev"
22
+ Dynamic: author
23
+ Dynamic: author-email
24
+ Dynamic: classifier
25
+ Dynamic: home-page
26
+ Dynamic: license
27
+ Dynamic: license-file
28
+ Dynamic: provides-extra
29
+ Dynamic: requires-dist
30
+ Dynamic: requires-python
31
+ Dynamic: summary
@@ -1,4 +1,4 @@
1
- dagster==1.8.2
1
+ dagster==1.12.6
2
2
  wandb<1.0,>=0.15.11
3
3
 
4
4
  [dev]
@@ -1,11 +1,10 @@
1
1
  from pathlib import Path
2
- from typing import Dict
3
2
 
4
3
  from setuptools import find_packages, setup
5
4
 
6
5
 
7
6
  def get_version() -> str:
8
- version: Dict[str, str] = {}
7
+ version: dict[str, str] = {}
9
8
  with open(Path(__file__).parent / "dagster_wandb/version.py", encoding="utf8") as fp:
10
9
  exec(fp.read(), version)
11
10
 
@@ -24,8 +23,6 @@ setup(
24
23
  description="Package for wandb Dagster components.",
25
24
  url="https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-wandb",
26
25
  classifiers=[
27
- "Programming Language :: Python :: 3.8",
28
- "Programming Language :: Python :: 3.9",
29
26
  "Programming Language :: Python :: 3.10",
30
27
  "Programming Language :: Python :: 3.11",
31
28
  "License :: OSI Approved :: Apache Software License",
@@ -33,9 +30,9 @@ setup(
33
30
  ],
34
31
  packages=find_packages(exclude=["dagster_wandb_tests*"]),
35
32
  include_package_data=True,
36
- python_requires=">=3.8,<3.13",
33
+ python_requires=">=3.10,<3.14",
37
34
  install_requires=[
38
- "dagster==1.8.2",
35
+ "dagster==1.12.6",
39
36
  "wandb>=0.15.11,<1.0",
40
37
  ],
41
38
  extras_require={"dev": ["cloudpickle", "joblib", "callee", "dill"]},
@@ -1,19 +0,0 @@
1
- from dagster._core.libraries import DagsterLibraryRegistry
2
-
3
- from .io_manager import WandbArtifactsIOManagerError, wandb_artifacts_io_manager
4
- from .launch.ops import run_launch_agent, run_launch_job
5
- from .resources import wandb_resource
6
- from .types import SerializationModule, WandbArtifactConfiguration
7
- from .version import __version__
8
-
9
- DagsterLibraryRegistry.register("dagster-wandb", __version__)
10
-
11
- __all__ = [
12
- "WandbArtifactsIOManagerError",
13
- "SerializationModule",
14
- "wandb_resource",
15
- "wandb_artifacts_io_manager",
16
- "WandbArtifactConfiguration",
17
- "run_launch_agent",
18
- "run_launch_job",
19
- ]
@@ -1 +0,0 @@
1
- __version__ = "0.24.2"
File without changes
File without changes
File without changes