wandb 0.13.11__py3-none-any.whl → 0.14.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. wandb/__init__.py +1 -1
  2. wandb/apis/importers/__init__.py +4 -0
  3. wandb/apis/importers/base.py +312 -0
  4. wandb/apis/importers/mlflow.py +113 -0
  5. wandb/apis/internal.py +9 -0
  6. wandb/apis/public.py +0 -2
  7. wandb/cli/cli.py +100 -72
  8. wandb/docker/__init__.py +33 -5
  9. wandb/proto/v3/wandb_telemetry_pb2.py +10 -10
  10. wandb/proto/v4/wandb_telemetry_pb2.py +10 -10
  11. wandb/sdk/internal/internal_api.py +85 -9
  12. wandb/sdk/launch/_project_spec.py +45 -55
  13. wandb/sdk/launch/agent/agent.py +80 -18
  14. wandb/sdk/launch/builder/build.py +16 -74
  15. wandb/sdk/launch/builder/docker_builder.py +36 -8
  16. wandb/sdk/launch/builder/kaniko_builder.py +78 -37
  17. wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +68 -18
  18. wandb/sdk/launch/environment/aws_environment.py +4 -0
  19. wandb/sdk/launch/launch.py +1 -6
  20. wandb/sdk/launch/launch_add.py +0 -5
  21. wandb/sdk/launch/registry/abstract.py +12 -0
  22. wandb/sdk/launch/registry/elastic_container_registry.py +31 -1
  23. wandb/sdk/launch/registry/google_artifact_registry.py +32 -0
  24. wandb/sdk/launch/registry/local_registry.py +15 -1
  25. wandb/sdk/launch/runner/abstract.py +0 -14
  26. wandb/sdk/launch/runner/kubernetes_runner.py +25 -19
  27. wandb/sdk/launch/runner/local_container.py +7 -8
  28. wandb/sdk/launch/runner/local_process.py +0 -3
  29. wandb/sdk/launch/runner/sagemaker_runner.py +0 -3
  30. wandb/sdk/launch/runner/vertex_runner.py +0 -2
  31. wandb/sdk/launch/sweeps/scheduler.py +39 -10
  32. wandb/sdk/launch/utils.py +52 -4
  33. wandb/sdk/wandb_run.py +3 -10
  34. wandb/sync/sync.py +1 -0
  35. wandb/util.py +1 -0
  36. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/METADATA +1 -1
  37. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/RECORD +41 -38
  38. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/WHEEL +1 -1
  39. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/LICENSE +0 -0
  40. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/entry_points.txt +0 -0
  41. {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/top_level.txt +0 -0
@@ -4,17 +4,12 @@ import logging
4
4
  import time
5
5
  from typing import Any, Dict, List, Optional
6
6
 
7
- from kubernetes import client # type: ignore
8
- from kubernetes.client.api.batch_v1_api import BatchV1Api # type: ignore
9
- from kubernetes.client.api.core_v1_api import CoreV1Api # type: ignore
10
- from kubernetes.client.models.v1_job import V1Job # type: ignore
11
- from kubernetes.client.models.v1_secret import V1Secret # type: ignore
12
-
13
7
  import wandb
14
8
  from wandb.apis.internal import Api
15
9
  from wandb.sdk.launch.builder.abstract import AbstractBuilder
16
10
  from wandb.sdk.launch.environment.abstract import AbstractEnvironment
17
11
  from wandb.sdk.launch.registry.abstract import AbstractRegistry
12
+ from wandb.sdk.launch.registry.local_registry import LocalRegistry
18
13
  from wandb.util import get_module, load_json_yaml_dict
19
14
 
20
15
  from .._project_spec import LaunchProject, get_entry_point_command
@@ -28,6 +23,17 @@ from ..utils import (
28
23
  )
29
24
  from .abstract import AbstractRun, AbstractRunner, Status
30
25
 
26
+ get_module(
27
+ "kubernetes",
28
+ required="Kubernetes runner requires the kubernetes package. Please install it with `pip install wandb[launch]`.",
29
+ )
30
+
31
+ from kubernetes import client # type: ignore # noqa: E402
32
+ from kubernetes.client.api.batch_v1_api import BatchV1Api # type: ignore # noqa: E402
33
+ from kubernetes.client.api.core_v1_api import CoreV1Api # type: ignore # noqa: E402
34
+ from kubernetes.client.models.v1_job import V1Job # type: ignore # noqa: E402
35
+ from kubernetes.client.models.v1_secret import V1Secret # type: ignore # noqa: E402
36
+
31
37
  TIMEOUT = 5
32
38
  MAX_KUBERNETES_RETRIES = (
33
39
  60 # default 10 second loop time on the agent, this is 10 minutes
@@ -83,11 +89,11 @@ class KubernetesSubmittedRun(AbstractRun):
83
89
  name=self.name, namespace=self.namespace
84
90
  )
85
91
  status = job_response.status
86
- try:
87
- self.core_api.read_namespaced_pod_log(
88
- name=self.pod_names[0], namespace=self.namespace
89
- )
90
- except Exception as e:
92
+
93
+ pod = self.core_api.read_namespaced_pod(
94
+ name=self.pod_names[0], namespace=self.namespace
95
+ )
96
+ if pod.status.phase in ["Pending", "Unknown"]:
91
97
  now = time.time()
92
98
  if self._fail_count == 0:
93
99
  self._fail_first_msg_time = now
@@ -95,13 +101,11 @@ class KubernetesSubmittedRun(AbstractRun):
95
101
  self._fail_count += 1
96
102
  if now - self._fail_last_msg_time > FAIL_MESSAGE_INTERVAL:
97
103
  wandb.termlog(
98
- f"{LOG_PREFIX}Failed to get pod status for job: {self.name}. Will wait up to {round(10 - (now - self._fail_first_msg_time)/60)} minutes for job to start."
104
+ f"{LOG_PREFIX}Pod has not started yet for job: {self.name}. Will wait up to {round(10 - (now - self._fail_first_msg_time)/60)} minutes."
99
105
  )
100
106
  self._fail_last_msg_time = now
101
107
  if self._fail_count > MAX_KUBERNETES_RETRIES:
102
- raise LaunchError(
103
- f"Failed to start job {self.name}, because of error {str(e)}"
104
- )
108
+ raise LaunchError(f"Failed to start job {self.name}")
105
109
  # todo: we only handle the 1 pod case. see https://kubernetes.io/docs/concepts/workloads/controllers/job/#parallel-jobs for multipod handling
106
110
  return_status = None
107
111
  if status.succeeded == 1:
@@ -275,7 +279,9 @@ class KubernetesRunner(AbstractRunner):
275
279
  builder: Optional[AbstractBuilder],
276
280
  ) -> Optional[AbstractRun]: # noqa: C901
