wandb 0.21.2__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.21.3__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.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.4
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
@@ -6,8 +6,8 @@ wandb/wandb_controller.py,sha256=SksJdgwn14PpnUoIaBjJ9Ki4Nksl9BpQGGn42hT0xZg,249
6
6
  wandb/sklearn.py,sha256=hbPkefhS39A1RRymn0nHZZmKM2TrOd4xjlkthTZe9pY,803
7
7
  wandb/trigger.py,sha256=PaitU3sX6ekGkd2R8iD6d_VtI72ypF7LaPBXh3rXY7Q,615
8
8
  wandb/data_types.py,sha256=M-wqAO0FtIqvj28556u3h4nzSwlRcbxhXoX0B9jlJSo,2283
9
- wandb/__init__.py,sha256=J5vg9u36X10RdNDsj7FaFdZiy80SI7Hs-pAG6ADXB6g,6771
10
- wandb/__init__.pyi,sha256=Xb2lWTanpKH1Q0qhUoJWkLF0KbKCcHec3cfvUP_oCWM,46397
9
+ wandb/__init__.py,sha256=ETf3KRXvmJSJ0PcRetJjkk98iZNPly_nk0FsH5xKj_0,6771
10
+ wandb/__init__.pyi,sha256=6Ue5DZ0TuA0ePk4x3mqB92oYAs0qpSN97oZSmGDPEy4,46397
11
11
  wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  wandb/jupyter.py,sha256=NEH-o2QdHfKorPmeOHORLRq25Am64GBDwuAPFz-x7uk,17323
13
13
  wandb/wandb_agent.py,sha256=kdlK_NZRZRNkjXRUha7Q-1fDOARf7v0TyIr_a-aRXKk,20868
@@ -399,7 +399,7 @@ wandb/vendor/graphql-core-1.1/wandb_graphql/language/__init__.py,sha256=47DEQpj8
399
399
  wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor.py,sha256=VzScdaIv3q8cCt95GiK3h8bDPXm8p-0wdBot8cthSuY,6247
400
400
  wandb/vendor/graphql-core-1.1/wandb_graphql/language/parser.py,sha256=da64gvknlunEC3TDgrgf74h22NpfsEPPm-OdBmof92A,20905
401
401
  wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor_meta.py,sha256=Qat5ccqiNGOHE9W7z38YGdtW2c8koBw0OUWEMxpdBhk,2980
402
- wandb/bin/wandb-core,sha256=Kt1UK1NTb80DFsyWh6qIPA6qNyEgtZ0q6WQcHtB8U9o,39452856
402
+ wandb/bin/wandb-core,sha256=awpyxrDOgd_XdqsvChk50l0WLK5FreRxzzMMhQdcAf4,39452856
403
403
  wandb/bin/gpu_stats,sha256=LomkzvvdpshSGNRzX_09mdf5w6P3KOo9U2S-Fk4Smsc,11175760
404
404
  wandb/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
405
405
  wandb/integration/xgboost/__init__.py,sha256=Pwmii-OI64seJjfwM28cS4BdkEN2_Ms_qMGdwp3QRn8,343
@@ -507,8 +507,8 @@ wandb/sdk/wandb_metric.py,sha256=HihH23rZWw6AOH5Vn4KsFREMTFJGkjYqUBhqfOlHg2I,334
507
507
  wandb/sdk/wandb_require.py,sha256=MYzhsbMLjXVoGRHxssg802w79BPsoyEbBXuZ6cffjCs,2713
508
508
  wandb/sdk/wandb_watch.py,sha256=kN5qgovHkUPyUeNypoPg7tsPg-P8AKhYD8hDx46nZas,4746
509
509
  wandb/sdk/wandb_sweep.py,sha256=6PfqlKi0_2g6pt_hu-sqgCgO5YyCRppBbLwBxw8r2JY,3982
