wandb 0.21.2__py3-none-macosx_12_0_x86_64.whl → 0.21.3__py3-none-macosx_12_0_x86_64.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.
wandb/__init__.py CHANGED
@@ -10,7 +10,7 @@ For reference documentation, see https://docs.wandb.com/ref/python.
10
10
  """
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.21.2"
13
+ __version__ = "0.21.3"
14
14
 
15
15
 
16
16
  from wandb.errors import Error
wandb/__init__.pyi CHANGED
@@ -107,7 +107,7 @@ if TYPE_CHECKING:
107
107
  import wandb
108
108
  from wandb.plot import CustomChart
109
109
 
110
- __version__: str = "0.21.2"
110
+ __version__: str = "0.21.3"
111
111
 
112
112
  run: Run | None
113
113
  config: wandb_config.Config
wandb/bin/wandb-core CHANGED
Binary file
wandb/cli/cli.py CHANGED
@@ -1985,7 +1985,7 @@ def create(
1985
1985
  base_image=base_image,
1986
1986
  dockerfile=dockerfile,
1987
1987
  services=services,
1988
- schema=schema_dict,
1988
+ schema=schema_dict if schema else None,
1989
1989
  )
1990
1990
  if not artifact:
1991
1991
  wandb.termerror("Job creation failed")
@@ -54,8 +54,9 @@ from wandb.sdk.data_types._dtypes import Type as WBType
54
54
  from wandb.sdk.data_types._dtypes import TypeRegistry
55
55
  from wandb.sdk.internal.internal_api import Api as InternalApi
56
56
  from wandb.sdk.internal.thread_local_settings import _thread_local_api_settings
57
- from wandb.sdk.lib import filesystem, retry, runid, telemetry
57
+ from wandb.sdk.lib import retry, runid, telemetry
58
58
  from wandb.sdk.lib.deprecate import deprecate
59
+ from wandb.sdk.lib.filesystem import check_exists, system_preferred_path
59
60
  from wandb.sdk.lib.hashutil import B64MD5, b64_to_hex_id, md5_file_b64
60
61
  from wandb.sdk.lib.paths import FilePathStr, LogicalPath, StrPath, URIStr
61
62
  from wandb.sdk.lib.runid import generate_id
@@ -1967,7 +1968,7 @@ class Artifact:
1967
1968
  Raises:
1968
1969
  ArtifactNotLoggedError: If the artifact is not logged.
1969
1970
  """
1970
- root = FilePathStr(str(root or self._default_root()))
1971
+ root = FilePathStr(root or self._default_root())
1971
1972
  self._add_download_root(root)
1972
1973
 
1973
1974
  # TODO: download artifacts using core when implemented
@@ -2324,8 +2325,7 @@ class Artifact:
2324
2325
  # In case we're on a system where the artifact dir has a name corresponding to
2325
2326
  # an unexpected filesystem, we'll check for alternate roots. If one exists we'll
2326
2327
  # use that, otherwise we'll fall back to the system-preferred path.
2327
- path = filesystem.check_exists(root) or filesystem.system_preferred_path(root)
2328
- return FilePathStr(str(path))
2328
+ return FilePathStr(check_exists(root) or system_preferred_path(root))
2329
2329
 
2330
2330
  def _add_download_root(self, dir_path: str) -> None:
2331
2331
  self._download_roots.add(os.path.abspath(dir_path))
@@ -87,7 +87,7 @@ class ArtifactFileCache:
87
87
  ) -> tuple[FilePathStr, bool, Opener]:
88
88
  opener = self._opener(path, size, skip_cache=skip_cache)
89
89
  hit = path.is_file() and path.stat().st_size == size
90
- return FilePathStr(str(path)), hit, opener
90
+ return FilePathStr(path), hit, opener
91
91
 