277
281
  kubernetes = get_module( # noqa: F811
278
- "kubernetes", "KubernetesRunner requires kubernetes to be installed"
282
+ "kubernetes",
283
+ required="Kubernetes runner requires the kubernetes package. Please"
284
+ " install it with `pip install wandb[launch]`.",
279
285
  )
280
286
  resource_args = launch_project.resource_args.get("kubernetes", {})
281
287
  if not resource_args:
@@ -392,9 +398,6 @@ class KubernetesRunner(AbstractRunner):
392
398
  job_dict["metadata"] = job_metadata
393
399
  job_dict["status"] = job_status
394
400
 
395
- if not self.ack_run_queue_item(launch_project):
396
- return None
397
-
398
401
  _logger.info(f"Creating Kubernetes job from: {job_dict}")
399
402
  job_response = kubernetes.utils.create_from_yaml(
400
403
  api_client, yaml_objects=[job_dict], namespace=namespace
@@ -422,6 +425,9 @@ def maybe_create_imagepull_secret(
422
425
  namespace: str,
423
426
  ) -> Optional["V1Secret"]:
424
427
  secret = None
428
+ if isinstance(registry, LocalRegistry):
429
+ # Secret not required
430
+ return None
425
431
  uname, token = registry.get_username_password()
426
432
  creds_info = {
427
433
  "auths": {
@@ -11,12 +11,14 @@ from wandb.sdk.launch.builder.abstract import AbstractBuilder
11
11
  from wandb.sdk.launch.environment.abstract import AbstractEnvironment
12
12
 
13
13
  from .._project_spec import LaunchProject, compute_command_args
14
- from ..builder.build import docker_image_exists, get_env_vars_dict, pull_docker_image
14
+ from ..builder.build import get_env_vars_dict
15
15
  from ..utils import (
16
16
  LOG_PREFIX,
17
17
  PROJECT_SYNCHRONOUS,
18
18
  _is_wandb_dev_uri,
19
19
  _is_wandb_local_uri,
20
+ docker_image_exists,
21
+ pull_docker_image,
20
22
  sanitize_wandb_api_key,
21
23
  )
22
24
  from .abstract import AbstractRun, AbstractRunner, Status
@@ -85,10 +87,6 @@ class LocalContainerRunner(AbstractRunner):
85
87
  docker_args: Dict[str, Any] = launch_project.resource_args.get(
86
88
  "local-container", {}
87
89
  )
88
- # TODO: leaving this here because of existing CLI command
89
- # we should likely just tell users to specify the gpus arg directly
90
- if launch_project.cuda:
91
- docker_args["gpus"] = "all"
92
90
 
93
91
  if _is_wandb_local_uri(self._api.settings("base_url")):
94
92
  if sys.platform == "win32":
@@ -149,8 +147,6 @@ class LocalContainerRunner(AbstractRunner):
149
147
  )
150
148
  ).strip()
151
149
 
152
- if not self.ack_run_queue_item(launch_project):
153
- return None
154
150
  sanitized_cmd_str = sanitize_wandb_api_key(command_str)
155
151
  _msg = f"{LOG_PREFIX}Launching run in docker with command: {sanitized_cmd_str}"
156
152
  wandb.termlog(_msg)
@@ -224,9 +220,12 @@ def get_docker_command(
224
220
  cmd += [prefix]
225
221
  else:
226
222
  cmd += [prefix, shlex.quote(str(value))]
223
+
227
224
  if entry_cmd:
228
- cmd += ["--entrypoint"] + entry_cmd
225
+ cmd += ["--entrypoint", entry_cmd[0]]
229
226
  cmd += [shlex.quote(image)]
227
+ if entry_cmd and len(entry_cmd) > 1:
228
+ cmd += entry_cmd[1:]
230
229
  if additional_args:
231
230
  cmd += additional_args
232
231
  return cmd
@@ -81,9 +81,6 @@ class LocalProcessRunner(AbstractRunner):
81
81
  for env_key, env_value in env_vars.items():
82
82
  cmd += [f"{shlex.quote(env_key)}={shlex.quote(env_value)}"]
83
83
 
84
- if not self.ack_run_queue_item(launch_project):
85
- return None
86
-
87
84
  entry_cmd = get_entry_point_command(entry_point, launch_project.override_args)
88
85
  cmd += entry_cmd
89
86
 
@@ -164,9 +164,6 @@ class SageMakerRunner(AbstractRunner):
164
164
  )
165
165
  _logger.info(f"Docker image built with uri {image}")
166
166
 
167
- if not self.ack_run_queue_item(launch_project):
168
- return None
169
-
170
167
  _logger.info("Connecting to sagemaker client")
171
168
  command_args = get_entry_point_command(
172
169
  entry_point, launch_project.override_args
@@ -138,8 +138,6 @@ class VertexRunner(AbstractRunner):
138
138
  entry_point,
139
139
  )
140
140
 
141
- if not self.ack_run_queue_item(launch_project):
142
- return None
143
141
  # TODO: how to handle this?
144
142
  entry_cmd = get_entry_point_command(entry_point, launch_project.override_args)
145
143
 
@@ -18,6 +18,7 @@ from wandb.errors import CommError
18
18
  from wandb.sdk.launch.launch_add import launch_add
19
19
  from wandb.sdk.launch.sweeps import SchedulerError
20
20
  from wandb.sdk.lib.runid import generate_id
21
+ from wandb.wandb_agent import Agent
21
22
 
22
23
  _logger = logging.getLogger(__name__)
23
24
  LOG_PREFIX = f"{click.style('sched:', fg='cyan')} "
@@ -37,6 +38,7 @@ class SchedulerState(Enum):
37
38
  COMPLETED = 4
38
39
  FAILED = 5
39
40
  STOPPED = 6
41
+ CANCELLED = 7
40
42
 
41
43
 
42
44
  class RunState(Enum):
@@ -79,17 +81,20 @@ class Scheduler(ABC):
79
81
  self._project = (
80
82
  project or os.environ.get("WANDB_PROJECT") or api.settings("project")
81
83
  )
84
+ self._sweep_id: str = sweep_id or "empty-sweep-id"
85
+ self._state: SchedulerState = SchedulerState.PENDING
86
+
82
87
  # Make sure the provided sweep_id corresponds to a valid sweep
83
88
  try:
84
89
  resp = self._api.sweep(
85
90
  sweep_id, "{}", entity=self._entity, project=self._project
86
91
  )
92
+ if resp.get("state") == SchedulerState.CANCELLED.name:
93
+ self._state = SchedulerState.CANCELLED
87
94
  self._sweep_config = yaml.safe_load(resp["config"])
88
95
  except Exception as e:
89
96
  raise SchedulerError(f"{LOG_PREFIX}Exception when finding sweep: {e}")
90
97
 
91
- self._sweep_id: str = sweep_id or "empty-sweep-id"
92
- self._state: SchedulerState = SchedulerState.PENDING
93
98
  # Dictionary of the runs being managed by the scheduler
94
99
  self._runs: Dict[str, SweepRun] = {}
95
100
  # Threading lock to ensure thread-safe access to the runs dictionary
@@ -131,6 +136,7 @@ class Scheduler(ABC):
131
136
  SchedulerState.COMPLETED,
132
137
  SchedulerState.FAILED,
133
138
  SchedulerState.STOPPED,
139
+ SchedulerState.CANCELLED,
134
140
  ]:
135
141
  return False
136
142
  return True
@@ -138,6 +144,13 @@ class Scheduler(ABC):
138
144
  def start(self) -> None:
139
145
  """Start a scheduler, confirms prerequisites, begins execution loop."""
140
146
  wandb.termlog(f"{LOG_PREFIX}Scheduler starting.")
147
+ if not self.is_alive():
148
+ wandb.termerror(
149
+ f"{LOG_PREFIX}Sweep already {self.state.name.lower()}! Exiting..."
150
+ )
151
+ self.exit()
152
+ return
153
+
141
154
  self._state = SchedulerState.STARTING
142
155
  if not self._try_load_executable():
143
156
  wandb.termerror(
@@ -235,13 +248,21 @@ class Scheduler(ABC):
235
248
  for run_id, run in self._yield_runs():
236
249
  try:
237
250
  _state = self._api.get_run_state(self._entity, self._project, run_id)
238
- if _state is None or _state in [
239
- "crashed",
240
- "failed",
241
- "killed",
242
- "finished",
243
- ]:
244
- _logger.debug(f"Got runstate: {_state} for run: {run_id}")
251
+ _rqi_state = run.queued_run.state if run.queued_run else None
252
+ if (
253
+ not _state
254
+ or _state
255
+ in [
256
+ "crashed",
257
+ "failed",
258
+ "killed",
259
+ "finished",
260
+ ]
261
+ or _rqi_state == "failed"
262
+ ):
263
+ _logger.debug(
264
+ f"({run_id}) run-state:{_state}, rqi-state:{_rqi_state}"
265
+ )
245
266
  run.state = RunState.DEAD
246
267
  _runs_to_remove.append(run_id)
247
268
  elif _state in [
@@ -272,12 +293,13 @@ class Scheduler(ABC):
272
293
  """Add a launch job to the Launch RunQueue.
273
294
 
274
295
  run_id: supplied by gorilla from agentHeartbeat
296
+ entry_point: sweep entrypoint overrides image_uri/job entrypoint
275
297
  config: launch config
276
298
  """
277
299
  # job and image first from CLI args, then from sweep config
278
300
  _job = self._kwargs.get("job") or self._sweep_config.get("job")
279
301
 
280
- _sweep_config_uri = self._sweep_config.get("scheduler", {}).get("image_uri")
302
+ _sweep_config_uri = self._sweep_config.get("image_uri")
281
303
  _image_uri = self._kwargs.get("image_uri") or _sweep_config_uri
282
304
  if _job is None and _image_uri is None:
283
305
  raise SchedulerError(
@@ -286,6 +308,13 @@ class Scheduler(ABC):
286
308
  elif _job is not None and _image_uri is not None:
287
309
  raise SchedulerError(f"{LOG_PREFIX}Sweep has both 'job' and 'image_uri'")
288
310
 
311
+ if self._sweep_config.get("command"):
312
+ entry_point = Agent._create_sweep_command(self._sweep_config["command"])
313
+ wandb.termwarn(
314
+ f"{LOG_PREFIX}Sweep command {entry_point} will override"
315
+ f' {"job" if _job else "image_uri"} entrypoint'
316
+ )
317
+
289
318
  run_id = run_id or generate_id()
290
319
  queued_run = launch_add(
291
320
  run_id=run_id,
wandb/sdk/launch/utils.py CHANGED
@@ -10,11 +10,21 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple
10
10
  import click
11
11
 
12
12
  import wandb
13
+ import wandb.docker as docker
13
14
  from wandb import util
14
15
  from wandb.apis.internal import Api
15
16
  from wandb.errors import CommError, Error
16
17
  from wandb.sdk.launch.wandb_reference import WandbReference
17
18
 
19
+ from .builder.templates._wandb_bootstrap import (
20
+ FAILED_PACKAGES_POSTFIX,
21
+ FAILED_PACKAGES_PREFIX,
22
+ )
23
+
24
+ FAILED_PACKAGES_REGEX = re.compile(
25
+ f"{re.escape(FAILED_PACKAGES_PREFIX)}(.*){re.escape(FAILED_PACKAGES_POSTFIX)}"
26
+ )
27
+
18
28
  if TYPE_CHECKING: # pragma: no cover
19
29
  from wandb.apis.public import Artifact as PublicArtifact
20
30
 
@@ -25,6 +35,12 @@ class LaunchError(Error):
25
35
  pass
26
36
 
27
37
 
38
+ class LaunchDockerError(Error):
39
+ """Raised when Docker daemon is not running."""
40
+
41
+ pass
42
+
43
+
28
44
  class ExecutionError(Error):
29
45
  """Generic execution exception."""
30
46
 
@@ -146,7 +162,6 @@ def construct_launch_spec(
146
162
  parameters: Optional[Dict[str, Any]],
147
163
  resource_args: Optional[Dict[str, Any]],
148
164
  launch_config: Optional[Dict[str, Any]],
149
- cuda: Optional[bool],
150
165
  run_id: Optional[str],
151
166
  repository: Optional[str],
152
167
  ) -> Dict[str, Any]:
@@ -202,8 +217,6 @@ def construct_launch_spec(
202
217
 
203
218
  if entry_point:
204
219
  launch_spec["overrides"]["entry_point"] = entry_point
205
- if cuda is not None:
206
- launch_spec["cuda"] = cuda
207
220
 
208
221
  if run_id is not None:
209
222
  launch_spec["run_id"] = run_id
@@ -621,7 +634,7 @@ def resolve_build_and_registry_config(
621
634
  ) -> Tuple[Dict[str, Any], Dict[str, Any]]:
622
635
  resolved_build_config: Dict[str, Any] = {}
623
636
  if build_config is None and default_launch_config is not None:
624
- resolved_build_config = default_launch_config.get("build", {})
637
+ resolved_build_config = default_launch_config.get("builder", {})
625
638
  elif build_config is not None:
626
639
  resolved_build_config = build_config
627
640
  resolved_registry_config: Dict[str, Any] = {}
@@ -656,3 +669,38 @@ def make_name_dns_safe(name: str) -> str:
656
669
  # Actual length limit is 253, but we want to leave room for the generated suffix
657
670
  resp = resp[:200]
658
671
  return resp
672
+
673
+
674
+ def warn_failed_packages_from_build_logs(log: str, image_uri: str) -> None:
675
+ match = FAILED_PACKAGES_REGEX.search(log)
676
+ if match:
677
+ wandb.termwarn(
678
+ f"Failed to install the following packages: {match.group(1)} for image: {image_uri}. Will attempt to launch image without them."
679
+ )
680
+
681
+
682
+ def docker_image_exists(docker_image: str, should_raise: bool = False) -> bool:
683
+ """Check if a specific image is already available.
684
+
685
+ Optionally raises an exception if the image is not found.
686
+ """
687
+ _logger.info("Checking if base image exists...")
688
+ try:
689
+ docker.run(["docker", "image", "inspect", docker_image])
690
+ return True
691
+ except (docker.DockerError, ValueError) as e:
692
+ if should_raise:
693
+ raise e
694
+ _logger.info("Base image not found. Generating new base image")
695
+ return False
696
+
697
+
698
+ def pull_docker_image(docker_image: str) -> None:
699
+ """Pull the requested docker image."""
700
+ if docker_image_exists(docker_image):
701
+ # don't pull images if they exist already, eg if they are local images
702
+ return
703
+ try:
704
+ docker.run(["docker", "pull", docker_image])
705
+ except docker.DockerError as e:
706
+ raise LaunchError(f"Docker server returned error: {e}")
wandb/sdk/wandb_run.py CHANGED
@@ -233,6 +233,8 @@ class RunStatusChecker:
233
233
 
234
234
  if result:
235
235
  process(result)
236
+ # if request finished, clear the handle to send on the next interval
237
+ local_handle = None
236
238
 
237
239
  time_elapsed = time.monotonic() - time_probe
238
240
  wait_time = max(self._stop_polling_interval - time_elapsed, 0)
@@ -2498,6 +2500,7 @@ class Run:
2498
2500
  def unwatch(self, models=None) -> None: # type: ignore
2499
2501
  wandb.unwatch(models=models)
2500
2502
 
2503
+ # TODO(kdg): remove all artifact swapping logic
2501
2504
  def _swap_artifact_name(self, artifact_name: str, use_as: Optional[str]) -> str:
2502
2505
  artifact_key_string = use_as or artifact_name
2503
2506
  replacement_artifact_info = self._launch_artifact_mapping.get(
@@ -2513,10 +2516,6 @@ class Run:
2513
2516
  )
2514
2517
  return f"{entity}/{project}/{new_name}"
2515
2518
  elif replacement_artifact_info is None and use_as is None:
2516
- wandb.termwarn(
2517
- f"Could not find {artifact_name} in launch artifact mapping. "
2518
- f"Searching for unique artifacts with sequence name: {artifact_name}"
2519
- )
2520
2519
  sequence_name = artifact_name.split(":")[0].split("/")[-1]
2521
2520
  unique_artifact_replacement_info = (
2522
2521
  self._unique_launch_artifact_sequence_names.get(sequence_name)
@@ -2532,14 +2531,8 @@ class Run:
2532
2531
  return f"{entity}/{project}/{new_name}"
2533
2532
 
2534
2533
  else:
2535
- wandb.termwarn(
2536
- f"Could not find swappable artifact at key: {use_as}. Using {artifact_name}"
2537
- )
2538
2534
  return artifact_name
2539
2535
 
2540
- wandb.termwarn(
2541
- f"Could not find {artifact_key_string} in launch artifact mapping. Using {artifact_name}"
2542
- )
2543
2536
  return artifact_name
2544
2537
 
2545
2538
  def _detach(self) -> None:
wandb/sync/sync.py CHANGED
@@ -142,6 +142,7 @@ class SyncThread(threading.Thread):
142
142
  proto_run.run_id = self._run_id or wandb.util.generate_id()
143
143
  proto_run.project = self._project or wandb.util.auto_project_name(None)
144
144
  proto_run.entity = self._entity
145
+ proto_run.telemetry.feature.sync_tfevents = True
145
146
 
146
147
  url = "{}/{}/{}/runs/{}".format(
147
148
  self._app_url,
wandb/util.py CHANGED
@@ -239,6 +239,7 @@ def sentry_set_scope(
239
239
  "sweep_id",
240
240
  "deployment",
241
241
  "_disable_service",
242
+ "launch",
242
243
  ]
243
244
 
244
245
  s = settings_dict
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wandb
3
- Version: 0.13.11
3
+ Version: 0.14.0
4
4
  Summary: A CLI and library for interacting with the Weights and Biases API.
5
5
  Home-page: https://github.com/wandb/wandb
6
6
  Author: Weights & Biases
@@ -1,4 +1,4 @@
1
- wandb/__init__.py,sha256=99p8DKTZft2tO9_48koJtWZlHnVPHfSEyaUhK-wlpoo,6052
1
+ wandb/__init__.py,sha256=OY44rhrK9CZ3AXzdrfqtoSFOz5Da6aALYY163kBqVD0,6051
2
2
  wandb/__main__.py,sha256=gripuDgB7J8wMMeJt4CIBRjn1BMSFr5zvsrt585Pnj4,64
3
3
  wandb/_globals.py,sha256=CccwOAls5bxJArYHg12b08ZeKR8Qu9u57GtYWjBH0o0,702
4
4
  wandb/data_types.py,sha256=ubLUgZ74CDkzPgrJNt1E0FHQuWQbzVFM42OBkZQwxzY,75068
@@ -7,7 +7,7 @@ wandb/jupyter.py,sha256=OetSXg5_Eu3WES_9TOarIzbvx6wCIfLSVyno2bEbisk,16940
7
7
  wandb/magic.py,sha256=YVSQmkrtlQ56p-VqkwjiPGNBa694UvPALxc4yp6RiLk,59
8
8
  wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  wandb/trigger.py,sha256=s6pc7ol-s76i7YRNf4P13f9co2f4f8simzXkjcmSQG0,614
10
- wandb/util.py,sha256=1rcjKiybjODV7Gf2ndwiA7TBJHEgYA1UrSrOE0TQki8,61155
10
+ wandb/util.py,sha256=ad5rhrY3Q4CNcmh_9Ic72Yei_0L1Jm8UURwUhpyx5cQ,61173
11
11
  wandb/viz.py,sha256=hrRhuDuvgelF-qK0eoVmBJyJi1DjQ3vkmrgRKgM2lyg,3217
12
12
  wandb/wandb_agent.py,sha256=4ohs94jROgasA5ZH3FhIRyuFF5li1kWt3lC_UqPuSAo,23538
13
13
  wandb/wandb_controller.py,sha256=SjL4Sx1scOzY-lFp9bGmf6P43p99xlLxpGUAMetRS_c,24729
@@ -16,9 +16,12 @@ wandb/wandb_torch.py,sha256=f_xxU4unLnNWiyLSPpTT86Iwx1MGhUyqkKX5NAJx0Qs,21999
16
16
  wandb/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  wandb/agents/pyagent.py,sha256=FLoOmORjVQ-MtjBtd7XUXljBqm0Tks6xguRGn1AsAs4,12921
18
18
  wandb/apis/__init__.py,sha256=haXrAmHFoC3gL1_NphdalvaMKGSiiFWB2QCOIJUhPGc,1329
19
- wandb/apis/internal.py,sha256=H8wG7R4uw0qSaQWHjtUdQa3VtU60-RC19N2HJlTkQfU,5792
19
+ wandb/apis/internal.py,sha256=2nOLHiOVv4Pduh4l6Zy3g7kGybViutn1ATbXeB6n1sA,6152
20
20
  wandb/apis/normalize.py,sha256=PzB9YfayTfzM262m5H5Z7I0qH3G5gNwtkPt3lTu0BHg,2141
21
- wandb/apis/public.py,sha256=q1Vxf8W47e6XGbiJUcFN7tdkD-GhuJkI6NGiZJ3Fmtk,179869
21
+ wandb/apis/public.py,sha256=6TtoQ2ZEbl2sInwsAmTQtF5sSYhUoh27jQ-NCL_gILI,179826
22
+ wandb/apis/importers/__init__.py,sha256=117C1xz4GGn1T3e3LOJ3GSSnQZrnWvZiS0AP_3B0K9Q,124
23
+ wandb/apis/importers/base.py,sha256=ANIeFJcg8W4tpnq9AbdDag8v48Qd-YGA2DVep8byhXc,10160
24
+ wandb/apis/importers/mlflow.py,sha256=gXzpJ1aVFMSwxeO_kUGNyl6TJvVzfNOx5EJOinM96sM,3538
22
25
  wandb/apis/reports/__init__.py,sha256=Dr4Qj7g-Oprr2-yci3GnkGmmef0NWL1PVTcIeRfy8PI,949
23
26
  wandb/apis/reports/_blocks.py,sha256=pauLnohwcEAPksqaJQIB04LjRn4KOe3MNQvCCWYiE7E,53785
24
27
  wandb/apis/reports/_helpers.py,sha256=SlJQcvD-fDBSniXcp4BLsSxW_1fp-fhVFiZj6qYgEqg,2126
@@ -37,8 +40,8 @@ wandb/beta/workflows.py,sha256=ozY3OooklSsjdZeowl8an5VF6phCUgIn3yYv0vkIO7Q,10051
37
40
  wandb/bin/apple_gpu_stats,sha256=-CVDIPhgV1f_jjM1dkXJgmo6AQY4wjy1xCGg1e8zn0w,337072
38
41
  wandb/catboost/__init__.py,sha256=kgsxRzur9liL-CPOVubjNVJ_FEDiktbyA7gQQXxG1n0,226
39
42
  wandb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- wandb/cli/cli.py,sha256=SCYLcLSbhGSTLIYHONwcYApd3osLQJzfAZE-bTXBHnQ,78015
41
- wandb/docker/__init__.py,sha256=ylpkkRrsoVVPRfnUVQeJzaklS6j_AYWc_nblGQ6yc8g,8814
43
+ wandb/cli/cli.py,sha256=pge9FSPhpq-zk5qocxCu3E1L9GPSQsgC7Won9mPsy1U,78841
44
+ wandb/docker/__init__.py,sha256=PW64nHMdNB4B7WYVC12lZf242Zi_d5QHLtAtfThqM9g,9575
42
45
  wandb/docker/auth.py,sha256=d0uCK29uATBe6HKkbhbvdEYYbSIkdppiwzvWsgUqqMc,15065
43
46
  wandb/docker/wandb-entrypoint.sh,sha256=P4eTMG7wYsgTfJIws_HT7QFlYBI70ZLnNlDGTZdmYVE,989
44
47
  wandb/docker/www_authenticate.py,sha256=eQd0ap8LpZkS9ImRn2gdgl7gnHeKprdqjClrZOaCsQo,2805
@@ -130,13 +133,13 @@ wandb/proto/v3/wandb_base_pb2.py,sha256=0Ixr7LeEOTdIU_pewdbhRZOrFqRtgsOsWcyC_Tw4
130
133
  wandb/proto/v3/wandb_internal_pb2.py,sha256=qgGpq44m9a3_dRtbdZpay94R8J_-anaYJ_bdboag_ug,79464
131
134
  wandb/proto/v3/wandb_server_pb2.py,sha256=l8fk4O9pGC8_8oHxC3CacxDxW1KNy1ST49DS-s_VxIk,25856
132
135
  wandb/proto/v3/wandb_server_pb2_grpc.py,sha256=wPgsoCB-OyZjN2f88vG1-SCFJtr6YOceKDSn2SolOiM,70982
133
- wandb/proto/v3/wandb_telemetry_pb2.py,sha256=Xzt9vtR4kSUzWWPPqBLkYYTq6tg0n5Pr-owgnA5vYGk,11127
136
+ wandb/proto/v3/wandb_telemetry_pb2.py,sha256=yv9W4LdtFOOxRDzHDpAPVa7NAdhVOh1r_VpEG0QBlpQ,11215
134
137
  wandb/proto/v4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
138
  wandb/proto/v4/wandb_base_pb2.py,sha256=fF312_OnXSKQTjMW0Pwdo-yZBmFURWH-n4XJ_sEaExY,1315
136
139
  wandb/proto/v4/wandb_internal_pb2.py,sha256=z9vL6zr4V-PWDIXpBeVqGQ5KvgsqkfwSIkbCPFn5LnA,36136
137
140
  wandb/proto/v4/wandb_server_pb2.py,sha256=GlaUcDwBOJnhRSuQW-ddGeyXrVVD1oj05pMprt6e5Is,13976
138
141
  wandb/proto/v4/wandb_server_pb2_grpc.py,sha256=wPgsoCB-OyZjN2f88vG1-SCFJtr6YOceKDSn2SolOiM,70982
139
- wandb/proto/v4/wandb_telemetry_pb2.py,sha256=xa6_KhA2YDNb7327Gh_jTeKH0t66_xy4OC-oI1E1bAA,8574
142
+ wandb/proto/v4/wandb_telemetry_pb2.py,sha256=CX220fSnk6dQtSCkSKRHHiITR_x_stWxkD9A2Ql-v2g,8662
140
143
  wandb/sacred/__init__.py,sha256=2sCLXqvkwjEqOvPFdtAtmo80PY4hky7rj4owO5PoJWQ,80
141
144
  wandb/sdk/__init__.py,sha256=_dmAd0D7tTMYXpV_FqdGpAMSn6wtmsN5dEPoFlXaXmU,719
142
145
  wandb/sdk/wandb_alerts.py,sha256=SwBPBiXRxknMTMGbsVoMMWqWK65UWMcKAdTWZtdwAeo,193
@@ -149,7 +152,7 @@ wandb/sdk/wandb_manager.py,sha256=l2sHY64fck-hQ35pmnMgY5egmGix5icpVRohFe0RqMY,69
149
152
  wandb/sdk/wandb_metric.py,sha256=a3GiQXr6H18m81uobYjlJaC8CL8iANzI42qxkxfZsDs,3268
150
153
  wandb/sdk/wandb_require.py,sha256=CsclI4T0RUhPGIOEtGbjtrtFmYj9NFtgAgHUEddVyNg,2732
151
154
  wandb/sdk/wandb_require_helpers.py,sha256=ZmKv5aXXHDTTU6nYHMLKW4_pt9X-PlaMtbRJl77kHX8,1331
152
- wandb/sdk/wandb_run.py,sha256=nSO61SqLpPzaJXo4skVRJXzULtaem_nB4EyJfVy_RKE,142372
155
+ wandb/sdk/wandb_run.py,sha256=2ODQw3QmtePve1I0UJ6wnxLfCnauQPyAlV02Wd-5PN4,142067
153
156
  wandb/sdk/wandb_save.py,sha256=RJeT-_cpmtUxqNk3AmFVW1Tb8k5s46ylmvb8cw54Vks,181
154
157
  wandb/sdk/wandb_settings.py,sha256=SKrzP5W5bN79Q2Pauk4-54kfS-4eh9EZqU-exx7xm7g,65061
155
158
  wandb/sdk/wandb_setup.py,sha256=A-V4BO0Lrz8elnNhme0fQsg-TJx-YIEQBTX30Zo07j8,11079
@@ -205,7 +208,7 @@ wandb/sdk/internal/file_stream.py,sha256=zkgRlto6YIE8KKdW9wLD7ZdfDl1s21g8CQff8ne
205
208
  wandb/sdk/internal/flow_control.py,sha256=0D6AO8nZN6wGO46g6vdj_Lc4w2EztyLdxi7ydMICRA8,8587
206
209
  wandb/sdk/internal/handler.py,sha256=aGyXyML8AelYSjWeg8WhIKiZnN__Ti7xXUBfMJKCmoI,31616
207
210
  wandb/sdk/internal/internal.py,sha256=mz3ki8uFttOo0Zbq5SV_83Y1pJkBj5Uc7imSStFhLxg,12838
208
- wandb/sdk/internal/internal_api.py,sha256=FGc7FYAxTvWU8EqSgub5K_aaeerfghJVgkT0gOSQdMs,107980
211
+ wandb/sdk/internal/internal_api.py,sha256=AC0XKm78cBo0BVkSYRStcvpeR1q_5wdf4DDE_s0CgLw,110317
209
212
  wandb/sdk/internal/internal_util.py,sha256=1BI2ol9hhRukU7zBPbPhUcUXa58i4vLa4ocgBUya6pQ,2655
210
213
  wandb/sdk/internal/job_builder.py,sha256=xlArhh2a7jE8rYlbBU5NDtt0Lau9cDWWExhRDDkiWXU,7788
211
214
  wandb/sdk/internal/profiler.py,sha256=ZpPXJJZhkml3ZL8HPbB-vZGAVPZUv0Wv-nWjOnCMXPg,2350
@@ -235,39 +238,39 @@ wandb/sdk/internal/system/assets/open_metrics.py,sha256=p6u8ygyZQnD66Ve96qbP6fzH
235
238
  wandb/sdk/internal/system/assets/tpu.py,sha256=Iac09nmjUgV6Zm3zfbI8J9wYww671askzvXcovvfn48,4918
236
239
  wandb/sdk/internal/system/assets/trainium.py,sha256=Kl0Y89Bic1OqjmKhtL1wyOB8AnKl5cULAkoYmjZXX54,12340
237
240
  wandb/sdk/launch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
- wandb/sdk/launch/_project_spec.py,sha256=PJi7Fc8eeuhJFNgO-RKWI6aRHIUa4TL1TDjLw9Sqbo8,20440
241
+ wandb/sdk/launch/_project_spec.py,sha256=OzRlnrUo470ekXldX2XXNuzzYQ2GLUfOD5uVBA68gnw,19787
239
242
  wandb/sdk/launch/github_reference.py,sha256=aSTDKT_WMGkci8_TPg2ICPdhiMLCnAy5ZyU17x_qIGY,8275
240
- wandb/sdk/launch/launch.py,sha256=t__p3_9pCNKpYJXss34oTu0Iir09Lc7u_WKD2GDsLso,11172
241
- wandb/sdk/launch/launch_add.py,sha256=3JwPhCeWlatYO8N01LdK1VwtK14SoSLKnq0i_Ibsf68,7941
243
+ wandb/sdk/launch/launch.py,sha256=8KpqUIIBuIPlheYXPrh0bLLgBvVZ6Y7q79Akqldc7Ao,11020
244
+ wandb/sdk/launch/launch_add.py,sha256=1AQ454hBd5opE7m92Boa7Bx4n2yVkG2ne7zGeM6662w,7785
242
245
  wandb/sdk/launch/loader.py,sha256=IsaJCS2GpZMgS8EaqRT8M0ZAzNc-NP8hjL29_Eq42UM,8213
243
- wandb/sdk/launch/utils.py,sha256=10GnP6WBPCY3uplc8PCuis-0qChDMWYaBu9E6PZRQOM,22963
246
+ wandb/sdk/launch/utils.py,sha256=ocrHRoWPfwEn1O6dx1_jIunoZ_8S3hjnqCJJ-eZPvsE,24486
244
247
  wandb/sdk/launch/wandb_reference.py,sha256=t4REjZz5lwB9fjDW2eo8uRgw9KeLsPeZ1Uu8tiFDBfA,4253
245
248
  wandb/sdk/launch/agent/__init__.py,sha256=nwGHzJptq87cXCSAJi7Wv2ShL-HZwDgMo2aFC2Rh20w,85
246
- wandb/sdk/launch/agent/agent.py,sha256=6MV39YCsEs5tTHRw4PyMSm7uHfeY34X6HNhfuw7U43Y,16857
249
+ wandb/sdk/launch/agent/agent.py,sha256=DytOM-Evzqnvr1L_Kt0B23An9T7jby1Q9AkzO8FrhxI,19078
247
250
  wandb/sdk/launch/builder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
248
251
  wandb/sdk/launch/builder/abstract.py,sha256=nFrbUU7HBeJRYMrAy_EUbfGdGi2wAMNT5BubPpTwK7w,2469
249
- wandb/sdk/launch/builder/build.py,sha256=fF3Fz85bUmgv6u5k9bVtxY_ozcjJN9nq73jRXRyp8wU,22100
250
- wandb/sdk/launch/builder/docker_builder.py,sha256=tjDWw-lNMUhR04wOVZJY9nWdPBlyEyAVwC-LndulNnw,5272
251
- wandb/sdk/launch/builder/kaniko_builder.py,sha256=xlALpnhEWjrbJklsKUzuLg1PRo-cJYFGLbqwRZ_ByB4,14635
252
+ wandb/sdk/launch/builder/build.py,sha256=aF24pxsNLcv7vPCbcwlXcTapvIn-gYZ2Q-PXhkBtaOI,20018
253
+ wandb/sdk/launch/builder/docker_builder.py,sha256=ovlDQ_RweyYH8wqKKC9C_ZxyLHsUgezTmq-p3VKyBpQ,6045
254
+ wandb/sdk/launch/builder/kaniko_builder.py,sha256=3AuY3eYidazWrYYfv0z68OnlkJj1_3Qj6w4mats2Zdk,15938
252
255
  wandb/sdk/launch/builder/noop.py,sha256=3ZSGWKYX_ahm7Qt-Z1tXC_eyTRrqenytWbC37Wm3Akg,1490
253
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py,sha256=mPENtvjWzP6jDIn-Rp8bv9TJ5rjCxXpXRIsy8ZBUu4Y,3618
256
+ wandb/sdk/launch/builder/templates/_wandb_bootstrap.py,sha256=k29ACdlAfC6gxEFBo7c5F6VbVVYv3t9-6a6nfNZDiFk,5817
254
257
  wandb/sdk/launch/environment/abstract.py,sha256=k65QRutKWOB6LFTrIMHP8GkWe5MWJYKk5YWFjWEIF3E,926
255
- wandb/sdk/launch/environment/aws_environment.py,sha256=sY9-NsXwkEIhnuRxoE9sKANH2d-fX7GlhzU1Df0Ehf8,9735
258
+ wandb/sdk/launch/environment/aws_environment.py,sha256=cwYVxQ6sWnxhv97ftIBeR9UbZH8ro-1zo6HgjH1LGmQ,9967
256
259
  wandb/sdk/launch/environment/gcp_environment.py,sha256=vksFQyHH7k0oKFHXlzFe4kJ3_8CDaUxsb9ptlbrpPvU,10103
257
260
  wandb/sdk/launch/environment/local_environment.py,sha256=pV7moIX4XuKG5vf64vqGu4yTLUwNQe-eg83iLMd2ilc,2226
258
- wandb/sdk/launch/registry/abstract.py,sha256=Im7PTxZdEv4JNU7tL-uus-j2tLhPud9YiVyg09nTopE,1089
259
- wandb/sdk/launch/registry/elastic_container_registry.py,sha256=7IEQ2lw2RdFRfji04sPz94bAabve9e8WSdfeT3djtHw,4661
260
- wandb/sdk/launch/registry/google_artifact_registry.py,sha256=NImEUh6fMX74QcXSFNO_rmw5KZTDrn4jQcDwSEJ8-2g,5965
261
- wandb/sdk/launch/registry/local_registry.py,sha256=0PkT05rAqmRsdHUwMAfPsClWgObpihFeSF7r0m1ssYU,1356
261
+ wandb/sdk/launch/registry/abstract.py,sha256=3lCuTdqDAAIV_nmgGTfSd2gc1-02dTo5lY-KpuXj-wc,1400
262
+ wandb/sdk/launch/registry/elastic_container_registry.py,sha256=zfpDYJqZnNr9kJkL_HNvFNl5K_cSNngGlXevJlVM6G8,5759
263
+ wandb/sdk/launch/registry/google_artifact_registry.py,sha256=RHgg9j02JGmRebeqFhoIDD71IaZqWVIf3vZM1R2zfGI,7133
264
+ wandb/sdk/launch/registry/local_registry.py,sha256=851LoTJO9G08JZgxMmwMimiNH7OHxltjIj_tlpqf8ro,1720
262
265
  wandb/sdk/launch/runner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
- wandb/sdk/launch/runner/abstract.py,sha256=29MUdAYgCSuFkXCUrccBQoqPwEuxYCcXphYk7XOx8Fk,5762
264
- wandb/sdk/launch/runner/kubernetes_runner.py,sha256=zBG7RFxza4fOE4gTdwMpJA_SWc72YkvkA80w35qxjG0,18429
265
- wandb/sdk/launch/runner/local_container.py,sha256=usJI1rnToAWa_6Nhy8Cxi8pwskTApwRXW3haXPFkA9s,8470
266
- wandb/sdk/launch/runner/local_process.py,sha256=E0081lkrCR5-9d8Mwu5QSagCSmlkv84xTxomXLwg-O4,3361
267
- wandb/sdk/launch/runner/sagemaker_runner.py,sha256=j9eRUF9rF-AlPSRmCptx9tIvFQSGP-GY3gNbG2TR1tE,12166
268
- wandb/sdk/launch/runner/vertex_runner.py,sha256=nFdZNIrNiunuiTaDiSWaALvdvL5ZoJhUj31aHl8sQzo,7275
266
+ wandb/sdk/launch/runner/abstract.py,sha256=Lgoylgg5ifuwBLL_bhNzM1Q5mXUaG4adIbkrfzsnKCU,5192
267
+ wandb/sdk/launch/runner/kubernetes_runner.py,sha256=YnGxySJqu795cg3DI0Nnf0dREdW0yVbvCxVtWBZcdwY,18732
268
+ wandb/sdk/launch/runner/local_container.py,sha256=wGhfwlQj6bfnf3fc4VxOy8grLOo-NLO0Y9XG2xqY-N8,8257
269
+ wandb/sdk/launch/runner/local_process.py,sha256=4n7YQcYhUVQhXl_qMdypgo6hapy96V2UaHK4uLb965o,3280
270
+ wandb/sdk/launch/runner/sagemaker_runner.py,sha256=EL7Wo04Dlerv87Vv5W20XhOnoz0Idg4WWICG_lo7uHM,12085
271
+ wandb/sdk/launch/runner/vertex_runner.py,sha256=yEBSFl2_cFyTuKs6uUnpX4uKN-JRcuI_2OuIkTeqH_0,7195
269
272
  wandb/sdk/launch/sweeps/__init__.py,sha256=ROE75akKQpMzkZKZ-dg_deCyluQr0u2oo617DIsWt-c,958
270
- wandb/sdk/launch/sweeps/scheduler.py,sha256=matOWlpOWAyNEGIYV0ikD61e-WgtnOjcOXEwsC41zNM,10663
273
+ wandb/sdk/launch/sweeps/scheduler.py,sha256=pYT-ZHsx68l_h3vEcscx3cHL8R9zmAP268D87o4n2_w,11722
271
274
  wandb/sdk/launch/sweeps/scheduler_sweep.py,sha256=GLcB3RsOTX2ZQ914nR17MnNL765l57V_7MSKmfGYuB8,5891
272
275
  wandb/sdk/lib/__init__.py,sha256=PeqhRWcgiOzo6LliKn8UgNOXMzbr2k0dx5egTAKa7g4,149
273
276
  wandb/sdk/lib/_settings_toposort_generate.py,sha256=8xNbH9JAMDyOcga0p_nfUoWqQdR1AUMBGUDplYbQiyY,5272
@@ -339,7 +342,7 @@ wandb/sklearn/plot/clusterer.py,sha256=_zeNa_DgNT7YeRuTFiFbgpIGL_dUV8lmQqFztJ7R1
339
342
  wandb/sklearn/plot/regressor.py,sha256=yw3sFuWGDeD_mByi-Xuef79_4zdpE6ODJyIPiYEY0z8,3905
340
343
  wandb/sklearn/plot/shared.py,sha256=_BMOiBmwNO_vIH5f2SDQcPASrJabxmRuKuELwA27-9k,2732
341
344
  wandb/sync/__init__.py,sha256=vZMKb-AOlEwKQf4GNTndrgHuvGCeDMDTZAVwimtXZ0o,101
342
- wandb/sync/sync.py,sha256=Pbi2odPIVGMTUuJCYkZQVq1MNNS4mVtqv3NRmYqDLf4,14802
345
+ wandb/sync/sync.py,sha256=gdLj7biCZllbK4a0dCvAR7kh3WMRfin4O7wPHfdlAQ4,14859
343
346
  wandb/testing/relay.py,sha256=DNTk5Yd8yUn39ZfxAd0D1q-N093PIwhJVPeO6pMLXoo,25127
344
347
  wandb/vendor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
345
348
  wandb/vendor/gql-0.2.0/setup.py,sha256=_osNap_aCOVvTlDwP9f-aI10TJbpIflxcG6fEQoAxNs,1314
@@ -725,9 +728,9 @@ wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/platform.py,sha256=UORYTNVcUSE2
725
728
  wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/unicode_paths.py,sha256=UWX8DB97ygkEeSxWQUYCHR4MahNilux7vl5TCTQtPPk,2190
726
729
  wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/win32stat.py,sha256=ZOevOTbSo8NRiIxkuBVGaG4yigWnPoO0goxAi-jsBkM,3828
727
730
  wandb/xgboost/__init__.py,sha256=GRixyb89ki1Znfw48RRiRPxZnK41aEj1L48bBG6-Kh0,230
728
- wandb-0.13.11.dist-info/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
729
- wandb-0.13.11.dist-info/METADATA,sha256=wPRS4nnaJoi359Ta7ebPhpOuQoICt12XGUTQjTHKrVI,7927
730
- wandb-0.13.11.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
731
- wandb-0.13.11.dist-info/entry_points.txt,sha256=5VEDOaS7CgcNfzb_FEaNkLS2AyPLzJJdY74xYYipTdQ,68
732
- wandb-0.13.11.dist-info/top_level.txt,sha256=gPLPSekU6Labh_9yJz7WLb6Q9DK72I02_ARvDEG9Xsw,6
733
- wandb-0.13.11.dist-info/RECORD,,
731
+ wandb-0.14.0.dist-info/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
732
+ wandb-0.14.0.dist-info/METADATA,sha256=rf29u6KpQheWvq4tiW_Y8C6kx-XrdlPaiaGuVbInlpw,7926
733
+ wandb-0.14.0.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
734
+ wandb-0.14.0.dist-info/entry_points.txt,sha256=5VEDOaS7CgcNfzb_FEaNkLS2AyPLzJJdY74xYYipTdQ,68
735
+ wandb-0.14.0.dist-info/top_level.txt,sha256=gPLPSekU6Labh_9yJz7WLb6Q9DK72I02_ARvDEG9Xsw,6
736
+ wandb-0.14.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.1)
2
+ Generator: bdist_wheel (0.40.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5