510
- wandb/sdk/wandb_run.py,sha256=6s_noYzR9cTXZAofc-OHbKFo9md8cmkD6D6VlDz-L3c,146748
511
- wandb/sdk/wandb_setup.py,sha256=rq45q7xPqmEtt8ivQ5_trqo3jvpFPtZRJMH42QblHIg,19116
510
+ wandb/sdk/wandb_run.py,sha256=lE3CC5MME5KXiW5S_3OYHi9WxFQZ9IU-VmMdXzfh044,146743
511
+ wandb/sdk/wandb_setup.py,sha256=BanGtCYoQSStnXFJkMrDO9GgN16Z-GEi4Q5TR5Qa5ls,19115
512
512
  wandb/sdk/launch/git_reference.py,sha256=6pTVlD7-BICWoraN8PsAzCKu64GV7g_GzqMSD9w3Sos,3758
513
513
  wandb/sdk/launch/create_job.py,sha256=Hfhre_v70whBFvumC5TWiSCdLWg2C5PcElZI2bkmhu8,17754
514
514
  wandb/sdk/launch/errors.py,sha256=G86cx2IZSRBBxLE7thxcVFKzN9d4mGyvciaWRz0uWWM,275
@@ -557,9 +557,9 @@ wandb/sdk/launch/sweeps/scheduler_sweep.py,sha256=beM0go0u9xRcXW20ED8MyTqq4ol_O5
557
557
  wandb/sdk/launch/sweeps/__init__.py,sha256=Vv3WTuhqs7064cv23YevqzX8jGca9qYZ5JpdhorBk0w,906
558
558
  wandb/sdk/launch/sweeps/utils.py,sha256=T6Zr3QwEN1dl26mRDcRwlHXrZMoVNysAwqyCQ4MIU6k,10229
559
559
  wandb/sdk/launch/inputs/files.py,sha256=BWGDmAfDPLja7zz0bUzYLaF3wH4cTPesD9LqDuJRUoU,4685
560
- wandb/sdk/launch/inputs/schema.py,sha256=pjAT5foIVeG2lOYNty8AiYtSlxz_DXXuoTz6mNuEXB0,1456
560
+ wandb/sdk/launch/inputs/schema.py,sha256=OvLqb8yBI4KsuT6aFp9_M361ACVjFQARUJqqEuicO8w,2779
561
561
  wandb/sdk/launch/inputs/manage.py,sha256=O0IsTWhjUftihohRfK7DkT186LjHMMcE2NSMeG8IFBY,5003
562
- wandb/sdk/launch/inputs/internal.py,sha256=CyBzMcBtKQCy2KTI6OlV9XYxoDLD_rUFgZ1CclsKEXA,10036
562
+ wandb/sdk/launch/inputs/internal.py,sha256=liYeKB9yE1ckc0rv6kbKFIk9TloCM59h_HLGwoUdPCs,9807
563
563
  wandb/sdk/verify/verify.py,sha256=Z7-QyYaro0-I0iIv4r9X7argyq2ks_SyOl_TGE9KYHE,18258
564
564
  wandb/sdk/verify/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
565
565
  wandb/sdk/internal/thread_local_settings.py,sha256=UqD6kfjsy6mvxIWcjhd-vJWkNRCeU1whuRe_-VGIklQ,527
@@ -591,18 +591,18 @@ wandb/sdk/mailbox/__init__.py,sha256=C4x3ym_hymymKFZiI1Q0HPlGx5x5CzeKPVF229Z2V8w
591
591
  wandb/sdk/mailbox/mailbox_handle.py,sha256=HVNF7VKvMIQi5JdhwRPMyElvf5dtQCx_4zOw21Hxn6g,4011
592
592
  wandb/sdk/mailbox/response_handle.py,sha256=nRUe3tTC6-dmQAsRT2AaD3tWaQfXPZRJHgLLrIroOJ4,2816
593
593
  wandb/sdk/artifacts/artifact_instance_cache.py,sha256=atSUDvKjkp6by6QY0w2FLMrFUg9UKc8TIrMVWGauV64,501
594
- wandb/sdk/artifacts/artifact.py,sha256=2PAchYvXVgPdaKIVkM2iVWYbgqeRKYZltEChKZpgOwI,103241
594
+ wandb/sdk/artifacts/artifact.py,sha256=HydpYBKmYlwNAkDI_eflXrgPWeuvn9fj3XNlUSlwQUA,103250
595
595
  wandb/sdk/artifacts/artifact_state.py,sha256=JbPVinN8Vaq16IKdPtFmiYbBdBtCKLDMVU_ViMI8QOA,272
