wandb 0.19.3__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.19.4rc1__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Sign up to get free protection for your applications and to get access to all the features.
wandb/__init__.py CHANGED
@@ -10,7 +10,7 @@ For reference documentation, see https://docs.wandb.com/ref/python.
10
10
  """
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.19.3"
13
+ __version__ = "0.19.4rc1"
14
14
 
15
15
 
16
16
  from wandb.errors import Error
wandb/__init__.pyi CHANGED
@@ -103,7 +103,7 @@ if TYPE_CHECKING:
103
103
  import wandb
104
104
  from wandb.plot import CustomChart
105
105
 
106
- __version__: str = "0.19.3"
106
+ __version__: str = "0.19.4rc1"
107
107
 
108
108
  run: Run | None
109
109
  config: wandb_config.Config
wandb/bin/wandb-core CHANGED
Binary file
@@ -10,7 +10,6 @@ InterfaceRelay: Responses are routed to a relay queue (not matching uuids)
10
10
 
11
11
  import gzip
12
12
  import logging
13
- import os
14
13
  import time
15
14
  from abc import abstractmethod
16
15
  from pathlib import Path
@@ -100,8 +99,6 @@ class InterfaceBase:
100
99
 
101
100
  def _hack_set_run(self, run: "Run") -> None:
102
101
  self._run = run
103
- current_pid = os.getpid()
104
- self._run._set_iface_pid(current_pid)
105
102
 
106
103
  def publish_header(self) -> None:
107
104
  header = pb.HeaderRecord()
@@ -653,15 +650,13 @@ class InterfaceBase:
653
650
 
654
651
  def publish_partial_history(
655
652
  self,
653
+ run: "Run",
656
654
  data: dict,
657
655
  user_step: int,
658
656
  step: Optional[int] = None,
659
657
  flush: Optional[bool] = None,
660
658
  publish_step: bool = True,
661
- run: Optional["Run"] = None,
662
659
  ) -> None:
663
- run = run or self._run
664
-
665
660
  data = history_dict_to_json(run, data, step=user_step, ignore_copy_err=True)
666
661
  data.pop("_step", None)
667
662
 
@@ -688,12 +683,11 @@ class InterfaceBase:
688
683
 
689
684
  def publish_history(
690
685
  self,
686
+ run: "Run",
691
687
  data: dict,
692
688
  step: Optional[int] = None,
693
- run: Optional["Run"] = None,
694
689
  publish_step: bool = True,
695
690
  ) -> None:
696
- run = run or self._run
697
691
  data = history_dict_to_json(run, data, step=step)
698
692
  history = pb.HistoryRecord()
699
693
  if publish_step:
@@ -454,7 +454,9 @@ class TBEventConsumer:
454
454
  row[chart.spec.table_key] = chart.table
455
455
 
456
456
  self._tbwatcher._interface.publish_history(
457
- row, run=self._internal_run, publish_step=False
457
+ self._internal_run,
458
+ row,
459
+ publish_step=False,
458
460
  )
459
461
 
460
462
 
wandb/sdk/wandb_init.py CHANGED
@@ -11,6 +11,7 @@ For more on using `wandb.init()`, including code snippets, check out our
11
11
  from __future__ import annotations
12
12
 
13
13
  import copy
14
+ import dataclasses
14
15
  import json
15
16
  import logging
16
17
  import os
@@ -105,16 +106,40 @@ def _handle_launch_config(settings: Settings) -> dict[str, Any]:
105
106
  return launch_run_config
106
107
 
107
108
 
108
- class _WandbInit:
109
- _init_telemetry_obj: telemetry.TelemetryRecord
109
+ @dataclasses.dataclass(frozen=True)
110
+ class _ConfigParts:
111
+ base_no_artifacts: dict[str, Any]
112
+ """The run config passed to `init()` minus any artifact-valued keys."""
113
+
114
+ sweep_no_artifacts: dict[str, Any]
115
+ """The config loaded as part of a sweep minus any artifact-valued keys."""
116
+
117
+ launch_no_artifacts: dict[str, Any]
118
+ """The config loaded as part of Launch minus any artifact-valued keys."""
119
+
120
+ artifacts: dict[str, Any]
121
+ """Artifact keys removed from config dictionaries.
122
+
123
+ Due to implementation details of how a Run is constructed,
124
+ artifacts must be inserted into its config after initialization.
125
+ """
126
+
110
127
 
111
- def __init__(self, wl: wandb_setup._WandbSetup) -> None:
128
+ class _WandbInit:
129
+ def __init__(
130
+ self,
131
+ wl: wandb_setup._WandbSetup,
132
+ telemetry: telemetry.TelemetryRecord,
133
+ ) -> None:
112
134
  self._wl = wl
113
135
 
136
+ self._telemetry = telemetry
137
+ """Telemetry gathered before creating a run.
138
+
139
+ After the run is created, `telemetry.context()` is used instead.
140
+ """
141
+
114
142
  self.kwargs = None
115
- self.sweep_config: dict[str, Any] = {}
116
- self.launch_config: dict[str, Any] = {}
117
- self.config: dict[str, Any] = {}
118
143
  self.run: Run | None = None
119
144
  self.backend: Backend | None = None
120
145
 
@@ -122,8 +147,6 @@ class _WandbInit:
122
147
  self.notebook: wandb.jupyter.Notebook | None = None # type: ignore
123
148
  self.printer = printer.new_printer()
124
149
 
125
- self._init_telemetry_obj = telemetry.TelemetryRecord()
126
-
127
150
  self.deprecated_features_used: dict[str, str] = dict()
128
151
 
129
152
  @property
@@ -229,7 +252,7 @@ class _WandbInit:
229
252
  warn("run_id", init_settings.run_id)
230
253
  init_settings.run_id = None
231
254
 
232
- def compute_run_settings(self, init_settings: Settings) -> Settings:
255
+ def make_run_settings(self, init_settings: Settings) -> Settings:
233
256
  """Returns the run's settings.
