wandb 0.18.6__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 0.19.0rc1__py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.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 (120) hide show
  1. package_readme.md +8 -0
  2. wandb/__init__.py +5 -7
  3. wandb/__init__.pyi +51 -30
  4. wandb/analytics/sentry.py +4 -10
  5. wandb/apis/importers/internals/internal.py +6 -6
  6. wandb/apis/importers/internals/protocols.py +11 -7
  7. wandb/apis/public/api.py +5 -1
  8. wandb/apis/public/jobs.py +1 -7
  9. wandb/apis/public/reports.py +6 -17
  10. wandb/apis/public/runs.py +12 -10
  11. wandb/bin/gpu_stats +0 -0
  12. wandb/bin/wandb-core +0 -0
  13. wandb/cli/cli.py +9 -45
  14. wandb/env.py +3 -5
  15. wandb/errors/links.py +1 -1
  16. wandb/errors/term.py +1 -6
  17. wandb/filesync/dir_watcher.py +3 -3
  18. wandb/filesync/step_upload.py +2 -5
  19. wandb/integration/fastai/__init__.py +1 -6
  20. wandb/integration/gym/__init__.py +1 -7
  21. wandb/integration/keras/callbacks/metrics_logger.py +1 -8
  22. wandb/integration/keras/callbacks/model_checkpoint.py +1 -8
  23. wandb/integration/keras/keras.py +3 -5
  24. wandb/integration/lightgbm/__init__.py +1 -1
  25. wandb/integration/sb3/sb3.py +1 -7
  26. wandb/integration/sklearn/utils.py +1 -1
  27. wandb/integration/tensorboard/log.py +1 -2
  28. wandb/integration/torch/wandb_torch.py +1 -1
  29. wandb/integration/ultralytics/bbox_utils.py +9 -2
  30. wandb/jupyter.py +4 -4
  31. wandb/proto/v3/wandb_internal_pb2.py +31 -31
  32. wandb/proto/v3/wandb_settings_pb2.py +2 -2
  33. wandb/proto/v3/wandb_telemetry_pb2.py +4 -4
  34. wandb/proto/v4/wandb_internal_pb2.py +31 -31
  35. wandb/proto/v4/wandb_settings_pb2.py +2 -2
  36. wandb/proto/v4/wandb_telemetry_pb2.py +4 -4
  37. wandb/proto/v5/wandb_internal_pb2.py +31 -31
  38. wandb/proto/v5/wandb_settings_pb2.py +2 -2
  39. wandb/proto/v5/wandb_telemetry_pb2.py +4 -4
  40. wandb/proto/wandb_deprecated.py +3 -11
  41. wandb/proto/wandb_generate_deprecated.py +3 -7
  42. wandb/sdk/artifacts/artifact.py +3 -11
  43. wandb/sdk/artifacts/artifact_file_cache.py +2 -5
  44. wandb/sdk/artifacts/artifact_saver.py +2 -6
  45. wandb/sdk/artifacts/storage_handlers/gcs_handler.py +2 -4
  46. wandb/sdk/artifacts/storage_handlers/local_file_handler.py +2 -4
  47. wandb/sdk/artifacts/storage_handlers/s3_handler.py +2 -4
  48. wandb/sdk/backend/backend.py +1 -1
  49. wandb/sdk/data_types/base_types/wb_value.py +20 -10
  50. wandb/sdk/data_types/histogram.py +1 -3
  51. wandb/sdk/data_types/object_3d.py +2 -6
  52. wandb/sdk/data_types/table.py +1 -1
  53. wandb/sdk/data_types/utils.py +1 -2
  54. wandb/sdk/data_types/video.py +15 -4
  55. wandb/sdk/integration_utils/auto_logging.py +1 -8
  56. wandb/sdk/interface/interface.py +12 -5
  57. wandb/sdk/interface/interface_queue.py +0 -6
  58. wandb/sdk/interface/interface_shared.py +9 -0
  59. wandb/sdk/interface/router.py +1 -2
  60. wandb/sdk/interface/router_queue.py +0 -3
  61. wandb/sdk/interface/router_relay.py +0 -2
  62. wandb/sdk/internal/file_stream.py +1 -4
  63. wandb/sdk/internal/flow_control.py +1 -1
  64. wandb/sdk/internal/handler.py +8 -5
  65. wandb/sdk/internal/internal.py +3 -17
  66. wandb/sdk/internal/internal_api.py +3 -10
  67. wandb/sdk/internal/internal_util.py +0 -3
  68. wandb/sdk/internal/job_builder.py +20 -12
  69. wandb/sdk/internal/progress.py +1 -5
  70. wandb/sdk/internal/sender.py +9 -15
  71. wandb/sdk/internal/settings_static.py +4 -10
  72. wandb/sdk/internal/system/assets/cpu.py +2 -2
  73. wandb/sdk/internal/system/assets/disk.py +3 -3
  74. wandb/sdk/internal/system/assets/gpu.py +7 -7
  75. wandb/sdk/internal/system/assets/gpu_amd.py +1 -7
  76. wandb/sdk/internal/system/assets/interfaces.py +11 -13
  77. wandb/sdk/internal/system/assets/ipu.py +1 -1
  78. wandb/sdk/internal/system/assets/memory.py +2 -2
  79. wandb/sdk/internal/system/assets/open_metrics.py +2 -8
  80. wandb/sdk/internal/system/assets/trainium.py +3 -9
  81. wandb/sdk/internal/system/system_info.py +14 -13
  82. wandb/sdk/internal/system/system_monitor.py +5 -12
  83. wandb/sdk/internal/tb_watcher.py +1 -1
  84. wandb/sdk/internal/writer.py +2 -4
  85. wandb/sdk/launch/__init__.py +2 -1
  86. wandb/sdk/launch/agent/run_queue_item_file_saver.py +1 -7
  87. wandb/sdk/launch/create_job.py +2 -3
  88. wandb/sdk/launch/runner/abstract.py +1 -6
  89. wandb/sdk/launch/runner/kubernetes_monitor.py +2 -4
  90. wandb/sdk/lib/apikey.py +2 -6
  91. wandb/sdk/lib/fsm.py +12 -6
  92. wandb/sdk/lib/ipython.py +1 -6
  93. wandb/sdk/lib/module.py +0 -3
  94. wandb/sdk/lib/progress.py +2 -3
  95. wandb/sdk/lib/run_moment.py +1 -7
  96. wandb/sdk/lib/server.py +10 -24
  97. wandb/sdk/lib/sock_client.py +0 -5
  98. wandb/sdk/service/server.py +3 -12
  99. wandb/sdk/service/server_sock.py +0 -2
  100. wandb/sdk/service/service.py +5 -5
  101. wandb/sdk/wandb_init.py +215 -166
  102. wandb/sdk/wandb_login.py +17 -27
  103. wandb/sdk/wandb_run.py +129 -161
  104. wandb/sdk/wandb_settings.py +978 -1760
  105. wandb/sdk/wandb_setup.py +87 -94
  106. wandb/sdk/wandb_watch.py +1 -1
  107. wandb/sync/sync.py +1 -2
  108. wandb/util.py +7 -40
  109. wandb/wandb_controller.py +10 -12
  110. {wandb-0.18.6.dist-info → wandb-0.19.0rc1.dist-info}/METADATA +14 -5
  111. {wandb-0.18.6.dist-info → wandb-0.19.0rc1.dist-info}/RECORD +114 -120
  112. {wandb-0.18.6.dist-info → wandb-0.19.0rc1.dist-info}/WHEEL +1 -1
  113. wandb/integration/magic.py +0 -556
  114. wandb/magic.py +0 -3
  115. wandb/sdk/lib/_settings_toposort_generate.py +0 -159
  116. wandb/sdk/lib/_settings_toposort_generated.py +0 -250
  117. wandb/sdk/lib/reporting.py +0 -99
  118. wandb/sdk/lib/tracelog.py +0 -255
  119. {wandb-0.18.6.dist-info → wandb-0.19.0rc1.dist-info}/entry_points.txt +0 -0
  120. {wandb-0.18.6.dist-info → wandb-0.19.0rc1.dist-info}/licenses/LICENSE +0 -0