596
596
  wandb/sdk/artifacts/artifact_ttl.py,sha256=kD_JfKVcQzZlif6PF-WKnemucWPwcISq8hX6Y8lKtY8,122
597
597
  wandb/sdk/artifacts/_validators.py,sha256=ZDAaFH2LJ_OlxQ2B4ejryx4RFZHfKQKwbuX3FL-DsjM,10948
598
598
  wandb/sdk/artifacts/_internal_artifact.py,sha256=Jx79CVB5xfuJCXTmmRIN8yegqknsqKNpKJa-WJmCO3w,1975
599
599
  wandb/sdk/artifacts/storage_layout.py,sha256=JeI2uVqreJynIVNhFVvh7Acm-Wem25ueFQvcxg_svZU,109
600
600
  wandb/sdk/artifacts/artifact_saver.py,sha256=RwJIveLn87UE3_tk5zAJ8ry-TAvxwTS94yNAChwhLAk,9654
601
- wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=NBWfMpZ3Aj243LgbwPjGR8_HzLNcsOLzWuVmj4t__MU,8722
601
+ wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=pA-3qBKpjOM3axaSyn131Pu1ikSZIJUxDGYKzm2eF0o,8693
602
602
  wandb/sdk/artifacts/exceptions.py,sha256=w0ScWmElSSHHFeh_HQ-Wae4P1U1RMztDCXN0PhyejbE,2333
603
603
  wandb/sdk/artifacts/storage_handler.py,sha256=ebMCKXvvn7z_eYunXriTOYescstuBbNbxn7MDW9qZAw,1834
604
604
  wandb/sdk/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
605
- wandb/sdk/artifacts/artifact_file_cache.py,sha256=9gd30F16978N54w26_rp9_mknOBH6ABTYvgQCnUblxw,9879
605
+ wandb/sdk/artifacts/artifact_file_cache.py,sha256=pTl4ah6_Bv_vX24tA_jEa9ZPpkF3UdW7TUtRYD2jluY,9874
606
606
  wandb/sdk/artifacts/staging.py,sha256=QNbPQhlW-w2liQ_5ZgGJaxsp-prPrOAZ1InmCx3N9Zk,890
607
607
  wandb/sdk/artifacts/artifact_download_logger.py,sha256=bS4v544rFcTOTRTXMUSd6tfLUXzezbIogDpQmZUjah0,1537
608
608
  wandb/sdk/artifacts/artifact_manifest.py,sha256=ZBdtazpTXt0X_8F4y6O-SDmrTY69hCp0HckCXbnZkII,2534
@@ -616,7 +616,7 @@ wandb/sdk/artifacts/storage_handlers/azure_handler.py,sha256=Y0B79t9xDrXo361O9x6
616
616
  wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py,sha256=MpYHgEkbjt1VCUV-lfg1f3MscOK10tZHSJwOFjCzGBg,2562
617
617
  wandb/sdk/artifacts/storage_handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
618
618
  wandb/sdk/artifacts/storage_handlers/local_file_handler.py,sha256=SiRfKwfr9brkm0tDhMDpgxhHH6FOlasRaliznL9zyN0,5470
619
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256=hGslEr9QYi0Jp5_C5fxv7CaRu219tdmldyayncze0vc,8514
619
+ wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256=V2ttv1qsOP5Ns8aN-l5qt1J1OF1UKEUBos0EvW_SBD0,8509
620
620
  wandb/sdk/artifacts/storage_handlers/http_handler.py,sha256=sdzBqZyQ_6WKtlcqIfxE6QzDNWy1Kw7rKp4f0OCTYuw,4033
621
621
  wandb/sdk/artifacts/storage_handlers/multi_handler.py,sha256=GZ9wAfVSuZE3IGL5F5ojM_GPrRqYIYTJxWSsqFn9HiI,1842
622
622
  wandb/sdk/artifacts/artifact_manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -726,7 +726,7 @@ wandb/sdk/lib/asyncio_manager.py,sha256=ftMrz3qAGtOkfLoo-4xeoUj3etuayw7XXStPWHmM