92
92
  def cleanup(
93
93
  self,
@@ -11,8 +11,8 @@ from typing import TYPE_CHECKING
11
11
  from urllib.parse import urlparse
12
12
 
13
13
  from wandb.proto.wandb_deprecated import Deprecated
14
- from wandb.sdk.lib import filesystem
15
14
  from wandb.sdk.lib.deprecate import deprecate
15
+ from wandb.sdk.lib.filesystem import copy_or_overwrite_changed
16
16
  from wandb.sdk.lib.hashutil import (
17
17
  B64MD5,
18
18
  ETag,
@@ -184,13 +184,11 @@ class ArtifactManifestEntry:
184
184
  executor=executor,
185
185
  multipart=multipart,
186
186
  )
187
-
188
- if skip_cache:
189
- return FilePathStr(dest_path)
190
- else:
191
- return FilePathStr(
192
- str(filesystem.copy_or_overwrite_changed(cache_path, dest_path))
193
- )
187
+ return FilePathStr(
188
+ dest_path
189
+ if skip_cache
190
+ else copy_or_overwrite_changed(cache_path, dest_path)
191
+ )
194
192
 
195
193
  def ref_target(self) -> FilePathStr | URIStr:
196
194
  """Get the reference URL that is targeted by this artifact entry.
@@ -198,7 +198,7 @@ class GCSHandler(StorageHandler):
198
198
  posix_ref = posix_path / relpath
199
199
  return ArtifactManifestEntry(
200
200
  path=posix_name,
201
- ref=URIStr(f"{self._scheme}://{str(posix_ref)}"),
201
+ ref=URIStr(f"{self._scheme}://{posix_ref}"),
202
202
  digest=obj.etag,
203
203
  size=obj.size,
204
204
  extra={"versionID": obj.generation},
@@ -171,6 +171,29 @@ def _replace_refs_and_allofs(schema: dict, defs: Optional[dict]) -> dict:
171
171
  return ret
172
172
 
173
173
 
174
+ def _prepare_schema(schema: Any) -> dict:
175
+ """Prepare a schema for validation.
176
+
177
+ This function prepares a schema for validation by:
178
+ 1. Converting a Pydantic model instance or class to a dict
179
+ 2. Replacing $ref with their associated definition in defs
180
+ 3. Removing any "allOf" lists that only have one item, "lifting" the item up
181
+
182
+ We support both an instance of a pydantic BaseModel class (e.g. schema=MySchema(...))
183
+ or the BaseModel class itself (e.g. schema=MySchema)
184
+ """
185
+ if hasattr(schema, "model_json_schema") and callable(
186
+ schema.model_json_schema # type: ignore
187
+ ):
188
+ schema = schema.model_json_schema()
189
+ if not isinstance(schema, dict):
190
+ raise LaunchError(
191
+ "schema must be a dict, Pydantic model instance, or Pydantic model class."
192
+ )
193
+ defs = schema.pop("$defs", None)
194
+ return _replace_refs_and_allofs(schema, defs)
195
+
196
+
174
197
  def _validate_schema(schema: dict) -> None:
175
198
  jsonschema = get_module(
176
199
  "jsonschema",
@@ -210,18 +233,7 @@ def handle_config_file_input(
210
233
  dest,
211
234
  )
212
235
  if schema:
213
- # This supports both an instance of a pydantic BaseModel class (e.g. schema=MySchema(...))
214
- # or the BaseModel class itself (e.g. schema=MySchema)
215
- if hasattr(schema, "model_json_schema") and callable(
216
- schema.model_json_schema # type: ignore
217
- ):
218
- schema = schema.model_json_schema()
219
- if not isinstance(schema, dict):
220
- raise LaunchError(
221
- "schema must be a dict, Pydantic model instance, or Pydantic model class."
222
- )
223
- defs = schema.pop("$defs", None)
224
- schema = _replace_refs_and_allofs(schema, defs)
236
+ schema = _prepare_schema(schema)
225
237
  _validate_schema(schema)
226
238
  arguments = JobInputArguments(
227
239
  include=include,
@@ -251,18 +263,7 @@ def handle_run_config_input(
251
263
  when a run is created.
252
264
  """
253
265
  if schema:
254
- # This supports both an instance of a pydantic BaseModel class (e.g. schema=MySchema(...))
255
- # or the BaseModel class itself (e.g. schema=MySchema)
256
- if hasattr(schema, "model_json_schema") and callable(
257
- schema.model_json_schema # type: ignore
258
- ):
259
- schema = schema.model_json_schema()
260
- if not isinstance(schema, dict):
261
- raise LaunchError(
262
- "schema must be a dict, Pydantic model instance, or Pydantic model class."
263
- )
264
- defs = schema.pop("$defs", None)
265
- schema = _replace_refs_and_allofs(schema, defs)
266
+ schema = _prepare_schema(schema)
266
267
  _validate_schema(schema)
267
268
  arguments = JobInputArguments(
268
269
  include=include,
@@ -3,7 +3,7 @@ META_SCHEMA = {
3
3
  "properties": {
4
4
  "type": {
5
5
  "type": "string",
6
- "enum": ["boolean", "integer", "number", "string", "object"],
6
+ "enum": ["boolean", "integer", "number", "string", "object", "array"],
7
7
  },
8
8
  "title": {"type": "string"},
9
9
  "description": {"type": "string"},
@@ -11,6 +11,11 @@ META_SCHEMA = {
11
11
  "enum": {"type": "array", "items": {"type": ["integer", "number", "string"]}},
12
12
  "properties": {"type": "object", "patternProperties": {".*": {"$ref": "#"}}},
13
13
  "allOf": {"type": "array", "items": {"$ref": "#"}},
14
+ # Array-specific properties
15
+ "items": {"$ref": "#"},
16
+ "uniqueItems": {"type": "boolean"},
17
+ "minItems": {"type": "integer", "minimum": 0},
18
+ "maxItems": {"type": "integer", "minimum": 0},
14
19
  },
15
20
  "allOf": [
16
21
  {
@@ -35,6 +40,31 @@ META_SCHEMA = {
35
40
  }
36
41
  },
37
42
  },
43
+ {
44
+ "if": {"properties": {"type": {"const": "array"}}},
45
+ "then": {
46
+ "required": ["items"],
47
+ "properties": {
48
+ "items": {
49
+ "properties": {
50
+ "type": {"enum": ["integer", "number", "string"]},
51
+ "enum": {
52
+ "type": "array",
53
+ "items": {"type": ["integer", "number", "string"]},
54
+ },
55
+ "title": {"type": "string"},
56
+ "description": {"type": "string"},
57
+ "format": {"type": "string"},
58
+ },
59
+ "required": ["type", "enum"],
60
+ "unevaluatedProperties": False,
61
+ },
62
+ "uniqueItems": {"type": "boolean"},
63
+ "minItems": {"type": "integer", "minimum": 0},
64
+ "maxItems": {"type": "integer", "minimum": 0},
65
+ },
66
+ },
67
+ },
38
68
  ],
39
69
  "unevaluatedProperties": False,
40
70
  }
wandb/sdk/lib/paths.py CHANGED
@@ -1,18 +1,20 @@
1
+ from __future__ import annotations
2
+
1
3
  import os
2
4
  import platform
3
5
  from functools import wraps
4
6
  from pathlib import PurePath, PurePosixPath
5
- from typing import Any, NewType, Union
7
+ from typing import Any, Union
8
+
9
+ from typing_extensions import TypeAlias
6
10
 
7
11
  # Path _inputs_ should generally accept any kind of path. This is named the same and
8
12
  # modeled after the hint defined in the Python standard library's `typeshed`:
9
13
  # https://github.com/python/typeshed/blob/0b1cd5989669544866213807afa833a88f649ee7/stdlib/_typeshed/__init__.pyi#L56-L65
10
- StrPath = Union[str, "os.PathLike[str]"]
11
-
12
- # A native path to a file on a local filesystem.
13
- FilePathStr = NewType("FilePathStr", str)
14
+ StrPath: TypeAlias = Union[str, "os.PathLike[str]"]
14
15
 
15
- URIStr = NewType("URIStr", str)
16
+ FilePathStr: TypeAlias = str #: A native path to a file on a local filesystem.
17
+ URIStr: TypeAlias = str
16
18
 
17
19
 
18
20
  class LogicalPath(str):
@@ -54,7 +56,7 @@ class LogicalPath(str):
54
56
  # will result in different outputs on different platforms; however, it doesn't alter
55
57
  # absolute paths or check for prohibited characters etc.
56
58
 
57
- def __new__(cls, path: StrPath) -> "LogicalPath":
59
+ def __new__(cls, path: StrPath) -> LogicalPath:
58
60
  if isinstance(path, LogicalPath):
59
61
  return super().__new__(cls, path)
60
62
  if hasattr(path, "as_posix"):
@@ -77,30 +79,30 @@ class LogicalPath(str):
77
79
  """Convert this path to a PurePosixPath."""
78
80
  return PurePosixPath(self)
79
81
 
80
- def __getattr__(self, attr: str) -> Any:
82
+ def __getattr__(self, name: str) -> Any:
81
83
  """Act like a subclass of PurePosixPath for all methods not defined on str."""
82
84
  try:
83
- result = getattr(self.to_path(), attr)
84
- except AttributeError as e:
85
- raise AttributeError(f"LogicalPath has no attribute {attr!r}") from e
85
+ attr = getattr(self.to_path(), name)
86
+ except AttributeError:
87
+ classname = type(self).__qualname__
88
+ raise AttributeError(f"{classname!r} has no attribute {name!r}") from None
86
89
 
87
- if isinstance(result, PurePosixPath):
88
- return LogicalPath(result)
90
+ if isinstance(attr, PurePosixPath):
91
+ return LogicalPath(attr)
89
92
 
90
93
  # If the result is a callable (a method), wrap it so that it has the same
91
94
  # behavior: if the call result returns a PurePosixPath, return a LogicalPath.
92
- if callable(result):
95
+ if callable(fn := attr):
93
96
 
94
- @wraps(result)
97
+ @wraps(fn)
95
98
  def wrapper(*args: Any, **kwargs: Any) -> Any:
96
- inner_result = result(*args, **kwargs)
97
- if isinstance(inner_result, PurePosixPath):
98
- return LogicalPath(inner_result)
99
- return inner_result
99
+ if isinstance(res := fn(*args, **kwargs), PurePosixPath):
100
+ return LogicalPath(res)
101
+ return res
100
102
 
101
103
  return wrapper
102
- return result
104
+ return attr
103
105
 
104
- def __truediv__(self, other: StrPath) -> "LogicalPath":
106
+ def __truediv__(self, other: StrPath) -> LogicalPath:
105
107
  """Act like a PurePosixPath for the / operator, but return a LogicalPath."""
106
108
  return LogicalPath(self.to_path() / LogicalPath(other))
wandb/sdk/wandb_run.py CHANGED
@@ -2610,7 +2610,7 @@ class Run:
2610
2610
  ) -> Artifact:
2611
2611
  job_artifact = InternalArtifact(name, job_builder.JOB_ARTIFACT_TYPE)
2612
2612
  if patch_path and os.path.exists(patch_path):
2613
- job_artifact.add_file(FilePathStr(str(patch_path)), "diff.patch")
2613
+ job_artifact.add_file(FilePathStr(patch_path), "diff.patch")
2614
2614
  with job_artifact.new_file("requirements.frozen.txt") as f:
2615
2615
  f.write("\n".join(installed_packages_list))
2616
2616
  with job_artifact.new_file("wandb-job.json") as f:
wandb/sdk/wandb_setup.py CHANGED
@@ -183,8 +183,8 @@ class _WandbSetup:
183
183
  }