package_readme.md CHANGED
@@ -68,6 +68,14 @@ Use your favorite framework with W&B. W&B integrations make it fast and easy to
68
68
 
69
69
   
70
70
 
71
+ # Python Version Support
72
+
73
+ We are committed to supporting our minimum required Python version for *at least* six months after its official end-of-life (EOL) date, as defined by the Python Software Foundation. You can find a list of Python EOL dates [here](https://devguide.python.org/versions/).
74
+
75
+ When we discontinue support for a Python version, we will increment the library’s minor version number to reflect this change.
76
+
77
+  
78
+
71
79
  # Contribution guidelines
72
80
  Weights & Biases ❤️ open source, and we welcome contributions from the community! See the [Contribution guide](https://github.com/wandb/wandb/blob/main/CONTRIBUTING.md) for more information on the development workflow and the internals of the wandb library. For wandb bugs and feature requests, visit [GitHub Issues](https://github.com/wandb/wandb/issues) or contact support@wandb.com.
73
81
 
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.18.6"
13
+ __version__ = "0.19.0rc1"
14
14
 
15
15
 
16
16
  from wandb.errors import Error
@@ -75,7 +75,7 @@ from wandb.data_types import JoinedTable
75
75
 
76
76
  from wandb.wandb_agent import agent
77
77
 
78
- from wandb.plot import visualize
78
+ from wandb.plot import visualize, plot_table
79
79
  from wandb.integration.sagemaker import sagemaker_auth
80
80
  from wandb.sdk.internal import profiler
81
81
 
@@ -142,9 +142,6 @@ mark_preempting = _preinit.PreInitCallable(
142
142
  "wandb.mark_preempting", wandb_sdk.wandb_run.Run.mark_preempting # type: ignore
143
143
  )
144
144
 
145
- plot_table = _preinit.PreInitCallable(
146
- "wandb.plot_table", wandb_sdk.wandb_run.Run.plot_table
147
- )
148
145
  alert = _preinit.PreInitCallable("wandb.alert", wandb_sdk.wandb_run.Run.alert) # type: ignore
149
146
 
150
147
  # record of patched libraries
@@ -208,8 +205,8 @@ if "dev" in __version__:
208
205
  )
209
206
 
210
207
  # Enable new features in dev versions.
211
- os.environ["WANDB__SHOW_OPERATION_STATS"] = os.environ.get(
212
- "WANDB__SHOW_OPERATION_STATS",
208
+ os.environ["WANDB_X_SHOW_OPERATION_STATS"] = os.environ.get(
209
+ "WANDB_X_SHOW_OPERATION_STATS",
213
210
  "true",
214
211
  )
215
212
 
@@ -251,4 +248,5 @@ __all__ = (
251
248
  "define_metric",
252
249
  "watch",
253
250
  "unwatch",
251
+ "plot_table",
254
252
  )
wandb/__init__.pyi CHANGED
@@ -54,6 +54,7 @@ __all__ = (
54
54
  "watch",
55
55
  "unwatch",
56
56
  "plot",
57
+ "plot_table",
57
58
  )
58
59
 
59
60
  import os
@@ -71,7 +72,8 @@ from typing import (
71
72
 
72
73
  import wandb.plot as plot
73
74
  from wandb.analytics import Sentry
74
- from wandb.apis import InternalApi, PublicApi
75
+ from wandb.apis import InternalApi
76
+ from wandb.apis import PublicApi as Api
75
77
  from wandb.data_types import (
76
78
  Audio,
77
79
  Graph,
@@ -98,14 +100,14 @@ from wandb.wandb_controller import _WandbController
98
100
  if TYPE_CHECKING:
99
101
  import torch # type: ignore [import-not-found]
100
102
 
103
+ import wandb
101
104
  from wandb.plot import CustomChart
102
105
 
103
- __version__: str = "0.18.6"
106
+ __version__: str = "0.19.0rc1"
104
107
 
105
108
  run: Run | None
106
109
  config: wandb_config.Config
107
110
  summary: wandb_summary.Summary
108
- Api: type[PublicApi]
109
111
 
110
112
  # private attributes
111
113
  _sentry: Sentry
@@ -113,7 +115,7 @@ api: InternalApi
113
115
  patched: Dict[str, List[Callable]]
114
116
 
115
117
  def setup(
116
- settings: Optional[Settings] = None,
118
+ settings: Settings | None = None,
117
119
  ) -> Optional[_WandbSetup]:
118
120
  """Prepares W&B for use in the current process and its children.
119
121
 
@@ -129,8 +131,8 @@ def setup(
129
131
  See also `wandb.teardown()`.
130
132
 
131
133
  Args:
132
- settings (Optional[Union[Dict[str, Any], wandb.Settings]]): Configuration settings
133
- to apply globally. These can be overridden by subsequent `wandb.init()` calls.
134
+ settings: Configuration settings to apply globally. These can be
135
+ overridden by subsequent `wandb.init()` calls.
134
136
 
135
137
  Example:
136
138
  ```python
@@ -172,7 +174,7 @@ def setup(
172
174
  """
173
175
  ...
174
176
 
175
- def teardown(exit_code: Optional[int] = None) -> None:
177
+ def teardown(exit_code: int | None = None) -> None:
176
178
  """Waits for wandb to finish and frees resources.
177
179
 
178
180
  Completes any runs that were not explicitly finished
@@ -192,11 +194,10 @@ def init(
192
194
  project: str | None = None,
193
195
  entity: str | None = None,
194
196
  reinit: bool | None = None,
195
- tags: Sequence | None = None,
197
+ tags: Sequence[str] | None = None,
196
198
  group: str | None = None,
197
199
  name: str | None = None,
198
200
  notes: str | None = None,
199
- magic: dict | str | bool | None = None,
200
201
  config_exclude_keys: list[str] | None = None,
201
202
  config_include_keys: list[str] | None = None,
202
203
  anonymous: str | None = None,
@@ -335,10 +336,6 @@ def init(
335
336
  for more.
336
337
  reinit: (bool, optional) Allow multiple `wandb.init()` calls in the same
337
338
  process. (default: `False`)
338
- magic: (bool, dict, or str, optional) The bool controls whether we try to
339
- auto-instrument your script, capturing basic details of your run
340
- without you having to add more wandb code. (default: `False`)
341
- You can also pass a dict, json string, or yaml filename.
342
339
  config_exclude_keys: (list, optional) string keys to exclude from
343
340
  `wandb.config`.
344
341
  config_include_keys: (list, optional) string keys to include in
@@ -425,15 +422,25 @@ def init(
425
422
  """
426
423
  ...
427
424
 
428
- def finish(exit_code: int | None = None, quiet: bool | None = None) -> None:
429
- """Mark a run as finished, and finish uploading all data.
425
+ def finish(
426
+ exit_code: int | None = None,
427
+ quiet: bool | None = None,
428
+ ) -> None:
429
+ """Finish a run and upload any remaining data.
430
+
431
+ Marks the completion of a W&B run and ensures all data is synced to the server.
432
+ The run's final state is determined by its exit conditions and sync status.
430
433
 
431
- This is used when creating multiple runs in the same process.
432
- We automatically call this method when your script exits.
434
+ Run States:
435
+ - Running: Active run that is logging data and/or sending heartbeats.
436
+ - Crashed: Run that stopped sending heartbeats unexpectedly.
437
+ - Finished: Run completed successfully (`exit_code=0`) with all data synced.
438
+ - Failed: Run completed with errors (`exit_code!=0`).
433
439
 
434
440
  Args:
435
- exit_code: Set to something other than 0 to mark a run as failed
436
- quiet: Set to true to minimize log output
441
+ exit_code: Integer indicating the run's exit status. Use 0 for success,
442
+ any other value marks the run as failed.
443
+ quiet: Deprecated. Configure logging verbosity using `wandb.Settings(quiet=...)`.
437
444
  """
438
445
  ...
439
446
 
@@ -1107,23 +1114,37 @@ def link_model(
1107
1114
 
1108
1115
  def plot_table(
1109
1116
  vega_spec_name: str,
1110
- data_table: Table,
1117
+ data_table: wandb.Table,
1111
1118
  fields: dict[str, Any],
1112
1119
  string_fields: dict[str, Any] | None = None,
1113
1120
  split_table: bool = False,
1114
1121
  ) -> CustomChart:
1115
- """Create a custom plot on a table.
1122
+ """Creates a custom charts using a Vega-Lite specification and a `wandb.Table`.
1123
+
1124
+ This function creates a custom chart based on a Vega-Lite specification and
1125
+ a data table represented by a `wandb.Table` object. The specification needs
1126
+ to be predefined and stored in the W&B backend. The function returns a custom
1127
+ chart object that can be logged to W&B using `wandb.log()`.
1116
1128
 
1117
1129
  Args:
1118
- vega_spec_name: the name of the spec for the plot
1119
- data_table: a wandb.Table object containing the data to
1120
- be used on the visualization
1121
- fields: a dict mapping from table keys to fields that the custom
1122
- visualization needs
1123
- string_fields: a dict that provides values for any string constants
1124
- the custom visualization needs
1125
- split_table: a boolean that indicates whether the table should be in
1126
- a separate section in the UI
1130
+ vega_spec_name (str): The name or identifier of the Vega-Lite spec
1131
+ that defines the visualization structure.
1132
+ data_table (wandb.Table): A `wandb.Table` object containing the data to be
1133
+ visualized.
1134
+ fields (dict[str, Any]): A mapping between the fields in the Vega-Lite spec and the
1135
+ corresponding columns in the data table to be visualized.
1136
+ string_fields (dict[str, Any] | None): A dictionary for providing values for any string constants
1137
+ required by the custom visualization.
1138
+ split_table (bool): Whether the table should be split into a separate section
1139
+ in the W&B UI. If `True`, the table will be displayed in a section named
1140
+ "Custom Chart Tables". Default is `False`.
1141
+
1142
+ Returns:
1143
+ CustomChart: A custom chart object that can be logged to W&B. To log the
1144
+ chart, pass it to `wandb.log()`.
1145
+
1146
+ Raises:
1147
+ wandb.Error: If `data_table` is not a `wandb.Table` object.
1127
1148
  """
1128
1149
  ...
1129
1150
 
wandb/analytics/sentry.py CHANGED
@@ -9,14 +9,9 @@ import os
9
9
  import pathlib
10
10
  import sys
11
11
  from types import TracebackType
12
- from typing import TYPE_CHECKING, Any, Callable
12
+ from typing import TYPE_CHECKING, Any, Callable, Literal
13
13
  from urllib.parse import quote
14
14
 
15
- if sys.version_info >= (3, 8):
16
- from typing import Literal
17
- else:
18
- from typing_extensions import Literal
19
-
20
15
  import sentry_sdk # type: ignore
21
16
  import sentry_sdk.scope # type: ignore
22
17
  import sentry_sdk.utils # type: ignore
@@ -214,13 +209,12 @@ class Sentry:
214
209
  "sweep_url",
215
210
  "sweep_id",
216
211
  "deployment",
217
- "_disable_service",
218
- "_require_legacy_service",
212
+ "x_disable_service",
213
+ "x_require_legacy_service",
219
214
  "launch",
215
+ "_platform",
220
216
  )
221
217
 
222
- self.scope.set_tag("platform", wandb.util.get_platform_name())
223
-
224
218
  # set context
225
219
  if process_context:
226
220
  self.scope.set_tag("process_context", process_context)
@@ -311,19 +311,19 @@ def _make_settings(
311
311
  _settings_override = coalesce(settings_override, {})
312
312
 
313
313
  default_settings: Dict[str, Any] = {
314
- "files_dir": os.path.join(root_dir, "files"),
314
+ "x_files_dir": os.path.join(root_dir, "files"),
315
315
  "root_dir": root_dir,
316
316
  "sync_file": os.path.join(root_dir, "txlog.wandb"),
317
317
  "resume": "false",
318
318
  "program": None,
319
319
  "ignore_globs": [],
320
320
  "disable_job_creation": True,
321
- "_start_time": 0,
321
+ "x_start_time": 0,
322
322
  "_offline": None,
323
- "_sync": True,
324
- "_live_policy_rate_limit": 15, # matches dir_watcher
325
- "_live_policy_wait_time": 600, # matches dir_watcher
326
- "_file_stream_timeout_seconds": 60,
323
+ "x_sync": True,
324
+ "x_live_policy_rate_limit": 15, # matches dir_watcher
325
+ "x_live_policy_wait_time": 600, # matches dir_watcher
326
+ "x_file_stream_timeout_seconds": 60,
327
327
  }
328
328
 
329
329
  combined_settings = {**default_settings, **_settings_override}
@@ -1,14 +1,18 @@
1
1
  import logging
2
- import sys
3
- from typing import Any, Dict, Iterable, List, Literal, Optional, Tuple
2
+ from typing import (
3
+ Any,
4
+ Dict,
5
+ Iterable,
6
+ List,
7
+ Literal,
8
+ Optional,
9
+ Protocol,
10
+ Tuple,
11
+ runtime_checkable,
12
+ )
4
13
 
5
14
  from wandb.sdk.artifacts.artifact import Artifact
6
15
 
7
- if sys.version_info >= (3, 8):
8
- from typing import Protocol, runtime_checkable
9
- else:
10
- from typing_extensions import Protocol, runtime_checkable
11
-
12
16
  logger = logging.getLogger("import_logger")
13
17
 
14
18
  PathStr = str
wandb/apis/public/api.py CHANGED
@@ -1208,7 +1208,11 @@ class Api:
1208
1208
  entity=settings_entity, organization=organization
1209
1209
  )
1210
1210
  artifact = wandb.Artifact._from_name(
1211
- entity, project, artifact_name, self.client, enable_tracking
1211
+ entity=entity,
1212
+ project=project,
1213
+ name=artifact_name,
1214
+ client=self.client,
1215
+ enable_tracking=enable_tracking,
1212
1216
  )
1213
1217
  if type is not None and artifact.type != type:
1214
1218
  raise ValueError(
wandb/apis/public/jobs.py CHANGED
@@ -3,14 +3,8 @@
3
3
  import json
4
4
  import os
5
5
  import shutil
6
- import sys
7
6
  import time
8
- from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional
9
-
10
- if sys.version_info >= (3, 8):
11
- from typing import Literal
12
- else:
13
- from typing_extensions import Literal
7
+ from typing import TYPE_CHECKING, Any, Dict, List, Literal, Mapping, Optional
14
8
 
15
9
  from wandb_gql import gql
16
10
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  import ast
4
4
  import json
5
- import sys
6
5
  import urllib
7
6
 
8
7
  from wandb_gql import gql
@@ -228,22 +227,12 @@ class PythonMongoishQueryGenerator:
228
227
  ast.Not: "$not",
229
228
  }
230
229
 
231
- if sys.version_info >= (3, 8):
232
- AST_FIELDS = {
233
- ast.Constant: "value",
234
- ast.Name: "id",
235
- ast.List: "elts",
236
- ast.Tuple: "elts",
237
- }
238
- else:
239
- AST_FIELDS = {
240
- ast.Str: "s",
241
- ast.Num: "n",
242
- ast.Name: "id",
243
- ast.List: "elts",
244
- ast.Tuple: "elts",
245
- ast.NameConstant: "value",
246
- }
230
+ AST_FIELDS = {
231
+ ast.Constant: "value",
232
+ ast.Name: "id",
233
+ ast.List: "elts",
234
+ ast.Tuple: "elts",
235
+ }
247
236
 
248
237
  def __init__(self, run_set):
249
238
  self.run_set = run_set
wandb/apis/public/runs.py CHANGED
@@ -2,16 +2,19 @@
2
2
 
3
3
  import json
4
4
  import os
5
- import sys
6
5
  import tempfile
7
6
  import time
8
7
  import urllib
9
- from typing import TYPE_CHECKING, Any, Collection, Dict, List, Mapping, Optional
10
-
11
- if sys.version_info >= (3, 8):
12
- from typing import Literal
13
- else:
14
- from typing_extensions import Literal
8
+ from typing import (
9
+ TYPE_CHECKING,
10
+ Any,
11
+ Collection,
12
+ Dict,
13
+ List,
14
+ Literal,
15
+ Mapping,
16
+ Optional,
17
+ )
15
18
 
16
19
  from wandb_gql import gql
17
20
 
@@ -233,7 +236,6 @@ class Runs(Paginator):
233
236
  if not histories:
234
237
  return pd.DataFrame()
235
238
  combined_df = pd.concat(histories)
236
- combined_df.sort_values("run_id", inplace=True)
237
239
  combined_df.reset_index(drop=True, inplace=True)
238
240
  # sort columns for consistency
239
241
  combined_df = combined_df[(sorted(combined_df.columns))]
@@ -259,9 +261,9 @@ class Runs(Paginator):
259
261
  histories.append(df)
260
262
  if not histories:
261
263
  return pl.DataFrame()
262
- combined_df = pl.concat(histories, how="align")
264
+ combined_df = pl.concat(histories, how="vertical")
263
265
  # sort columns for consistency
264
- combined_df = combined_df.select(sorted(combined_df.columns)).sort("run_id")
266
+ combined_df = combined_df.select(sorted(combined_df.columns))
265
267
 
266
268
  return combined_df
267
269
 
wandb/bin/gpu_stats CHANGED
Binary file
wandb/bin/wandb-core CHANGED
Binary file
wandb/cli/cli.py CHANGED
@@ -31,7 +31,6 @@ from wandb import Config, Error, env, util, wandb_agent, wandb_sdk
31
31
  from wandb.apis import InternalApi, PublicApi
32
32
  from wandb.apis.public import RunQueue
33
33
  from wandb.errors.links import url_registry
34
- from wandb.integration.magic import magic_install
35
34
  from wandb.sdk.artifacts._validators import is_artifact_registry_project
36
35
  from wandb.sdk.artifacts.artifact_file_cache import get_artifact_file_cache
37
36
  from wandb.sdk.launch import utils as launch_utils
@@ -129,7 +128,7 @@ def _get_cling_api(reset=None):
129
128
  if _api is None:
130
129
  # TODO(jhr): make a settings object that is better for non runs.
131
130
  # only override the necessary setting
132
- wandb.setup(settings=dict(_cli_only_mode=True))
131
+ wandb.setup(settings=wandb.Settings(x_cli_only_mode=True))
133
132
  _api = InternalApi()
134
133
  return _api
135
134
 
@@ -238,15 +237,18 @@ def login(key, host, cloud, relogin, anonymously, verify, no_offline=False):
238
237
  relogin = True
239
238
 
240
239
  login_settings = dict(
241
- _cli_only_mode=True,
242
- _disable_viewer=relogin and not verify,
240
+ x_cli_only_mode=True,
241
+ x_disable_viewer=relogin and not verify,
243
242
  anonymous=anon_mode,
243
+ base_url=host,
244
244
  )
245
- if host is not None:
246
- login_settings["base_url"] = host
247
245
 
248
246
  try:
249
- wandb.setup(settings=login_settings)
247
+ wandb.setup(
248
+ settings=wandb.Settings(
249
+ **{k: v for k, v in login_settings.items() if v is not None}
250
+ )
251
+ )
250
252
  except TypeError as e:
251
253
  wandb.termerror(str(e))
252
254
  sys.exit(1)
@@ -2656,44 +2658,6 @@ Run `git clone {}` and restore from there or pass the --no-git flag.""".format(r
2656
2658
  return commit, json_config, patch_content, repo, metadata
2657
2659
 
2658
2660
 
2659
- @cli.command(context_settings=CONTEXT, help="Run any script with wandb", hidden=True)
2660
- @click.pass_context
2661
- @click.argument("program")
2662
- @click.argument("args", nargs=-1)
2663
- @display_error
2664
- def magic(ctx, program, args):
2665
- def magic_run(cmd, globals, locals):
2666
- try:
2667
- exec(cmd, globals, locals)
2668
- finally:
2669
- pass
2670
-
2671
- sys.argv[:] = args
2672
- sys.argv.insert(0, program)
2673
- sys.path.insert(0, os.path.dirname(program))
2674
- try:
2675
- with open(program, "rb") as fp:
2676
- code = compile(fp.read(), program, "exec")
2677
- except OSError:
2678
- click.echo(
2679
- click.style("Could not launch program: {}".format(program), fg="red")
2680
- )
2681
- sys.exit(1)
2682
- globs = {
2683
- "__file__": program,
2684
- "__name__": "__main__",
2685
- "__package__": None,
2686
- "wandb_magic_install": magic_install,
2687
- }
2688
- prep = """
2689
- import __main__
2690
- __main__.__file__ = "{}"
2691
- wandb_magic_install()
2692
- """.format(program)
2693
- magic_run(prep, globs, None)
2694
- magic_run(code, globs, None)
2695
-
2696
-
2697
2661
  @cli.command("online", help="Enable W&B sync")
2698
2662
  @display_error
2699
2663
  def online():
wandb/env.py CHANGED
@@ -82,11 +82,11 @@ SENTRY_DSN = "WANDB_SENTRY_DSN"
82
82
  INIT_TIMEOUT = "WANDB_INIT_TIMEOUT"
83
83
  GIT_COMMIT = "WANDB_GIT_COMMIT"
84
84
  GIT_REMOTE_URL = "WANDB_GIT_REMOTE_URL"
85
- _EXECUTABLE = "WANDB_EXECUTABLE"
85
+ _EXECUTABLE = "WANDB_X_EXECUTABLE"
86
86
  LAUNCH_QUEUE_NAME = "WANDB_LAUNCH_QUEUE_NAME"
87
87
  LAUNCH_QUEUE_ENTITY = "WANDB_LAUNCH_QUEUE_ENTITY"
88
88
  LAUNCH_TRACE_ID = "WANDB_LAUNCH_TRACE_ID"
89
- _REQUIRE_LEGACY_SERVICE = "WANDB__REQUIRE_LEGACY_SERVICE"
89
+ _REQUIRE_LEGACY_SERVICE = "WANDB_X_REQUIRE_LEGACY_SERVICE"
90
90
 
91
91
  # For testing, to be removed in future version
92
92
  USE_V1_ARTIFACTS = "_WANDB_USE_V1_ARTIFACTS"
@@ -290,9 +290,7 @@ def get_base_url(
290
290
  if env is None:
291
291
  env = os.environ
292
292
 
293
- base_url = env.get(BASE_URL, default)
294
-
295
- return base_url.rstrip("/") if base_url is not None else base_url
293
+ return env.get(BASE_URL, default)
296
294
 
297
295
 
298
296
  def get_app_url(
wandb/errors/links.py CHANGED
@@ -19,7 +19,7 @@ class WBURL:
19
19
  class Registry:
20
20
  """A collection of URLs that can be associated with a name."""
21
21
 
22
- def __init__(self):
22
+ def __init__(self) -> None:
23
23
  self.urls: dict[str, WBURL] = {
24
24
  "wandb-launch": WBURL(
25
25
  "https://wandb.me/launch",
wandb/errors/term.py CHANGED
@@ -7,12 +7,7 @@ import logging
7
7
  import os
8
8
  import sys
9
9
  import threading
10
- from typing import TYPE_CHECKING, Iterator
11
-
12
- if sys.version_info < (3, 8):
13
- from typing_extensions import Protocol
14
- else:
15
- from typing import Protocol
10
+ from typing import TYPE_CHECKING, Iterator, Protocol
16
11
 
17
12
  import click
18
13
 
@@ -122,9 +122,9 @@ class PolicyLive(FileEventHandler):
122
122
  self._last_uploaded_time: Optional[float] = None
123
123
  self._last_uploaded_size: int = 0
124
124
  if settings is not None:
125
- if settings._live_policy_rate_limit is not None:
126
- self.RATE_LIMIT_SECONDS = settings._live_policy_rate_limit
127
- self._min_wait_time: Optional[float] = settings._live_policy_wait_time
125
+ if settings.x_live_policy_rate_limit is not None:
126
+ self.RATE_LIMIT_SECONDS = settings.x_live_policy_rate_limit
127
+ self._min_wait_time: Optional[float] = settings.x_live_policy_wait_time
128
128
  else:
129
129
  self._min_wait_time = None
130
130
 
@@ -21,15 +21,12 @@ from wandb.filesync import upload_job
21
21
  from wandb.sdk.lib.paths import LogicalPath
22
22
 
23
23
  if TYPE_CHECKING:
24
+ from typing import TypedDict
25
+
24
26
  from wandb.filesync import stats
25
27
  from wandb.sdk.internal import file_stream, internal_api, progress
26
28
  from wandb.sdk.internal.settings_static import SettingsStatic
27
29
 
28
- if sys.version_info >= (3, 8):
29
- from typing import TypedDict
30
- else:
31
- from typing_extensions import TypedDict
32
-
33
30
  class ArtifactStatus(TypedDict):
34
31
  finalize: bool
35
32
  pending_count: int
@@ -39,12 +39,7 @@ Examples:
39
39
  import random
40
40
  import sys
41
41
  from pathlib import Path
42
- from typing import Any, Optional
43
-
44
- if sys.version_info >= (3, 8):
45
- from typing import Literal
46
- else:
47
- from typing_extensions import Literal
42
+ from typing import Any, Literal, Optional
48
43
 
49
44
  import fastai
50
45
  from fastai.callbacks import TrackerCallback
@@ -1,16 +1,10 @@
1
1
  import re
2
2
  import sys
3
- from typing import Optional
3
+ from typing import Literal, Optional
4
4
 
5
5
  import wandb
6
6
  import wandb.util
7
7
 
8
- if sys.version_info >= (3, 8):
9
- from typing import Literal
10
- else:
11
- from typing_extensions import Literal
12
-
13
-
14
8
  _gym_version_lt_0_26: Optional[bool] = None
15
9
  _gymnasium_version_lt_1_0_0: Optional[bool] = None
16
10
 
@@ -1,5 +1,4 @@
1
- import sys
2
- from typing import Any, Dict, Optional, Union
1
+ from typing import Any, Dict, Literal, Optional, Union
3
2
 
4
3
  import tensorflow as tf # type: ignore
5
4
  from tensorflow.keras import callbacks
@@ -8,12 +7,6 @@ import wandb
8
7
  from wandb.integration.keras.keras import patch_tf_keras
9
8
  from wandb.sdk.lib import telemetry
10
9
 
11
- if sys.version_info >= (3, 8):
12
- from typing import Literal
13
- else:
14
- from typing_extensions import Literal
15
-
16
-
17
10
  LogStrategy = Literal["epoch", "batch"]
18
11
 
19
12