726
726
  wandb/sdk/lib/ipython.py,sha256=TcKyUyoCBGCNkItaJRDx8PFUHtvuPPDDIduqyMYuGfQ,3810
727
727
  wandb/sdk/lib/preinit.py,sha256=11QkGmBpoGazNaUGvyDIzBJA4QTggj7fGQdugpCvOiw,1450
728
728
  wandb/sdk/lib/hashutil.py,sha256=Heudn0Prj3C-1Ypyq4IU1QfflRJrJMbgoreTGnWGraE,3592
729
- wandb/sdk/lib/paths.py,sha256=YiEE5mkYB5ahMuI4C27IsNvejC3z6MI5JPW1iISi864,4529
729
+ wandb/sdk/lib/paths.py,sha256=-5mtOUwtf7LUrM4NxQWqi0HGsNSHujD0QOhLa0HXzFo,4565
730
730
  wandb/sdk/lib/import_hooks.py,sha256=0_TJwq-EuZFUIFzFOZoVDWOMP9-Af1r2Vq5sV5sfzg4,10271
731
731
  wandb/sdk/lib/gitlib.py,sha256=UAKpxnWTyIp3xkn4bRRqxvUmv5c_xyN0gmc5nL91hpM,7832
732
732
  wandb/sdk/lib/handler_util.py,sha256=mT9CKsmboq4lPWElsi4uo9ORHhx6OYTr7KY2QtgbM6M,589
@@ -865,7 +865,7 @@ wandb/filesync/step_checksum.py,sha256=IWp7I8WMobTTrZw3Ip2IBlBmvElaG_ihvsis0HW5Q
865
865
  wandb/mpmain/__main__.py,sha256=bLhspPeHQvNMyRNR7xi9v-02XfW1mhJY2yBWI3bYtbg,57
866
866
  wandb/mpmain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
867
867
  wandb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
868
- wandb/cli/cli.py,sha256=rBjwynxvq6LbubTO5m1_WfCakzSG_N8aTECuakLbIZA,95025
868
+ wandb/cli/cli.py,sha256=3_2SuxOv4a9Ha9SuGvVuc3RFvWueb0wuJQy8HrXFzww,95045
869
869
  wandb/cli/beta.py,sha256=Mq-5A-XXH3VLIvhWPxA84DFPeirNMYGPSQ53H78Xkjc,5187
870
870
  wandb/automations/_validators.py,sha256=5rEU_gC0TRx1UvFVyqCcQU6knAKsZHhTW3z_lU8eZBY,5002
871
871
  wandb/automations/_utils.py,sha256=3a39L976vsrckevwYLNHiHA5bcs-YlCdOwIuJ8UG3jc,8269
@@ -897,8 +897,8 @@ wandb/analytics/__init__.py,sha256=WG_Mh20Hr8d3vDmGMcfDXCMEIew3uzDYZAJwFsrbAug,5
897
897
  wandb/analytics/sentry.py,sha256=XFrWH5ZBE4l2mS2aGIMRDG65TnVcFzsjthvnuqPqJDs,8440
898
898
  wandb/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
899
899
  wandb/agents/pyagent.py,sha256=cQ0YlusW6_JV4NlPJJpodJ6HCLr-NiubXjEBaVAPgrg,14287
900
- wandb-0.21.2.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
901
- wandb-0.21.2.dist-info/WHEEL,sha256=fTf-veJdTwcKkwyiHTvgNV2L-0jwiK0w7ozo8ARrNAg,143
902
- wandb-0.21.2.dist-info/METADATA,sha256=M59q2UY-7lv07A3JXmcD3VohND4wq3ElOgalaqdDCFs,10250
903
- wandb-0.21.2.dist-info/RECORD,,
904
- wandb-0.21.2.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
900
+ wandb-0.21.3.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
901
+ wandb-0.21.3.dist-info/WHEEL,sha256=fTf-veJdTwcKkwyiHTvgNV2L-0jwiK0w7ozo8ARrNAg,143
902
+ wandb-0.21.3.dist-info/METADATA,sha256=ZMi72H0ayZ7Y6rpnA1rhdjmA0okZzvTVxhFhzRjfszw,10244
903
+ wandb-0.21.3.dist-info/RECORD,,
904
+ wandb-0.21.3.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
File without changes