234
257
 
235
258
  Args:
@@ -250,8 +273,7 @@ class _WandbInit:
250
273
  if not settings.sagemaker_disable and sagemaker.is_using_sagemaker():
251
274
  if sagemaker.set_run_id(settings):
252
275
  self._logger.info("set run ID and group based on SageMaker")
253
- with telemetry.context(obj=self._init_telemetry_obj) as tel:
254
- tel.feature.sagemaker = True
276
+ self._telemetry.feature.sagemaker = True
255
277
 
256
278
  # get status of code saving before applying user settings
257
279
  save_code_pre_user_settings = settings.save_code
@@ -355,25 +377,24 @@ class _WandbInit:
355
377
  run_id=settings.run_id,
356
378
  )
357
379
 
358
- def setup(
380
+ def make_run_config(
359
381
  self,
360
382
  settings: Settings,
361
383
  config: dict | str | None = None,
362
384
  config_exclude_keys: list[str] | None = None,
363
385
  config_include_keys: list[str] | None = None,
364
- monitor_gym: bool | None = None,
365
- ) -> None:
366
- """Compute the run's config and some telemetry."""
367
- with telemetry.context(obj=self._init_telemetry_obj) as tel:
368
- if config is not None:
369
- tel.feature.set_init_config = True
370
- if settings.run_name is not None:
371
- tel.feature.set_init_name = True
372
- if settings.run_id is not None:
373
- tel.feature.set_init_id = True
374
- if settings.run_tags is not None:
375
- tel.feature.set_init_tags = True
386
+ ) -> _ConfigParts:
387
+ """Construct the run's config.
388
+
389
+ Args:
390
+ settings: The run's finalized settings.
391
+ config: The config passed to `init()`.
392
+ config_exclude_keys: Deprecated. Keys to filter out from `config`.
393
+ config_include_keys: Deprecated. Keys to include from `config`.
376
394
 
395
+ Returns:
396
+ Initial values for the run's config.
397
+ """
377
398
  # TODO: remove this once officially deprecated
378
399
  if config_exclude_keys:
379
400
  self.deprecated_features_used["config_exclude_keys"] = (
@@ -389,49 +410,51 @@ class _WandbInit:
389
410
  exclude=config_exclude_keys,
390
411
  )
391
412
 
392
- # Construct the run's config.
393
- self.config = dict()
394
- self.init_artifact_config: dict[str, Any] = dict()
413
+ result = _ConfigParts(
414
+ base_no_artifacts=dict(),
415
+ sweep_no_artifacts=dict(),
416
+ launch_no_artifacts=dict(),
417
+ artifacts=dict(),
418
+ )
395
419
 
396
420
  if not settings.sagemaker_disable and sagemaker.is_using_sagemaker():
397
421
  sagemaker_config = sagemaker.parse_sm_config()
398
- self._split_artifacts_from_config(sagemaker_config, self.config)
399
-
400
- with telemetry.context(obj=self._init_telemetry_obj) as tel:
401
- tel.feature.sagemaker = True
422
+ self._split_artifacts_from_config(
423
+ sagemaker_config,
424
+ config_target=result.base_no_artifacts,
425
+ artifacts=result.artifacts,
426
+ )
427
+ self._telemetry.feature.sagemaker = True
402
428
 
