wandb 0.21.0__py3-none-win32.whl → 0.21.2__py3-none-win32.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 (153) hide show
  1. wandb/__init__.py +16 -14
  2. wandb/__init__.pyi +427 -450
  3. wandb/agents/pyagent.py +41 -12
  4. wandb/analytics/sentry.py +7 -2
  5. wandb/apis/importers/mlflow.py +1 -1
  6. wandb/apis/public/__init__.py +1 -1
  7. wandb/apis/public/api.py +525 -360
  8. wandb/apis/public/artifacts.py +207 -13
  9. wandb/apis/public/automations.py +19 -3
  10. wandb/apis/public/files.py +172 -33
  11. wandb/apis/public/history.py +67 -15
  12. wandb/apis/public/integrations.py +25 -2
  13. wandb/apis/public/jobs.py +90 -2
  14. wandb/apis/public/projects.py +130 -79
  15. wandb/apis/public/query_generator.py +11 -1
  16. wandb/apis/public/registries/_utils.py +14 -16
  17. wandb/apis/public/registries/registries_search.py +183 -304
  18. wandb/apis/public/reports.py +96 -15
  19. wandb/apis/public/runs.py +299 -105
  20. wandb/apis/public/sweeps.py +222 -22
  21. wandb/apis/public/teams.py +41 -4
  22. wandb/apis/public/users.py +45 -4
  23. wandb/automations/_generated/delete_automation.py +1 -3
  24. wandb/automations/_generated/enums.py +13 -11
  25. wandb/beta/workflows.py +66 -30
  26. wandb/bin/gpu_stats.exe +0 -0
  27. wandb/bin/wandb-core +0 -0
  28. wandb/cli/cli.py +127 -3
  29. wandb/env.py +8 -0
  30. wandb/errors/errors.py +4 -1
  31. wandb/integration/lightning/fabric/logger.py +3 -4
  32. wandb/integration/metaflow/__init__.py +6 -0
  33. wandb/integration/metaflow/data_pandas.py +74 -0
  34. wandb/integration/metaflow/data_pytorch.py +75 -0
  35. wandb/integration/metaflow/data_sklearn.py +76 -0
  36. wandb/integration/metaflow/errors.py +13 -0
  37. wandb/integration/metaflow/metaflow.py +167 -223
  38. wandb/integration/openai/fine_tuning.py +1 -2
  39. wandb/integration/weave/__init__.py +6 -0
  40. wandb/integration/weave/interface.py +49 -0
  41. wandb/integration/weave/weave.py +63 -0
  42. wandb/jupyter.py +5 -5
  43. wandb/plot/custom_chart.py +30 -7
  44. wandb/proto/v3/wandb_internal_pb2.py +281 -280
  45. wandb/proto/v3/wandb_telemetry_pb2.py +4 -4
  46. wandb/proto/v4/wandb_internal_pb2.py +280 -280
  47. wandb/proto/v4/wandb_telemetry_pb2.py +4 -4
  48. wandb/proto/v5/wandb_internal_pb2.py +280 -280
  49. wandb/proto/v5/wandb_telemetry_pb2.py +4 -4
  50. wandb/proto/v6/wandb_internal_pb2.py +280 -280
  51. wandb/proto/v6/wandb_telemetry_pb2.py +4 -4
  52. wandb/proto/wandb_deprecated.py +6 -0
  53. wandb/sdk/artifacts/_factories.py +17 -0
  54. wandb/sdk/artifacts/_generated/__init__.py +221 -13
  55. wandb/sdk/artifacts/_generated/artifact_by_id.py +17 -0
  56. wandb/sdk/artifacts/_generated/artifact_by_name.py +22 -0
  57. wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +43 -0
  58. wandb/sdk/artifacts/_generated/artifact_created_by.py +47 -0
  59. wandb/sdk/artifacts/_generated/artifact_file_urls.py +22 -0
  60. wandb/sdk/artifacts/_generated/artifact_type.py +31 -0
  61. wandb/sdk/artifacts/_generated/artifact_used_by.py +43 -0
  62. wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +26 -0
  63. wandb/sdk/artifacts/_generated/delete_artifact.py +28 -0
  64. wandb/sdk/artifacts/_generated/enums.py +5 -0
  65. wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +38 -0
  66. wandb/sdk/artifacts/_generated/fetch_registries.py +32 -0
  67. wandb/sdk/artifacts/_generated/fragments.py +279 -41
  68. wandb/sdk/artifacts/_generated/link_artifact.py +6 -0
  69. wandb/sdk/artifacts/_generated/operations.py +654 -51
  70. wandb/sdk/artifacts/_generated/registry_collections.py +34 -0
  71. wandb/sdk/artifacts/_generated/registry_versions.py +34 -0
  72. wandb/sdk/artifacts/_generated/unlink_artifact.py +25 -0
  73. wandb/sdk/artifacts/_graphql_fragments.py +3 -86
  74. wandb/sdk/artifacts/_internal_artifact.py +19 -8
  75. wandb/sdk/artifacts/_validators.py +14 -4
  76. wandb/sdk/artifacts/artifact.py +512 -618
  77. wandb/sdk/artifacts/artifact_file_cache.py +10 -6
  78. wandb/sdk/artifacts/artifact_manifest.py +10 -9
  79. wandb/sdk/artifacts/artifact_manifest_entry.py +9 -10
  80. wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +5 -3
  81. wandb/sdk/artifacts/storage_handlers/http_handler.py +1 -1
  82. wandb/sdk/artifacts/storage_handlers/s3_handler.py +1 -1
  83. wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +1 -1
  84. wandb/sdk/data_types/audio.py +38 -10
  85. wandb/sdk/data_types/base_types/media.py +6 -56
  86. wandb/sdk/data_types/graph.py +48 -14
  87. wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +1 -3
  88. wandb/sdk/data_types/helper_types/image_mask.py +1 -3
  89. wandb/sdk/data_types/histogram.py +34 -21
  90. wandb/sdk/data_types/html.py +35 -12
  91. wandb/sdk/data_types/image.py +104 -68
  92. wandb/sdk/data_types/molecule.py +32 -19
  93. wandb/sdk/data_types/object_3d.py +36 -17
  94. wandb/sdk/data_types/plotly.py +18 -5
  95. wandb/sdk/data_types/saved_model.py +4 -6
  96. wandb/sdk/data_types/table.py +59 -30
  97. wandb/sdk/data_types/video.py +53 -26
  98. wandb/sdk/integration_utils/auto_logging.py +2 -2
  99. wandb/sdk/interface/interface_queue.py +1 -4
  100. wandb/sdk/interface/interface_shared.py +26 -37
  101. wandb/sdk/interface/interface_sock.py +24 -14
  102. wandb/sdk/internal/internal_api.py +6 -0
  103. wandb/sdk/internal/job_builder.py +6 -0
  104. wandb/sdk/internal/settings_static.py +2 -3
  105. wandb/sdk/launch/agent/agent.py +8 -1
  106. wandb/sdk/launch/agent/run_queue_item_file_saver.py +2 -2
  107. wandb/sdk/launch/create_job.py +15 -2
  108. wandb/sdk/launch/inputs/internal.py +3 -4
  109. wandb/sdk/launch/inputs/schema.py +1 -0
  110. wandb/sdk/launch/runner/kubernetes_monitor.py +1 -0
  111. wandb/sdk/launch/runner/kubernetes_runner.py +323 -1
  112. wandb/sdk/launch/sweeps/scheduler.py +2 -3
  113. wandb/sdk/lib/asyncio_compat.py +19 -16
  114. wandb/sdk/lib/asyncio_manager.py +252 -0
  115. wandb/sdk/lib/deprecate.py +1 -7
  116. wandb/sdk/lib/disabled.py +1 -1
  117. wandb/sdk/lib/hashutil.py +27 -5
  118. wandb/sdk/lib/module.py +7 -13
  119. wandb/sdk/lib/printer.py +2 -2
  120. wandb/sdk/lib/printer_asyncio.py +3 -1
  121. wandb/sdk/lib/progress.py +0 -19
  122. wandb/sdk/lib/retry.py +185 -78
  123. wandb/sdk/lib/service/service_client.py +106 -0
  124. wandb/sdk/lib/service/service_connection.py +20 -26
  125. wandb/sdk/lib/service/service_token.py +30 -13
  126. wandb/sdk/mailbox/mailbox.py +13 -5
  127. wandb/sdk/mailbox/mailbox_handle.py +22 -13
  128. wandb/sdk/mailbox/response_handle.py +42 -106
  129. wandb/sdk/mailbox/wait_with_progress.py +7 -42
  130. wandb/sdk/wandb_init.py +77 -116
  131. wandb/sdk/wandb_login.py +19 -15
  132. wandb/sdk/wandb_metric.py +2 -0
  133. wandb/sdk/wandb_run.py +497 -469
  134. wandb/sdk/wandb_settings.py +145 -4
  135. wandb/sdk/wandb_setup.py +204 -124
  136. wandb/sdk/wandb_sweep.py +14 -13
  137. wandb/sdk/wandb_watch.py +4 -6
  138. wandb/sync/sync.py +10 -0
  139. wandb/util.py +58 -1
  140. wandb/wandb_run.py +1 -2
  141. {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/METADATA +1 -1
  142. {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/RECORD +145 -129
  143. wandb/sdk/interface/interface_relay.py +0 -38
  144. wandb/sdk/interface/router.py +0 -89
  145. wandb/sdk/interface/router_queue.py +0 -43
  146. wandb/sdk/interface/router_relay.py +0 -50
  147. wandb/sdk/interface/router_sock.py +0 -32
  148. wandb/sdk/lib/sock_client.py +0 -236
  149. wandb/vendor/pynvml/__init__.py +0 -0
  150. wandb/vendor/pynvml/pynvml.py +0 -4779
  151. {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/WHEEL +0 -0
  152. {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/entry_points.txt +0 -0
  153. {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/licenses/LICENSE +0 -0
wandb/agents/pyagent.py CHANGED
@@ -9,6 +9,7 @@ import logging
9
9
  import os
10
10
  import queue
11
11
  import socket
12
+ import sys
12
13
  import threading
13
14
  import time
14
15
  import traceback
@@ -222,17 +223,10 @@ class Agent:
222
223
  self._run_status[run_id] = RunStatus.DONE
223
224
  elif self._run_status[run_id] == RunStatus.ERRORED:
224
225
  exc = self._exceptions[run_id]
225
- exc_type, exc_value, exc_traceback = (
226
- exc.__class__,
227
- exc,
228
- exc.__traceback__,
229
- )
230
- exc_traceback_formatted = traceback.format_exception(
231
- exc_type, exc_value, exc_traceback
232
- )
233
- exc_repr = "".join(exc_traceback_formatted)
234
- logger.error(f"Run {run_id} errored:\n{exc_repr}")
235
- wandb.termerror(f"Run {run_id} errored:\n{exc_repr}")
226
+ # Extract to reduce a decision point to avoid ruff c901
227
+ log_str, term_str = _get_exception_logger_and_term_strs(exc)
228
+ logger.error(f"Run {run_id} errored:\n{log_str}")
229
+ wandb.termerror(f"Run {run_id} errored:{term_str}")
236
230
  if os.getenv(wandb.env.AGENT_DISABLE_FLAPPING) == "true":
237
231
  self._exit_flag = True
238
232
  return
@@ -299,7 +293,18 @@ class Agent:
299
293
  for k, v in job.config.items():
300
294
  wandb.termlog("\t{}: {}".format(k, v["value"]))
301
295
 
302
- self._function()
296
+ try:
297
+ self._function()
298
+ except KeyboardInterrupt:
299
+ raise
300
+ except Exception as e:
301
+ # Log the run's exceptions directly to stderr to match CLI case, and wrap so we
302
+ # can identify it as coming from the job later later. This will get automatically
303
+ # logged by console_capture.py. Exception handler below will also handle exceptions
304
+ # in setup code.
305
+ exc_repr = _format_exception_traceback(e)
306
+ print(exc_repr, file=sys.stderr) # noqa: T201
307
+ raise _JobError(f"Run threw exception: {str(e)}") from e
303
308
  wandb.finish()
304
309
  except KeyboardInterrupt:
305
310
  raise
@@ -350,6 +355,30 @@ def pyagent(sweep_id, function, entity=None, project=None, count=None):
350
355
  agent.run()
351
356
 
352
357
 
358
+ def _format_exception_traceback(exc):
359
+ return "".join(traceback.format_exception(type(exc), exc, exc.__traceback__))
360
+
361
+
362
+ class _JobError(Exception):
363
+ """Exception raised when a job fails during execution."""
364
+
365
+ pass
366
+
367
+
368
+ def _get_exception_logger_and_term_strs(exc):
369
+ if isinstance(exc, _JobError) and exc.__cause__:
370
+ # If it's a JobException, get the original exception for display
371
+ job_exc = exc.__cause__
372
+ log_str = _format_exception_traceback(job_exc)
373
+ # Don't long full stacktrace to terminal again because we already
374
+ # printed it to stderr.
375
+ term_str = " " + str(job_exc)
376
+ else:
377
+ log_str = _format_exception_traceback(exc)
378
+ term_str = "\n" + log_str
379
+ return log_str, term_str
380
+
381
+
353
382
  _INSTANCES = 0
354
383
 
355
384
 
wandb/analytics/sentry.py CHANGED
@@ -91,13 +91,18 @@ class Sentry:
91
91
  self.scope.set_client(client)
92
92
 
93
93
  @_safe_noop
94
- def message(self, message: str, repeat: bool = True) -> str | None:
94
+ def message(
95
+ self,
96
+ message: str,
97
+ repeat: bool = True,
98
+ level: str = "info",
99
+ ) -> str | None:
95
100
  """Send a message to Sentry."""
96
101
  if not repeat and message in self._sent_messages:
97
102
  return None
98
103
  self._sent_messages.add(message)
99
104
  with sentry_sdk.scope.use_isolation_scope(self.scope): # type: ignore
100
- return sentry_sdk.capture_message(message) # type: ignore
105
+ return sentry_sdk.capture_message(message, level=level) # type: ignore
101
106
 
102
107
  @_safe_noop
103
108
  def exception(
@@ -215,7 +215,7 @@ class MlflowImporter:
215
215
  settings_override = {
216
216
  "api_key": self.dst_api_key,
217
217
  "base_url": self.dst_base_url,
218
- "resume": "true",
218
+ "resume": "allow",
219
219
  "resumed": True,
220
220
  }
221
221
 
@@ -20,7 +20,7 @@ from wandb.apis.public.jobs import (
20
20
  RunQueuePrioritizationMode,
21
21
  RunQueueResourceType,
22
22
  )
23
- from wandb.apis.public.projects import PROJECT_FRAGMENT, Project, Projects
23
+ from wandb.apis.public.projects import PROJECT_FRAGMENT, Project, Projects, Sweeps
24
24
  from wandb.apis.public.query_generator import QueryGenerator
25
25
  from wandb.apis.public.registries.registry import Registry
26
26
  from wandb.apis.public.reports import (