184
184
 
185
185
  return (
186
- set(singleton_env.keys()) == set(os_env.keys()) #
187
- and set(singleton_env.values()) == set(os_env.values())
186
+ set(singleton_env.keys()) != set(os_env.keys()) #
187
+ or set(singleton_env.values()) != set(os_env.values())
188
188
  )
189
189
 
190
190
  def _load_settings(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: wandb
3
- Version: 0.21.2
3
+ Version: 0.21.3
4
4
  Summary: A CLI and library for interacting with the Weights & Biases API.
5
5
  Project-URL: Source, https://github.com/wandb/wandb
6
6
  Project-URL: Bug Reports, https://github.com/wandb/wandb/issues
@@ -47,7 +47,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
47
47
  Classifier: Topic :: System :: Logging
48
48
  Classifier: Topic :: System :: Monitoring
49
49
  Requires-Python: >=3.8
50
- Requires-Dist: click!=8.0.0,>=7.1
50
+ Requires-Dist: click>=8.0.1
51
51
  Requires-Dist: eval-type-backport; python_version < '3.10'
52
52
  Requires-Dist: gitpython!=3.1.29,>=1.0.0
53
53
  Requires-Dist: packaging
@@ -1,15 +1,10 @@
1
1
  package_readme.md,sha256=U9047nyMDICgctm1HLm4HfXwFnFKsEn2m77hsYPUZ1I,4298
2
- wandb-0.21.2.dist-info/RECORD,,
3
- wandb-0.21.2.dist-info/WHEEL,sha256=EAvjAzW29_2mcLqDTG7Bv-ecX-7vFr5-gmnUhFLBSwc,102
4
- wandb-0.21.2.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
5
- wandb-0.21.2.dist-info/METADATA,sha256=Em3fwcRKRLmCCxH81amjaAmKAwnzo4C1mTyF4kYM1KM,10250
6
- wandb-0.21.2.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
7
2
  wandb/env.py,sha256=DuzNj6MX0DRDQ8Y_t80jTLC3wiroLZPxA7otwASoE44,14012
8
- wandb/__init__.pyi,sha256=Xb2lWTanpKH1Q0qhUoJWkLF0KbKCcHec3cfvUP_oCWM,46397
3
+ wandb/__init__.pyi,sha256=6Ue5DZ0TuA0ePk4x3mqB92oYAs0qpSN97oZSmGDPEy4,46397
9
4
  wandb/util.py,sha256=pLo26E7AbBaGFpWra5Vumm2JENYTaDCpzWMZaQAzihY,65381
10
5
  wandb/wandb_run.py,sha256=RRjZweHEMpfTyQghzOrSZdmViIItT9wLJYzcZ4nlvjk,128
11
6
  wandb/_iterutils.py,sha256=NX6MaIE3JzPXsqKNXUKdnpIlX0spGG8HwGIQt5VASrk,2400
12
- wandb/__init__.py,sha256=J5vg9u36X10RdNDsj7FaFdZiy80SI7Hs-pAG6ADXB6g,6771
7
+ wandb/__init__.py,sha256=ETf3KRXvmJSJ0PcRetJjkk98iZNPly_nk0FsH5xKj_0,6771
13
8
  wandb/data_types.py,sha256=M-wqAO0FtIqvj28556u3h4nzSwlRcbxhXoX0B9jlJSo,2283
14
9
  wandb/wandb_controller.py,sha256=SksJdgwn14PpnUoIaBjJ9Ki4Nksl9BpQGGn42hT0xZg,24936
15
10
  wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -103,7 +98,7 @@ wandb/proto/v3/wandb_base_pb2.py,sha256=_nsr_HW4Fdz62-KiXGo6Dw0_9bwdXz07auZkkH2Q
103
98
  wandb/proto/v3/wandb_internal_pb2.py,sha256=hfl3IkpolrHcs2YsU2RCx8VDXVVh245X_u50eM4-F1U,117096
104
99
  wandb/proto/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
100
  wandb/proto/v3/wandb_telemetry_pb2.py,sha256=YUFe_KdIEM8Pq7lBnlsPefMgEOOjjqTLArRC_Wpsmwc,14518
106
- wandb/bin/wandb-core,sha256=o6PoB1JpCoZJQatOVdS1I7FGPRALgRI2dtXp2e2LT0g,42512656
101
+ wandb/bin/wandb-core,sha256=Yhf9klVy64vaXpsB7L3hEcaR6o1HZsAQXNnqyCfk7dU,42512656
107
102
  wandb/bin/gpu_stats,sha256=tkFw8BswSm3X8W--Klsm_jKQ4Y7xoshIxxpDmzIPA1s,9284336
108
103
  wandb/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
104
  wandb/integration/weave/weave.py,sha256=8V62eSOJ676v4QZCflESlZx1nX2KYjI7MbHjIzXID_E,1938
@@ -205,12 +200,12 @@ wandb/old/summary.py,sha256=FZrkTyycUy6MRY1n4q7713rlTV7h-CMr8_kNoeb-wzY,13856
205
200
  wandb/old/settings.py,sha256=Cug-8ImuV4_x8HFGOnlATuh0iJ4JOUfmymguPFqlXvE,6482
206
201
  wandb/cli/beta.py,sha256=Mq-5A-XXH3VLIvhWPxA84DFPeirNMYGPSQ53H78Xkjc,5187
207
202
  wandb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
- wandb/cli/cli.py,sha256=rBjwynxvq6LbubTO5m1_WfCakzSG_N8aTECuakLbIZA,95025
203
+ wandb/cli/cli.py,sha256=3_2SuxOv4a9Ha9SuGvVuc3RFvWueb0wuJQy8HrXFzww,95045
209
204
  wandb/mpmain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
205
  wandb/mpmain/__main__.py,sha256=bLhspPeHQvNMyRNR7xi9v-02XfW1mhJY2yBWI3bYtbg,57
211
206
  wandb/sdk/wandb_config.py,sha256=uvbpaV3yObsYsaYedYde95B4CzDZBlaU3zOPJ7tPkhs,10692
212
207
  wandb/sdk/wandb_alerts.py,sha256=SwBPBiXRxknMTMGbsVoMMWqWK65UWMcKAdTWZtdwAeo,193
213
- wandb/sdk/wandb_run.py,sha256=6s_noYzR9cTXZAofc-OHbKFo9md8cmkD6D6VlDz-L3c,146748
208
+ wandb/sdk/wandb_run.py,sha256=lE3CC5MME5KXiW5S_3OYHi9WxFQZ9IU-VmMdXzfh044,146743
214
209
  wandb/sdk/wandb_sync.py,sha256=GNC8xYqT56ws4aw6Vd_mV_Ck-InEbqnyioSqHIybDug,2106
215
210
  wandb/sdk/__init__.py,sha256=N-GTAC0AzbZF2J8RzB33DTmYk9u-jubllCwvhWrPgsE,813
216
211
  wandb/sdk/wandb_init.py,sha256=ga7mq1njTU4XlamnUvo_aEx4LqLHE_gbNQvE6VhXCmQ,60890
@@ -222,7 +217,7 @@ wandb/sdk/wandb_login.py,sha256=JY0GTqi8taj8im7yPE9bjnbMIhCNmBmpP2Z4tYRPdUc,1132
222
217
  wandb/sdk/wandb_metric.py,sha256=HihH23rZWw6AOH5Vn4KsFREMTFJGkjYqUBhqfOlHg2I,3346
223
218
  wandb/sdk/wandb_require.py,sha256=MYzhsbMLjXVoGRHxssg802w79BPsoyEbBXuZ6cffjCs,2713
224
219
  wandb/sdk/wandb_sweep.py,sha256=6PfqlKi0_2g6pt_hu-sqgCgO5YyCRppBbLwBxw8r2JY,3982
225
- wandb/sdk/wandb_setup.py,sha256=rq45q7xPqmEtt8ivQ5_trqo3jvpFPtZRJMH42QblHIg,19116
220
+ wandb/sdk/wandb_setup.py,sha256=BanGtCYoQSStnXFJkMrDO9GgN16Z-GEi4Q5TR5Qa5ls,19115
226
221
  wandb/sdk/wandb_require_helpers.py,sha256=ZmKv5aXXHDTTU6nYHMLKW4_pt9X-PlaMtbRJl77kHX8,1331
227
222
  wandb/sdk/integration_utils/data_logging.py,sha256=DDFtDaUu50aeTTgxCHHYd2f85guqqf2xfEOburRlwwQ,19533
228
223
  wandb/sdk/integration_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -239,13 +234,13 @@ wandb/sdk/artifacts/artifact_state.py,sha256=JbPVinN8Vaq16IKdPtFmiYbBdBtCKLDMVU_
239
234
  wandb/sdk/artifacts/_factories.py,sha256=gs_fTayk46y5MwLZxhvsx-UekuNKJYX7ZfLaWsk0OTs,543
240
235
  wandb/sdk/artifacts/artifact_ttl.py,sha256=kD_JfKVcQzZlif6PF-WKnemucWPwcISq8hX6Y8lKtY8,122
241
236
  wandb/sdk/artifacts/storage_layout.py,sha256=JeI2uVqreJynIVNhFVvh7Acm-Wem25ueFQvcxg_svZU,109
242
- wandb/sdk/artifacts/artifact.py,sha256=2PAchYvXVgPdaKIVkM2iVWYbgqeRKYZltEChKZpgOwI,103241
237
+ wandb/sdk/artifacts/artifact.py,sha256=HydpYBKmYlwNAkDI_eflXrgPWeuvn9fj3XNlUSlwQUA,103250
243
238
  wandb/sdk/artifacts/_validators.py,sha256=ZDAaFH2LJ_OlxQ2B4ejryx4RFZHfKQKwbuX3FL-DsjM,10948
244
239
  wandb/sdk/artifacts/_internal_artifact.py,sha256=Jx79CVB5xfuJCXTmmRIN8yegqknsqKNpKJa-WJmCO3w,1975
245
- wandb/sdk/artifacts/artifact_file_cache.py,sha256=9gd30F16978N54w26_rp9_mknOBH6ABTYvgQCnUblxw,9879
240
+ wandb/sdk/artifacts/artifact_file_cache.py,sha256=pTl4ah6_Bv_vX24tA_jEa9ZPpkF3UdW7TUtRYD2jluY,9874
246
241
  wandb/sdk/artifacts/artifact_saver.py,sha256=RwJIveLn87UE3_tk5zAJ8ry-TAvxwTS94yNAChwhLAk,9654
247
242
  wandb/sdk/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
- wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=NBWfMpZ3Aj243LgbwPjGR8_HzLNcsOLzWuVmj4t__MU,8722
243
+ wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=pA-3qBKpjOM3axaSyn131Pu1ikSZIJUxDGYKzm2eF0o,8693
249
244
  wandb/sdk/artifacts/artifact_manifest.py,sha256=ZBdtazpTXt0X_8F4y6O-SDmrTY69hCp0HckCXbnZkII,2534
250
245
  wandb/sdk/artifacts/artifact_instance_cache.py,sha256=atSUDvKjkp6by6QY0w2FLMrFUg9UKc8TIrMVWGauV64,501
251
246
  wandb/sdk/artifacts/exceptions.py,sha256=w0ScWmElSSHHFeh_HQ-Wae4P1U1RMztDCXN0PhyejbE,2333
@@ -264,7 +259,7 @@ wandb/sdk/artifacts/storage_handlers/multi_handler.py,sha256=GZ9wAfVSuZE3IGL5F5o
264
259
  wandb/sdk/artifacts/storage_handlers/azure_handler.py,sha256=Y0B79t9xDrXo361O9x6VFPQWJOozIPlzQRaGx6768Sw,8333
265
260
  wandb/sdk/artifacts/storage_handlers/local_file_handler.py,sha256=SiRfKwfr9brkm0tDhMDpgxhHH6FOlasRaliznL9zyN0,5470
266
261
  wandb/sdk/artifacts/storage_handlers/http_handler.py,sha256=sdzBqZyQ_6WKtlcqIfxE6QzDNWy1Kw7rKp4f0OCTYuw,4033
267
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256=hGslEr9QYi0Jp5_C5fxv7CaRu219tdmldyayncze0vc,8514
262
+ wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256=V2ttv1qsOP5Ns8aN-l5qt1J1OF1UKEUBos0EvW_SBD0,8509
268
263
  wandb/sdk/artifacts/storage_handlers/tracking_handler.py,sha256=4MFqhnVciygmANKOrMSZwew4TXAFg5Q7zAZFz0FbpWM,2487
269
264
  wandb/sdk/artifacts/artifact_manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
265
  wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py,sha256=nQt76-WzeO1L8NoMc7DAuwWE4LhNrgL6Fn9eaOPChX0,3497
@@ -388,10 +383,10 @@ wandb/sdk/launch/builder/docker_builder.py,sha256=0HbPxwWuCHXogmIc6o18nvBaHIx-xc
388
383
  wandb/sdk/launch/builder/noop.py,sha256=A--UUfqkcZxCpTmBKbL6JvkE_emcJRXIkAhAfVv5u7k,1900
389
384
  wandb/sdk/launch/builder/templates/_wandb_bootstrap.py,sha256=AuI7GXUoW3MdPWVTkSjhxZQTmW4Rk_nTNllHbZzfoDQ,7316
390
385
  wandb/sdk/launch/builder/templates/dockerfile.py,sha256=X8D6n6tyyh69oNHeFiUp-d8ClEtMpHSjwk45N12CR68,2264
391
- wandb/sdk/launch/inputs/internal.py,sha256=CyBzMcBtKQCy2KTI6OlV9XYxoDLD_rUFgZ1CclsKEXA,10036
386
+ wandb/sdk/launch/inputs/internal.py,sha256=liYeKB9yE1ckc0rv6kbKFIk9TloCM59h_HLGwoUdPCs,9807
392
387
  wandb/sdk/launch/inputs/files.py,sha256=BWGDmAfDPLja7zz0bUzYLaF3wH4cTPesD9LqDuJRUoU,4685
393
388
  wandb/sdk/launch/inputs/manage.py,sha256=O0IsTWhjUftihohRfK7DkT186LjHMMcE2NSMeG8IFBY,5003
394
- wandb/sdk/launch/inputs/schema.py,sha256=pjAT5foIVeG2lOYNty8AiYtSlxz_DXXuoTz6mNuEXB0,1456
389
+ wandb/sdk/launch/inputs/schema.py,sha256=OvLqb8yBI4KsuT6aFp9_M361ACVjFQARUJqqEuicO8w,2779
395
390
  wandb/sdk/projects/_generated/rename_project.py,sha256=gwiq_rlA55YUT-ZB6mukewxMmi7jSbMr1drZMKpFV98,595
396
391
  wandb/sdk/projects/_generated/enums.py,sha256=vPRi0TPBkZS4D4to-WzhesolsPj3a2B1Okr1xmjRy5k,124
397
392
  wandb/sdk/projects/_generated/upsert_registry_project.py,sha256=yNkkeiImzvEbwL9yeJLIePZoBEfVuJB-u8VZFgixymo,597
@@ -430,7 +425,7 @@ wandb/sdk/lib/deprecate.py,sha256=6M1Eb07bhgeDt0XuYFOJLMjY0B2jUZVQIYSLs7SQPzQ,81
430
425
  wandb/sdk/lib/exit_hooks.py,sha256=_4oozaRQCJi8NJfZvHsA8livvFb0trZKLOGB8_UcHGk,1540
431
426
  wandb/sdk/lib/server.py,sha256=dn0RXjAnpmigAULLyq75XHYyHxw17MLCJ9fhPq2v22I,1623
432
427
  wandb/sdk/lib/asyncio_manager.py,sha256=ftMrz3qAGtOkfLoo-4xeoUj3etuayw7XXStPWHmM43U,8760
433
- wandb/sdk/lib/paths.py,sha256=YiEE5mkYB5ahMuI4C27IsNvejC3z6MI5JPW1iISi864,4529
428
+ wandb/sdk/lib/paths.py,sha256=-5mtOUwtf7LUrM4NxQWqi0HGsNSHujD0QOhLa0HXzFo,4565
434
429
  wandb/sdk/lib/credentials.py,sha256=WmVdzL1rFy7S0WIHf1ZYd98_eaHTxPKUobReRSPQgBM,4737
435
430
  wandb/sdk/lib/runid.py,sha256=Qa-5ft4B85YUazkV_18OYwf9JhMaAVp0JAInZzxzX5o,392
436
431
  wandb/sdk/lib/redirect.py,sha256=X4JHJ3W5-kG25aOYUyuYc8TBgVAKwhpV6yTaFWaR7tI,27373
@@ -902,3 +897,8 @@ wandb/vendor/promise-2.3.0/wandb_promise/schedulers/asyncio.py,sha256=Z94PwkAXd8
902
897
  wandb/vendor/promise-2.3.0/wandb_promise/schedulers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
903
898
  wandb/analytics/__init__.py,sha256=WG_Mh20Hr8d3vDmGMcfDXCMEIew3uzDYZAJwFsrbAug,50
904
899
  wandb/analytics/sentry.py,sha256=XFrWH5ZBE4l2mS2aGIMRDG65TnVcFzsjthvnuqPqJDs,8440
900
+ wandb-0.21.3.dist-info/RECORD,,
901
+ wandb-0.21.3.dist-info/WHEEL,sha256=EAvjAzW29_2mcLqDTG7Bv-ecX-7vFr5-gmnUhFLBSwc,102
902
+ wandb-0.21.3.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
903
+ wandb-0.21.3.dist-info/METADATA,sha256=pdPj-uVCk7VXWSMS41uu-XQMGjmri-ThueGrYuB63v4,10244
904
+ wandb-0.21.3.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
File without changes