403
429
  if self._wl._config:
404
- self._split_artifacts_from_config(self._wl._config, self.config)
430
+ self._split_artifacts_from_config(
431
+ self._wl._config,
432
+ config_target=result.base_no_artifacts,
433
+ artifacts=result.artifacts,
434
+ )
405
435
 
406
436
  if config and isinstance(config, dict):
407
- self._split_artifacts_from_config(config, self.config)
408
-
409
- self.sweep_config = dict()
410
- sweep_config = self._wl._sweep_config or dict()
411
- if sweep_config:
412
- self._split_artifacts_from_config(sweep_config, self.sweep_config)
413
-
414
- if monitor_gym and len(wandb.patched["gym"]) == 0:
415
- wandb.gym.monitor() # type: ignore
416
-
417
- if wandb.patched["tensorboard"]:
418
- with telemetry.context(obj=self._init_telemetry_obj) as tel:
419
- tel.feature.tensorboard_patch = True
437
+ self._split_artifacts_from_config(
438
+ config,
439
+ config_target=result.base_no_artifacts,
440
+ artifacts=result.artifacts,
441
+ )
420
442
 
421
- if settings.sync_tensorboard:
422
- if len(wandb.patched["tensorboard"]) == 0:
423
- wandb.tensorboard.patch() # type: ignore
424
- with telemetry.context(obj=self._init_telemetry_obj) as tel:
425
- tel.feature.tensorboard_sync = True
443
+ if self._wl._sweep_config:
444
+ self._split_artifacts_from_config(
445
+ self._wl._sweep_config,
446
+ config_target=result.sweep_no_artifacts,
447
+ artifacts=result.artifacts,
448
+ )
426
449
 
427
- if not settings._noop:
428
- self._log_setup(settings)
450
+ if launch_config := _handle_launch_config(settings):
451
+ self._split_artifacts_from_config(
452
+ launch_config,
453
+ config_target=result.launch_no_artifacts,
454
+ artifacts=result.artifacts,
455
+ )
429
456
 
430
- if settings._jupyter:
431
- self._jupyter_setup(settings)
432
- launch_config = _handle_launch_config(settings)
433
- if launch_config:
434
- self._split_artifacts_from_config(launch_config, self.launch_config)
457
+ return result
435
458
 
436
459
  def teardown(self) -> None:
437
460
  # TODO: currently this is only called on failed wandb.init attempts
@@ -441,11 +464,14 @@ class _WandbInit:
441
464
  hook.call()
442
465
 
443
466
  def _split_artifacts_from_config(
444
- self, config_source: dict, config_target: dict
467
+ self,
468
+ config_source: dict,
469
+ config_target: dict,
470
+ artifacts: dict,
445
471
  ) -> None:
446
472
  for k, v in config_source.items():
447
473
  if _is_artifact_representation(v):
448
- self.init_artifact_config[k] = v
474
+ artifacts[k] = v
449
475
  else:
450
476
  config_target.setdefault(k, v)
451
477
 
@@ -540,7 +566,7 @@ class _WandbInit:
540
566
  ipython.display_pub.publish = ipython.display_pub._orig_publish
541
567
  del ipython.display_pub._orig_publish
542
568
 
543
- def _jupyter_setup(self, settings: Settings) -> None:
569
+ def monkeypatch_ipython(self, settings: Settings) -> None:
544
570
  """Add hooks, and session history saving."""
545
571
  self.notebook = wandb.jupyter.Notebook(settings) # type: ignore
546
572
  ipython = self.notebook.shell
@@ -566,7 +592,7 @@ class _WandbInit:
566
592
 
567
593
  ipython.display_pub.publish = publish
568
594
 
569
- def _log_setup(self, settings: Settings) -> None:
595
+ def setup_run_log_directory(self, settings: Settings) -> None:
570
596
  """Set up logging from settings."""
571
597
  filesystem.mkdir_exists_ok(os.path.dirname(settings.log_user))
572
598
  filesystem.mkdir_exists_ok(os.path.dirname(settings.log_internal))
@@ -598,15 +624,18 @@ class _WandbInit:
598
624
  self._logger.info(f"Logging user logs to {settings.log_user}")
599
625
  self._logger.info(f"Logging internal logs to {settings.log_internal}")
600
626
 
