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.
- wandb/__init__.py +1 -1
- wandb/apis/importers/__init__.py +4 -0
- wandb/apis/importers/base.py +312 -0
- wandb/apis/importers/mlflow.py +113 -0
- wandb/apis/internal.py +9 -0
- wandb/apis/public.py +0 -2
- wandb/cli/cli.py +100 -72
- wandb/docker/__init__.py +33 -5
- wandb/proto/v3/wandb_telemetry_pb2.py +10 -10
- wandb/proto/v4/wandb_telemetry_pb2.py +10 -10
- wandb/sdk/internal/internal_api.py +85 -9
- wandb/sdk/launch/_project_spec.py +45 -55
- wandb/sdk/launch/agent/agent.py +80 -18
- wandb/sdk/launch/builder/build.py +16 -74
- wandb/sdk/launch/builder/docker_builder.py +36 -8
- wandb/sdk/launch/builder/kaniko_builder.py +78 -37
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +68 -18
- wandb/sdk/launch/environment/aws_environment.py +4 -0
- wandb/sdk/launch/launch.py +1 -6
- wandb/sdk/launch/launch_add.py +0 -5
- wandb/sdk/launch/registry/abstract.py +12 -0
- wandb/sdk/launch/registry/elastic_container_registry.py +31 -1
- wandb/sdk/launch/registry/google_artifact_registry.py +32 -0
- wandb/sdk/launch/registry/local_registry.py +15 -1
- wandb/sdk/launch/runner/abstract.py +0 -14
- wandb/sdk/launch/runner/kubernetes_runner.py +25 -19
- wandb/sdk/launch/runner/local_container.py +7 -8
- wandb/sdk/launch/runner/local_process.py +0 -3
- wandb/sdk/launch/runner/sagemaker_runner.py +0 -3
- wandb/sdk/launch/runner/vertex_runner.py +0 -2
- wandb/sdk/launch/sweeps/scheduler.py +39 -10
- wandb/sdk/launch/utils.py +52 -4
- wandb/sdk/wandb_run.py +3 -10
- wandb/sync/sync.py +1 -0
- wandb/util.py +1 -0
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/METADATA +1 -1
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/RECORD +41 -38
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/WHEEL +1 -1
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/LICENSE +0 -0
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
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}
|
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",
|
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
|
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"
|
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
|
@@ -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
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
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("
|
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("
|
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
@@ -1,4 +1,4 @@
|
|
1
|
-
wandb/__init__.py,sha256=
|
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=
|
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=
|
19
|
+
wandb/apis/internal.py,sha256=2nOLHiOVv4Pduh4l6Zy3g7kGybViutn1ATbXeB6n1sA,6152
|
20
20
|
wandb/apis/normalize.py,sha256=PzB9YfayTfzM262m5H5Z7I0qH3G5gNwtkPt3lTu0BHg,2141
|
21
|
-
wandb/apis/public.py,sha256=
|
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=
|
41
|
-
wandb/docker/__init__.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
241
|
-
wandb/sdk/launch/launch_add.py,sha256=
|
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=
|
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=
|
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=
|
250
|
-
wandb/sdk/launch/builder/docker_builder.py,sha256=
|
251
|
-
wandb/sdk/launch/builder/kaniko_builder.py,sha256=
|
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=
|
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=
|
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=
|
259
|
-
wandb/sdk/launch/registry/elastic_container_registry.py,sha256=
|
260
|
-
wandb/sdk/launch/registry/google_artifact_registry.py,sha256=
|
261
|
-
wandb/sdk/launch/registry/local_registry.py,sha256=
|
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=
|
264
|
-
wandb/sdk/launch/runner/kubernetes_runner.py,sha256=
|
265
|
-
wandb/sdk/launch/runner/local_container.py,sha256=
|
266
|
-
wandb/sdk/launch/runner/local_process.py,sha256=
|
267
|
-
wandb/sdk/launch/runner/sagemaker_runner.py,sha256=
|
268
|
-
wandb/sdk/launch/runner/vertex_runner.py,sha256=
|
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=
|
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=
|
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.
|
729
|
-
wandb-0.
|
730
|
-
wandb-0.
|
731
|
-
wandb-0.
|
732
|
-
wandb-0.
|
733
|
-
wandb-0.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|