wandb 0.13.11__py3-none-any.whl → 0.14.0__py3-none-any.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.
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