601
- def _make_run_disabled(self) -> Run:
627
+ def make_disabled_run(self, config: _ConfigParts) -> Run:
602
628
  """Returns a Run-like object where all methods are no-ops.
603
629
 
604
- This method is used when wandb.init(mode="disabled") is called or WANDB_MODE=disabled
605
- is set. It creates a Run object that mimics the behavior of a normal Run but doesn't
630
+ This method is used when the `mode` setting is set to "disabled", such as
631
+ by wandb.init(mode="disabled") or by setting the WANDB_MODE environment
632
+ variable to "disabled".
633
+
634
+ It creates a Run object that mimics the behavior of a normal Run but doesn't
606
635
  communicate with the W&B servers.
607
636
 
608
- The returned Run object has all expected attributes and methods, but they are
609
- no-op versions that don't perform any actual logging or communication.
637
+ The returned Run object has all expected attributes and methods, but they
638
+ are no-op versions that don't perform any actual logging or communication.
610
639
  """
611
640
  run_id = runid.generate_id()
612
641
  drun = Run(
@@ -624,8 +653,8 @@ class _WandbInit:
624
653
  )
625
654
  # config, summary, and metadata objects
626
655
  drun._config = wandb.sdk.wandb_config.Config()
627
- drun._config.update(self.sweep_config)
628
- drun._config.update(self.config)
656
+ drun._config.update(config.sweep_no_artifacts)
657
+ drun._config.update(config.base_no_artifacts)
629
658
  drun.summary = SummaryDisabled() # type: ignore
630
659
  drun._Run__metadata = wandb.sdk.wandb_metadata.Metadata()
631
660
 
@@ -710,18 +739,17 @@ class _WandbInit:
710
739
  percent_done = handle.percent_done
711
740
  self.printer.progress_update(line, percent_done=percent_done)
712
741
 
713
- def init(self, settings: Settings) -> Run: # noqa: C901
742
+ def init(self, settings: Settings, config: _ConfigParts) -> Run: # noqa: C901
714
743
  self._logger.info("calling init triggers")
715
744
  trigger.call("on_init")
716
745
 
717
746
  assert self._wl is not None
718
747
 
719
748
  self._logger.info(
720
- f"wandb.init called with sweep_config: {self.sweep_config}\nconfig: {self.config}"
749
+ f"wandb.init called with sweep_config: {config.sweep_no_artifacts}"
750
+ f"\nconfig: {config.base_no_artifacts}"
721
751
  )
722
752
 
723
- if settings._noop:
724
- return self._make_run_disabled()
725
753
  if (
726
754
  settings.reinit or (settings._jupyter and settings.reinit is not False)
727
755
  ) and len(self._wl._global_run_stack) > 0:
@@ -738,8 +766,11 @@ class _WandbInit:
738
766
  latest_run.finish()
739
767
  elif wandb.run is not None and os.getpid() == wandb.run._init_pid:
740
768
  self._logger.info("wandb.init() called when a run is still active")
769
+
770
+ # NOTE: Updates telemetry on the pre-existing run.
741
771
  with telemetry.context() as tel:
742
772
  tel.feature.init_return_run = True
773
+
743
774
  return wandb.run
744
775
 
745
776
  self._logger.info("starting backend")
@@ -765,14 +796,14 @@ class _WandbInit:
765
796
 
766
797
  # resuming needs access to the server, check server_status()?
767
798
  run = Run(
768
- config=self.config,
799
+ config=config.base_no_artifacts,
769
800
  settings=settings,
770
- sweep_config=self.sweep_config,
771
- launch_config=self.launch_config,
801
+ sweep_config=config.sweep_no_artifacts,
802
+ launch_config=config.launch_no_artifacts,
772
803
  )
773
804
 
774
805
  # Populate initial telemetry
775
- with telemetry.context(run=run, obj=self._init_telemetry_obj) as tel:
806
+ with telemetry.context(run=run, obj=self._telemetry) as tel:
776
807
  tel.cli_version = wandb.__version__
777
808
  tel.python_version = platform.python_version()
778
809
  tel.platform = f"{platform.system()}-{platform.machine()}".lower()
@@ -873,15 +904,11 @@ class _WandbInit:
873
904
 
874
905
  run_result: pb.RunUpdateResult | None = None
875
906
 
876
- if settings._offline:
877
- with telemetry.context(run=run) as tel:
878
- tel.feature.offline = True
879
-
880
- if settings.resume:
881
- wandb.termwarn(
882
- "`resume` will be ignored since W&B syncing is set to `offline`. "
883
- f"Starting a new run with run id {run.id}."
884
- )
907
+ if settings._offline and settings.resume:
908
+ wandb.termwarn(
909
+ "`resume` will be ignored since W&B syncing is set to `offline`. "
910
+ f"Starting a new run with run id {run.id}."
911
+ )
885
912
  error: wandb.Error | None = None
886
913
 
887
914
  timeout = settings.init_timeout
@@ -970,7 +997,7 @@ class _WandbInit:
970
997
  # put artifacts in run config here
971
998
  # since doing so earlier will cause an error
972
999
  # as the run is not upserted
973
- for k, v in self.init_artifact_config.items():
1000
+ for k, v in config.artifacts.items():
974
1001
  run.config.update({k: v}, allow_val_change=True)
975
1002
  job_artifact = run._launch_artifact_mapping.get(
976
1003
  wandb.util.LAUNCH_JOB_ARTIFACT_SLOT_NAME
@@ -1062,6 +1089,26 @@ def _attach(
1062
1089
  return run
1063
1090
 
1064
1091
 
1092
+ def _monkeypatch_openai_gym() -> None:
1093
+ """Patch OpenAI gym to log to the global `wandb.run`."""
1094
+ if len(wandb.patched["gym"]) > 0:
1095
+ return
1096
+
1097
+ from wandb.integration import gym
1098
+
1099
+ gym.monitor()
1100
+
1101
+
1102
+ def _monkeypatch_tensorboard() -> None:
1103
+ """Patch TensorBoard to log to the global `wandb.run`."""
1104
+ if len(wandb.patched["tensorboard"]) > 0:
1105
+ return
1106
+
1107
+ from wandb.integration import tensorboard as tb_module
1108
+
1109
+ tb_module.patch()
1110
+
1111
+
1065
1112
  def init( # noqa: C901
1066
1113
  entity: str | None = None,
1067
1114
  project: str | None = None,
@@ -1299,6 +1346,8 @@ def init( # noqa: C901
1299
1346
  """
1300
1347
  wandb._assert_is_user_process() # type: ignore
1301
1348
 
1349
+ init_telemetry = telemetry.TelemetryRecord()
1350
+
1302
1351
  init_settings = Settings()
1303
1352
  if isinstance(settings, dict):
1304
1353
  init_settings = Settings(**settings)
@@ -1346,26 +1395,55 @@ def init( # noqa: C901
1346
1395
  if resume_from is not None:
1347
1396
  init_settings.resume_from = resume_from # type: ignore
1348
1397
 
1398
+ if config is not None:
1399
+ init_telemetry.feature.set_init_config = True
1400
+
1349
1401
  wl: wandb_setup._WandbSetup | None = None
1350
1402
 
1351
1403
  try:
1352
1404
  wl = wandb.setup()
1353
1405
 
1354
- wi = _WandbInit(wl)
1406
+ wi = _WandbInit(wl, init_telemetry)
1355
1407
 
1356
1408
  wi.maybe_login(init_settings)
1357
- run_settings = wi.compute_run_settings(init_settings)
1409
+ run_settings = wi.make_run_settings(init_settings)
1410
+
1411
+ if run_settings.run_id is not None:
1412
+ init_telemetry.feature.set_init_id = True
1413
+ if run_settings.run_name is not None:
1414
+ init_telemetry.feature.set_init_name = True
1415
+ if run_settings.run_tags is not None:
1416
+ init_telemetry.feature.set_init_tags = True
1417
+ if run_settings._offline:
1418
+ init_telemetry.feature.offline = True
1419
+
1358
1420
  wi.set_run_id(run_settings)
1359
1421
 
1360
- wi.setup(
1422
+ run_config = wi.make_run_config(
1361
1423
  settings=run_settings,
1362
1424
  config=config,
1363
1425
  config_exclude_keys=config_exclude_keys,
1364
1426
  config_include_keys=config_include_keys,
1365
- monitor_gym=monitor_gym,
1366
1427
  )
1367
1428
 
1368
- return wi.init(run_settings)
1429
+ if run_settings._noop:
1430
+ return wi.make_disabled_run(run_config)
1431
+
1432
+ wi.setup_run_log_directory(run_settings)
1433
+ if run_settings._jupyter:
1434
+ wi.monkeypatch_ipython(run_settings)
1435
+
1436
+ if monitor_gym:
1437
+ _monkeypatch_openai_gym()
1438
+
1439
+ if wandb.patched["tensorboard"]:
1440
+ # NOTE: The user may have called the patch function directly.
1441
+ init_telemetry.feature.tensorboard_patch = True
1442
+ if run_settings.sync_tensorboard:
1443
+ _monkeypatch_tensorboard()
1444
+ init_telemetry.feature.tensorboard_sync = True
1445
+
1446
+ return wi.init(run_settings, run_config)
1369
1447
 
1370
1448
  except KeyboardInterrupt as e:
1371
1449
  if wl:
wandb/sdk/wandb_run.py CHANGED
@@ -547,8 +547,6 @@ class Run:
547
547
 
548
548
  _init_pid: int
549
549
  _attach_pid: int
550
- _iface_pid: int | None
551
- _iface_port: int | None
552
550
 
553
551
  _attach_id: str | None
554
552
  _is_attached: bool
@@ -707,10 +705,6 @@ class Run:
707
705
  if launch_trace_id:
708
706
  self._config[wandb_key]["launch_trace_id"] = launch_trace_id
709
707
 
710
- # interface pid and port configured when backend is configured (See _hack_set_run)
711
- # TODO: using pid isn't the best for windows as pid reuse can happen more often than unix
712
- self._iface_pid = None
713
- self._iface_port = None
714
708
  self._attach_id = None
715
709
  self._is_attached = False
716
710
  self._is_finished = False
@@ -721,12 +715,6 @@ class Run:
721
715
  if not self._settings.x_disable_service:
722
716
  self._attach_id = self._settings.run_id
723
717
 
724
- def _set_iface_pid(self, iface_pid: int) -> None:
725
- self._iface_pid = iface_pid
726
-
727
- def _set_iface_port(self, iface_port: int) -> None:
728
- self._iface_port = iface_port
729
-
730
718
  def _handle_launch_artifact_overrides(self) -> None:
731
719
  if self._settings.launch and (os.environ.get("WANDB_ARTIFACTS") is not None):
732
720
  try:
@@ -1442,6 +1430,7 @@ class Run:
1442
1430
 
1443
1431
  not_using_tensorboard = len(wandb.patched["tensorboard"]) == 0
1444
1432
  self._backend.interface.publish_partial_history(
1433
+ self,
1445
1434
  data,
1446
1435
  user_step=self._step,
1447
1436
  step=step,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wandb
3
- Version: 0.19.3
3
+ Version: 0.19.4rc1
4
4
  Summary: A CLI and library for interacting with the Weights & Biases API.
5
5
  Project-URL: Source, https://github.com/wandb/wandb
6
6
  Project-URL: Bug Reports, https://github.com/wandb/wandb/issues
@@ -1,17 +1,12 @@
1
1
  package_readme.md,sha256=U9047nyMDICgctm1HLm4HfXwFnFKsEn2m77hsYPUZ1I,4298
2
- wandb-0.19.3.dist-info/WHEEL,sha256=fTf-veJdTwcKkwyiHTvgNV2L-0jwiK0w7ozo8ARrNAg,143
3
- wandb-0.19.3.dist-info/METADATA,sha256=AGD2Iwy-cUjmtannnNpN4Nh9wQAjRZw7WgFow2-DvwI,10282
4
- wandb-0.19.3.dist-info/RECORD,,
5
- wandb-0.19.3.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
6
- wandb-0.19.3.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
7
2
  wandb/wandb_controller.py,sha256=SksJdgwn14PpnUoIaBjJ9Ki4Nksl9BpQGGn42hT0xZg,24936
8
3
  wandb/jupyter.py,sha256=ip6ukYdoFzvPiHO-IUNnbMMxRnYl3ebEoC0X143_VEw,17274
9
4
  wandb/wandb_run.py,sha256=CNh9S6uubFk8FphQjzkbvedyyGCN9aBEsRBKjy8tqqs,155
10
5
  wandb/trigger.py,sha256=PaitU3sX6ekGkd2R8iD6d_VtI72ypF7LaPBXh3rXY7Q,615
11
6
  wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
7
  wandb/__main__.py,sha256=gripuDgB7J8wMMeJt4CIBRjn1BMSFr5zvsrt585Pnj4,64
13
- wandb/__init__.py,sha256=5f1_Sih9Sxjo5YN6UOofmcFjW0XnL5FxgWk-saYyMhw,6988
14
- wandb/__init__.pyi,sha256=__KjZYDXGiHshy_OUrsV7chJrIiOon8DuzRjM6ubHnc,47024
8
+ wandb/__init__.py,sha256=amlCK5n_1hyN1-MkgQ3CWpMhvrRq-X8B9Q4iZemjWzY,6991
9
+ wandb/__init__.pyi,sha256=nZ_mrCwelWNIQBbhGrJ1cKX8z_IfihKjoMc3ByY0loM,47027
15
10
  wandb/sklearn.py,sha256=hbPkefhS39A1RRymn0nHZZmKM2TrOd4xjlkthTZe9pY,803
16
11
  wandb/wandb_agent.py,sha256=0TKjcJ8jxEqaXMrs_dIflXfWFFOaulfSjzp_fpYiXD0,20985
17
12
  wandb/env.py,sha256=ImVRezUi1wpXf2ogJ4IY9YNaELqon3k3S6-vCMNNzwQ,13505
@@ -29,7 +24,7 @@ wandb/analytics/__init__.py,sha256=WG_Mh20Hr8d3vDmGMcfDXCMEIew3uzDYZAJwFsrbAug,5
29
24
  wandb/sdk/wandb_metric.py,sha256=a3GiQXr6H18m81uobYjlJaC8CL8iANzI42qxkxfZsDs,3268
30
25
  wandb/sdk/wandb_sync.py,sha256=GmIjtydDNiUT3FHkrFcIZzSlqiRerXA8kY3q72ZbL1k,2275
31
26
  wandb/sdk/wandb_settings.py,sha256=gXZydMDYH8OLcAoK78mA4naRqBA2aKlsIGKn3i4OC0s,47290
32
- wandb/sdk/wandb_run.py,sha256=eI6WIi2pmkBkP5aMgscMU9C94PjGVknEYQvVPlC-YDM,155668
27
+ wandb/sdk/wandb_run.py,sha256=Jk-KLMtrjX698iUCT2gjivutfR01ud9DjnuSiuVYop8,155193
33
28
  wandb/sdk/wandb_require.py,sha256=Y0ib8h27__t7hXos1F2srfsQzVfzH4BB6wq8E1aRbRA,2950
34
29
  wandb/sdk/wandb_require_helpers.py,sha256=ZmKv5aXXHDTTU6nYHMLKW4_pt9X-PlaMtbRJl77kHX8,1331
35
30
  wandb/sdk/wandb_metadata.py,sha256=nT6TUF4Yh-ka3VQGyKd3y9MTEHJUgRVT4ICyfJkbHFo,20111
@@ -39,7 +34,7 @@ wandb/sdk/wandb_sweep.py,sha256=Sg_JqxVzmjUBvii41azpdr-c6RPwHOBnSha8k7jrRhk,4028
39
34
  wandb/sdk/wandb_config.py,sha256=b7kxQVnIh5HCBZXb2pOGZ4c02xCVlW4IQiAu3N-8Opg,10856
40
35
  wandb/sdk/wandb_watch.py,sha256=F7S9CLbw9PddUp1qBjPRKsOiVFU8LPaq6A9taV3TJKI,4840
41
36
  wandb/sdk/wandb_helper.py,sha256=IbJ7opO8UkfwCDekSjRYIrGBblUxnTPBfp1EdesfF4U,1824
42
- wandb/sdk/wandb_init.py,sha256=z19KqQWjmOcnswowWoq4VAHGalTmjLKwz1R-Rm1i-Bo,56484
37
+ wandb/sdk/wandb_init.py,sha256=XqlUH5OpIdyatgTKHMIsDM3xUSwVbgl_zFzezB8xOg8,58443
43
38
  wandb/sdk/wandb_login.py,sha256=DP7nDUGx2UmqGRBrvTmcpvzRBVeRD0qEENtmu4sjDAQ,10966
44
39
  wandb/sdk/wandb_setup.py,sha256=7j3UBiqm8x7f4JsFPX5jR19wNRSRvf77TIyncd0HpJg,13014
45
40
  wandb/sdk/wandb_summary.py,sha256=yQdOVIPrZaZanhBQ7yuSfPLX0x6dxwkN_KAn4SgjSZU,4536
@@ -128,7 +123,7 @@ wandb/sdk/internal/progress.py,sha256=9nNAErIXzJoapctsfqWYhESNPzFkXAu5TVAnaKsIa4
128
123
  wandb/sdk/internal/file_pusher.py,sha256=clBm6fj_27krGVCcFw9mUdalXHRZlIUxsj5AW_BAzZU,6098
129
124
  wandb/sdk/internal/flow_control.py,sha256=3LJ-KatyPPH18G7TfSMLDk-BE5tankB4JRhQqLoUOWM,8585
130
125
  wandb/sdk/internal/run.py,sha256=8OhVy2vfgPC8pNFq0tJ4CkQHETOBfQsFDghw50ccSXc,682
131
- wandb/sdk/internal/tb_watcher.py,sha256=MpHESnP4UpTq24GnYcBrF1csupFzCVL4dET-f4dj-98,18717
126
+ wandb/sdk/internal/tb_watcher.py,sha256=3AvQGlZLGkr8POhaSGzbeyIcX0YWkLkblJ0bksAB8U8,18738
132
127
  wandb/sdk/internal/context.py,sha256=dnmsKEoQ2xOtmXM5OBVHdyGO3XdTQrqjxfb1lRADSTc,2518
133
128
  wandb/sdk/internal/file_stream.py,sha256=Dnqayrbqa6L2sG03rX2oIFhWT-IME5vl5JTykyLFMNY,25866
134
129
  wandb/sdk/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -160,7 +155,7 @@ wandb/sdk/internal/system/assets/tpu.py,sha256=nwv3C9a6dgD1hc0461Rh28NQkWbNQ5fJO
160
155
  wandb/sdk/internal/system/assets/gpu.py,sha256=DnnfH9fvvfiRXzMAXjCgHZZZt_Kkn2br74T3Y_oyyhw,13722
161
156
  wandb/sdk/internal/system/assets/aggregators.py,sha256=EzJp_YjvYORcBH6g58OsqGtmy55HqYHYMAvaIsp2Iwg,1093
162
157
  wandb/sdk/internal/system/assets/trainium.py,sha256=YlWnRf5fAxEqkAnHQ0iGZo2phvD-QTOAuYyO0PaJYJg,13346
163
- wandb/sdk/interface/interface.py,sha256=-q9mxz8RpHz5_UNKT91sP7w5sOqEFQKkY2B4teLe2vM,36626
158
+ wandb/sdk/interface/interface.py,sha256=coqmzkIQr8s_hzryIhID__5JHw-waMkE65ICv1KcFMQ,36439
164
159
  wandb/sdk/interface/router_relay.py,sha256=uf0KA_WJ25xMwLsH_3RU_ZhRPNS5qujo1aFU2d_rfzs,953
165
160
  wandb/sdk/interface/message_future_poll.py,sha256=drjrcBKswYPYJJQLFlj7UDXq7_zg7KNcObFVetsbvhQ,1410
166
161
  wandb/sdk/interface/router.py,sha256=uTgmF0TaQnYq8Frgs7pncUBucA6B7XXCmKcRoYEZV10,3419
@@ -257,7 +252,7 @@ wandb/sdk/service/server_sock.py,sha256=lpeVRPI0ehRZHoNyG0dCGmBdLnlv_Xl1Znf4qqZH
257
252
  wandb/sdk/service/streams.py,sha256=DR7vtHV0q4rBMGJwnS-mYoOfHix9IS8knpWrCIKNv1g,14642
258
253
  wandb/sdk/service/server.py,sha256=_0MAn4Y1hs2AnapyQb5heYiixKQNxFENfkxIGoiiIB8,3460
259
254
  wandb/sdk/service/_startup_debug.py,sha256=A6P5iCYRoNGcVulziUc7Mw_Y2MCG8PAIAUVjzzMUTPs,602
260
- wandb/bin/wandb-core,sha256=TEw0Mkz0w190K56hxK1facc9zmrHBp7k07CxA_66Cyg,43909272
255
+ wandb/bin/wandb-core,sha256=rTdTl9hrTITHO36-nN4A7W7I9vdvHfTU1iWjSttM9n0,43909272
261
256
  wandb/bin/gpu_stats,sha256=gmMeMCUk-CATuVr6fK0ipPGnIaMIVcovrxuhBal-rnI,11022064
262
257
  wandb/proto/wandb_generate_proto.py,sha256=KO1hlAUBGHQRNKsddhcSXvh5a6rmFM3kshKTWftbWwY,1278
263
258
  wandb/proto/wandb_generate_deprecated.py,sha256=Iyf7PwIL_2B7XohrckYLbjjT09lccwbqknxtWelJpJM,1002
@@ -822,3 +817,8 @@ wandb/docker/__init__.py,sha256=zaXUYlTQLBJo8YlxbL3kh0NBHqtXFHNg4-_TNV_WDBs,1059
822
817
  wandb/docker/wandb-entrypoint.sh,sha256=P4eTMG7wYsgTfJIws_HT7QFlYBI70ZLnNlDGTZdmYVE,989
823
818
  wandb/docker/www_authenticate.py,sha256=eQd0ap8LpZkS9ImRn2gdgl7gnHeKprdqjClrZOaCsQo,2805
824
819
  wandb/docker/auth.py,sha256=Tr-BMoiMJjX8TsdUquVBBLyfxEJWR4WQZGyz6vBaJk0,15009
820
+ wandb-0.19.4rc1.dist-info/WHEEL,sha256=fTf-veJdTwcKkwyiHTvgNV2L-0jwiK0w7ozo8ARrNAg,143
821
+ wandb-0.19.4rc1.dist-info/METADATA,sha256=uyIurAspZwmJRHUtzVckSZv375aN1Lpvi7IqLuCgMbc,10285
822
+ wandb-0.19.4rc1.dist-info/RECORD,,
823
+ wandb-0.19.4rc1.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
824
+ wandb-0.19.4rc1.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081