wandb 0.18.4__py3-none-macosx_11_0_arm64.whl → 0.18.6__py3-none-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. wandb/__init__.py +2 -2
  2. wandb/__init__.pyi +21 -19
  3. wandb/agents/pyagent.py +1 -1
  4. wandb/apis/importers/wandb.py +1 -1
  5. wandb/apis/normalize.py +2 -18
  6. wandb/apis/public/api.py +122 -62
  7. wandb/apis/public/artifacts.py +8 -3
  8. wandb/apis/public/files.py +17 -2
  9. wandb/apis/public/jobs.py +2 -2
  10. wandb/apis/public/query_generator.py +1 -1
  11. wandb/apis/public/runs.py +8 -8
  12. wandb/apis/public/teams.py +3 -3
  13. wandb/apis/public/users.py +1 -1
  14. wandb/apis/public/utils.py +68 -0
  15. wandb/bin/gpu_stats +0 -0
  16. wandb/bin/wandb-core +0 -0
  17. wandb/cli/cli.py +12 -3
  18. wandb/data_types.py +1 -1
  19. wandb/docker/__init__.py +2 -1
  20. wandb/docker/auth.py +2 -3
  21. wandb/errors/links.py +73 -0
  22. wandb/errors/term.py +7 -6
  23. wandb/filesync/step_prepare.py +1 -1
  24. wandb/filesync/upload_job.py +1 -1
  25. wandb/integration/catboost/catboost.py +2 -2
  26. wandb/integration/diffusers/pipeline_resolver.py +1 -1
  27. wandb/integration/diffusers/resolvers/multimodal.py +6 -6
  28. wandb/integration/diffusers/resolvers/utils.py +1 -1
  29. wandb/integration/fastai/__init__.py +3 -2
  30. wandb/integration/keras/callbacks/metrics_logger.py +1 -1
  31. wandb/integration/keras/callbacks/model_checkpoint.py +1 -1
  32. wandb/integration/keras/keras.py +1 -1
  33. wandb/integration/kfp/kfp_patch.py +1 -1
  34. wandb/integration/lightgbm/__init__.py +2 -2
  35. wandb/integration/magic.py +2 -2
  36. wandb/integration/metaflow/metaflow.py +1 -1
  37. wandb/integration/sacred/__init__.py +1 -1
  38. wandb/integration/sagemaker/auth.py +1 -1
  39. wandb/integration/sklearn/plot/classifier.py +7 -7
  40. wandb/integration/sklearn/plot/clusterer.py +3 -3
  41. wandb/integration/sklearn/plot/regressor.py +3 -3
  42. wandb/integration/sklearn/plot/shared.py +2 -2
  43. wandb/integration/tensorboard/log.py +2 -2
  44. wandb/integration/ultralytics/callback.py +2 -2
  45. wandb/integration/xgboost/xgboost.py +1 -1
  46. wandb/jupyter.py +0 -1
  47. wandb/plot/__init__.py +17 -8
  48. wandb/plot/bar.py +53 -27
  49. wandb/plot/confusion_matrix.py +151 -70
  50. wandb/plot/custom_chart.py +124 -0
  51. wandb/plot/histogram.py +46 -20
  52. wandb/plot/line.py +57 -26
  53. wandb/plot/line_series.py +148 -60
  54. wandb/plot/pr_curve.py +89 -44
  55. wandb/plot/roc_curve.py +82 -37
  56. wandb/plot/scatter.py +53 -20
  57. wandb/plot/viz.py +20 -102
  58. wandb/sdk/artifacts/artifact.py +280 -328
  59. wandb/sdk/artifacts/artifact_manifest.py +10 -9
  60. wandb/sdk/artifacts/artifact_manifest_entry.py +1 -1
  61. wandb/sdk/artifacts/storage_handlers/azure_handler.py +9 -4
  62. wandb/sdk/artifacts/storage_handlers/gcs_handler.py +1 -3
  63. wandb/sdk/artifacts/storage_handlers/s3_handler.py +1 -1
  64. wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +2 -2
  65. wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +1 -1
  66. wandb/sdk/backend/backend.py +0 -1
  67. wandb/sdk/data_types/audio.py +1 -1
  68. wandb/sdk/data_types/base_types/media.py +66 -5
  69. wandb/sdk/data_types/bokeh.py +1 -1
  70. wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +1 -1
  71. wandb/sdk/data_types/helper_types/image_mask.py +2 -2
  72. wandb/sdk/data_types/histogram.py +1 -1
  73. wandb/sdk/data_types/html.py +1 -1
  74. wandb/sdk/data_types/image.py +1 -1
  75. wandb/sdk/data_types/molecule.py +3 -3
  76. wandb/sdk/data_types/object_3d.py +4 -4
  77. wandb/sdk/data_types/plotly.py +1 -1
  78. wandb/sdk/data_types/saved_model.py +0 -1
  79. wandb/sdk/data_types/table.py +7 -7
  80. wandb/sdk/data_types/trace_tree.py +1 -1
  81. wandb/sdk/data_types/video.py +4 -3
  82. wandb/sdk/interface/router.py +0 -2
  83. wandb/sdk/internal/datastore.py +1 -1
  84. wandb/sdk/internal/file_pusher.py +1 -1
  85. wandb/sdk/internal/file_stream.py +4 -4
  86. wandb/sdk/internal/handler.py +3 -2
  87. wandb/sdk/internal/internal.py +1 -1
  88. wandb/sdk/internal/internal_api.py +183 -64
  89. wandb/sdk/internal/job_builder.py +4 -3
  90. wandb/sdk/internal/system/assets/__init__.py +0 -2
  91. wandb/sdk/internal/tb_watcher.py +11 -10
  92. wandb/sdk/launch/_launch.py +4 -3
  93. wandb/sdk/launch/_launch_add.py +2 -2
  94. wandb/sdk/launch/builder/kaniko_builder.py +0 -1
  95. wandb/sdk/launch/create_job.py +1 -0
  96. wandb/sdk/launch/environment/local_environment.py +0 -1
  97. wandb/sdk/launch/errors.py +0 -6
  98. wandb/sdk/launch/registry/local_registry.py +0 -2
  99. wandb/sdk/launch/runner/abstract.py +0 -5
  100. wandb/sdk/launch/sweeps/__init__.py +0 -2
  101. wandb/sdk/launch/sweeps/scheduler.py +0 -2
  102. wandb/sdk/launch/sweeps/scheduler_sweep.py +0 -1
  103. wandb/sdk/lib/apikey.py +3 -3
  104. wandb/sdk/lib/file_stream_utils.py +1 -1
  105. wandb/sdk/lib/filesystem.py +1 -1
  106. wandb/sdk/lib/ipython.py +16 -9
  107. wandb/sdk/lib/mailbox.py +0 -4
  108. wandb/sdk/lib/printer.py +44 -8
  109. wandb/sdk/lib/retry.py +1 -1
  110. wandb/sdk/service/service.py +3 -3
  111. wandb/sdk/service/streams.py +2 -4
  112. wandb/sdk/wandb_init.py +20 -20
  113. wandb/sdk/wandb_login.py +1 -1
  114. wandb/sdk/wandb_require.py +1 -4
  115. wandb/sdk/wandb_run.py +57 -69
  116. wandb/sdk/wandb_settings.py +3 -4
  117. wandb/sdk/wandb_sync.py +2 -1
  118. wandb/util.py +46 -18
  119. wandb/wandb_agent.py +3 -3
  120. wandb/wandb_controller.py +2 -2
  121. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/METADATA +1 -1
  122. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/RECORD +125 -126
  123. wandb/sdk/internal/system/assets/gpu_apple.py +0 -177
  124. wandb/sdk/lib/_wburls_generate.py +0 -25
  125. wandb/sdk/lib/_wburls_generated.py +0 -22
  126. wandb/sdk/lib/wburls.py +0 -46
  127. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/WHEEL +0 -0
  128. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/entry_points.txt +0 -0
  129. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/licenses/LICENSE +0 -0
@@ -127,7 +127,7 @@ class Team(Attrs):
127
127
  def create(cls, api, team, admin_username=None):
128
128
  """Create a new team.
129
129
 
130
- Arguments:
130
+ Args:
131
131
  api: (`Api`) The api instance to use
132
132
  team: (str) The name of the team
133
133
  admin_username: (str) optional username of the admin user of the team, defaults to the current user.
@@ -147,7 +147,7 @@ class Team(Attrs):
147
147
  def invite(self, username_or_email, admin=False):
148
148
  """Invite a user to a team.
149
149
 
150
- Arguments:
150
+ Args:
151
151
  username_or_email: (str) The username or email address of the user you want to invite
152
152
  admin: (bool) Whether to make this user a team admin, defaults to False
153
153
 
@@ -168,7 +168,7 @@ class Team(Attrs):
168
168
  def create_service_account(self, description):
169
169
  """Create a service account for the team.
170
170
 
171
- Arguments:
171
+ Args:
172
172
  description: (str) A description for this service account
173
173
 
174
174
  Returns:
@@ -62,7 +62,7 @@ class User(Attrs):
62
62
  def create(cls, api, email, admin=False):
63
63
  """Create a new user.
64
64
 
65
- Arguments:
65
+ Args:
66
66
  api: (`Api`) The api instance to use
67
67
  email: (str) The name of the team
68
68
  admin: (bool) Whether this user should be a global instance admin
@@ -0,0 +1,68 @@
1
+ import re
2
+ from enum import Enum
3
+ from urllib.parse import urlparse
4
+
5
+ from wandb.sdk.artifacts._validators import is_artifact_registry_project
6
+
7
+
8
+ def parse_s3_url_to_s3_uri(url) -> str:
9
+ """Convert an S3 HTTP(S) URL to an S3 URI.
10
+
11
+ Arguments:
12
+ url (str): The S3 URL to convert, in the format
13
+ 'http(s)://<bucket>.s3.<region>.amazonaws.com/<key>'.
14
+ or 'http(s)://<bucket>.s3.amazonaws.com/<key>'
15
+
16
+ Returns:
17
+ str: The corresponding S3 URI in the format 's3://<bucket>/<key>'.
18
+
19
+ Raises:
20
+ ValueError: If the provided URL is not a valid S3 URL.
21
+ """
22
+ # Regular expression to match S3 URL pattern
23
+ s3_pattern = r"^https?://.*s3.*amazonaws\.com.*"
24
+ parsed_url = urlparse(url)
25
+
26
+ # Check if it's an S3 URL
27
+ match = re.match(s3_pattern, parsed_url.geturl())
28
+ if not match:
29
+ raise ValueError("Invalid S3 URL")
30
+
31
+ # Extract bucket name and key
32
+ bucket_name, *_ = parsed_url.netloc.split(".")
33
+ key = parsed_url.path.lstrip("/")
34
+
35
+ # Construct the S3 URI
36
+ s3_uri = f"s3://{bucket_name}/{key}"
37
+
38
+ return s3_uri
39
+
40
+
41
+ class PathType(Enum):
42
+ """We have lots of different paths users pass in to fetch artifacts, projects, etc.
43
+
44
+ This enum is used for specifying what format the path is in given a string path.
45
+ """
46
+
47
+ PROJECT = "PROJECT"
48
+ ARTIFACT = "ARTIFACT"
49
+
50
+
51
+ def parse_org_from_registry_path(path: str, path_type: PathType) -> str:
52
+ """Parse the org from a registry path.
53
+
54
+ Essentially fetching the "entity" from the path but for Registries the entity is actually the org.
55
+
56
+ Args:
57
+ path (str): The path to parse. Can be a project path <entity>/<project> or <project> or an
58
+ artifact path like <entity>/<project>/<artifact> or <project>/<artifact> or <artifact>
59
+ path_type (PathType): The type of path to parse.
60
+ """
61
+ parts = path.split("/")
62
+ expected_parts = 3 if path_type == PathType.ARTIFACT else 2
63
+
64
+ if len(parts) >= expected_parts:
65
+ org, project = parts[:2]
66
+ if is_artifact_registry_project(project):
67
+ return org
68
+ return ""
wandb/bin/gpu_stats CHANGED
Binary file
wandb/bin/wandb-core CHANGED
Binary file
wandb/cli/cli.py CHANGED
@@ -30,7 +30,9 @@ import wandb.sdk.verify.verify as wandb_verify
30
30
  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
+ from wandb.errors.links import url_registry
33
34
  from wandb.integration.magic import magic_install
35
+ from wandb.sdk.artifacts._validators import is_artifact_registry_project
34
36
  from wandb.sdk.artifacts.artifact_file_cache import get_artifact_file_cache
35
37
  from wandb.sdk.launch import utils as launch_utils
36
38
  from wandb.sdk.launch._launch_add import _launch_add
@@ -38,7 +40,6 @@ from wandb.sdk.launch.errors import ExecutionError, LaunchError
38
40
  from wandb.sdk.launch.sweeps import utils as sweep_utils
39
41
  from wandb.sdk.launch.sweeps.scheduler import Scheduler
40
42
  from wandb.sdk.lib import filesystem
41
- from wandb.sdk.lib.wburls import wburls
42
43
  from wandb.sync import SyncManager, get_run_from_path, get_runs
43
44
 
44
45
  from .beta import beta
@@ -1172,7 +1173,7 @@ def launch_sweep(
1172
1173
  wandb.termlog(f"Scheduler added to launch queue ({queue})")
1173
1174
 
1174
1175
 
1175
- @cli.command(help=f"Launch or queue a W&B Job. See {wburls.get('cli_launch')}")
1176
+ @cli.command(help=f"Launch or queue a W&B Job. See {url_registry.url('wandb-launch')}")
1176
1177
  @click.option(
1177
1178
  "--uri",
1178
1179
  "-u",
@@ -1566,7 +1567,6 @@ def launch(
1566
1567
  "queues",
1567
1568
  default=None,
1568
1569
  multiple=True,
1569
- metavar="<queue(s)>",
1570
1570
  help="The name of a queue for the agent to watch. Multiple -q flags supported.",
1571
1571
  )
1572
1572
  @click.option(
@@ -2391,6 +2391,15 @@ def get(path, root, type):
2391
2391
  artifact_name = artifact_parts[0]
2392
2392
  else:
2393
2393
  version = "latest"
2394
+ if is_artifact_registry_project(project):
2395
+ organization = path.split("/")[0] if path.count("/") == 2 else ""
2396
+ # set entity to match the settings since in above code it was potentially set to an org
2397
+ settings_entity = public_api.settings["entity"] or public_api.default_entity
2398
+ # Registry artifacts are under the org entity. Because we offer a shorthand and alias for this path,
2399
+ # we need to fetch the org entity to for the user behind the scenes.
2400
+ entity = InternalApi()._resolve_org_entity_name(
2401
+ entity=settings_entity, organization=organization
2402
+ )
2394
2403
  full_path = f"{entity}/{project}/{artifact_name}:{version}"
2395
2404
  wandb.termlog(
2396
2405
  "Downloading {type} artifact {full_path}".format(
wandb/data_types.py CHANGED
@@ -6,7 +6,7 @@ flexible containers for information, like tables and HTML, and more.
6
6
  For more on logging media, see [our guide](https://docs.wandb.com/guides/track/log/media)
7
7
 
8
8
  For more on logging structured data for interactive dataset and model analysis,
9
- see [our guide to W&B Tables](https://docs.wandb.com/guides/data-vis).
9
+ see [our guide to W&B Tables](https://docs.wandb.com/guides/tables/).
10
10
 
11
11
  All of these special data types are subclasses of WBValue. All the data types
12
12
  serialize to JSON, since that is what wandb uses to save the objects locally
wandb/docker/__init__.py CHANGED
@@ -87,7 +87,8 @@ def is_docker_installed() -> bool:
87
87
  try:
88
88
  # Run the docker --version command
89
89
  result = subprocess.run(
90
- ["docker", "--version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE
90
+ ["docker", "--version"],
91
+ capture_output=True,
91
92
  )
92
93
  if result.returncode == 0:
93
94
  return True
wandb/docker/auth.py CHANGED
@@ -151,7 +151,7 @@ class AuthConfig(dict):
151
151
  ) -> Dict[str, Dict[str, Any]]:
152
152
  """Parse authentication entries.
153
153
 
154
- Arguments:
154
+ Args:
155
155
  entries: Dict of authentication entries.
156
156
  raise_on_error: If set to true, an invalid format will raise
157
157
  InvalidConfigFileError
@@ -386,7 +386,7 @@ def parse_auth(
386
386
  ) -> Dict[str, Dict[str, Any]]:
387
387
  """Parse authentication entries.
388
388
 
389
- Arguments:
389
+ Args:
390
390
  entries: Dict of authentication entries.
391
391
  raise_on_error: If set to true, an invalid format will raise
392
392
  InvalidConfigFileError
@@ -430,7 +430,6 @@ def _load_legacy_config(
430
430
  }
431
431
  except Exception as e:
432
432
  log.debug(e)
433
- pass
434
433
 
435
434
  log.debug("All parsing attempts failed - returning empty config")
436
435
  return {}
wandb/errors/links.py ADDED
@@ -0,0 +1,73 @@
1
+ """Module containing the WBURLs class and WBURL dataclass.
2
+
3
+ Used to store predefined URLs that can be associated with a name. The URLs are
4
+ shortened using with the `wandb.me` domain, using dub.co as the shortening service.
5
+ If the URLs need to be updates, use the dub.co service to point to the new URL.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from dataclasses import dataclass
11
+
12
+
13
+ @dataclass
14
+ class WBURL:
15
+ url: str
16
+ description: str
17
+
18
+
19
+ class Registry:
20
+ """A collection of URLs that can be associated with a name."""
21
+
22
+ def __init__(self):
23
+ self.urls: dict[str, WBURL] = {
24
+ "wandb-launch": WBURL(
25
+ "https://wandb.me/launch",
26
+ "Link to the W&B launch marketing page",
27
+ ),
28
+ "wandb-init": WBURL(
29
+ "https://wandb.me/wandb-init",
30
+ "Link to the wandb.init reference documentation page",
31
+ ),
32
+ "define-metric": WBURL(
33
+ "https://wandb.me/define-metric",
34
+ "Link to the W&B developer guide documentation page on wandb.define_metric",
35
+ ),
36
+ "developer-guide": WBURL(
37
+ "https://wandb.me/developer-guide",
38
+ "Link to the W&B developer guide top level page",
39
+ ),
40
+ "wandb-core": WBURL(
41
+ "https://wandb.me/wandb-core",
42
+ "Link to the documentation for the wandb-core service",
43
+ ),
44
+ "wandb-server": WBURL(
45
+ "https://wandb.me/wandb-server",
46
+ "Link to the documentation for the self-hosted W&B server",
47
+ ),
48
+ "multiprocess": WBURL(
49
+ "https://wandb.me/multiprocess",
50
+ (
51
+ "Link to the W&B developer guide documentation page on how to "
52
+ "use wandb in a multiprocess environment"
53
+ ),
54
+ ),
55
+ }
56
+
57
+ def url(self, name: str) -> str:
58
+ """Get the URL associated with the given name."""
59
+ wb_url = self.urls.get(name)
60
+ if wb_url:
61
+ return wb_url.url
62
+ raise ValueError(f"URL not found for {name}")
63
+
64
+ def description(self, name: str) -> str:
65
+ """Get the description associated with the given name."""
66
+ wb_url = self.urls.get(name)
67
+ if wb_url:
68
+ return wb_url.description
69
+ raise ValueError(f"Description not found for {name}")
70
+
71
+
72
+ # This is an instance of the Links class that can be used to access the URLs
73
+ url_registry = Registry()
wandb/errors/term.py CHANGED
@@ -136,12 +136,13 @@ def dynamic_text() -> Iterator[DynamicBlock | None]:
136
136
  with _dynamic_text_lock:
137
137
  _dynamic_blocks.append(block)
138
138
 
139
- yield block
140
-
141
- with _dynamic_text_lock:
142
- block._lines_to_print = []
143
- _l_rerender_dynamic_blocks()
144
- _dynamic_blocks.remove(block)
139
+ try:
140
+ yield block
141
+ finally:
142
+ with _dynamic_text_lock:
143
+ block._lines_to_print = []
144
+ _l_rerender_dynamic_blocks()
145
+ _dynamic_blocks.remove(block)
145
146
 
146
147
 
147
148
  def _sys_stderr_isatty() -> bool:
@@ -149,7 +149,7 @@ class StepPrepare:
149
149
  ) -> Mapping[str, "CreateArtifactFilesResponseFile"]:
150
150
  """Execute the prepareFiles API call.
151
151
 
152
- Arguments:
152
+ Args:
153
153
  batch: List of RequestPrepare objects
154
154
  Returns:
155
155
  dict of (save_name: ResponseFile) pairs where ResponseFile is a dict with
@@ -30,7 +30,7 @@ class UploadJob:
30
30
  ) -> None:
31
31
  """A file uploader.
32
32
 
33
- Arguments:
33
+ Args:
34
34
  push_function: function(save_name, actual_path) which actually uploads
35
35
  the file.
36
36
  save_name: string logical location of the file relative to the run
@@ -13,7 +13,7 @@ from wandb.sdk.lib import telemetry as wb_telemetry
13
13
  class WandbCallback:
14
14
  """`WandbCallback` automatically integrates CatBoost with wandb.
15
15
 
16
- Arguments:
16
+ Args:
17
17
  - metric_period: (int) if you are passing `metric_period` to your CatBoost model please pass the same value here (default=1).
18
18
 
19
19
  Passing `WandbCallback` to CatBoost will:
@@ -115,7 +115,7 @@ def log_summary(
115
115
  ) -> None:
116
116
  """`log_summary` logs useful metrics about catboost model after training is done.
117
117
 
118
- Arguments:
118
+ Args:
119
119
  model: it can be CatBoostClassifier or CatBoostRegressor.
120
120
  log_all_params: (boolean) if True (default) log the model hyperparameters as W&B config.
121
121
  save_model_checkpoint: (boolean) if True saves the model upload as W&B artifacts.
@@ -28,7 +28,7 @@ class DiffusersPipelineResolver:
28
28
  ) -> Any:
29
29
  """Main call method for the `DiffusersPipelineResolver` class.
30
30
 
31
- Arguments:
31
+ Args:
32
32
  args: (Sequence[Any]) List of arguments.
33
33
  kwargs: (Dict[str, Any]) Dictionary of keyword arguments.
34
34
  response: (wandb.sdk.integration_utils.auto_logging.Response) The response from
@@ -597,7 +597,7 @@ class DiffusersMultiModalPipelineResolver:
597
597
  `__call__` for `wandb.integration.diffusers.pipeline_resolver.DiffusersPipelineResolver`.
598
598
  This is based on `wandb.sdk.integration_utils.auto_logging.RequestResponseResolver`.
599
599
 
600
- Arguments:
600
+ Args:
601
601
  pipeline_name: (str) The name of the Diffusion Pipeline.
602
602
  """
603
603
 
@@ -621,7 +621,7 @@ class DiffusersMultiModalPipelineResolver:
621
621
  ) -> Any:
622
622
  """Main call method for the `DiffusersPipelineResolver` class.
623
623
 
624
- Arguments:
624
+ Args:
625
625
  args: (Sequence[Any]) List of arguments.
626
626
  kwargs: (Dict[str, Any]) Dictionary of keyword arguments.
627
627
  response: (wandb.sdk.integration_utils.auto_logging.Response) The response from
@@ -678,7 +678,7 @@ class DiffusersMultiModalPipelineResolver:
678
678
  def get_output_images(self, response: Response) -> List:
679
679
  """Unpack the generated images, audio, video, etc. from the Diffusion Pipeline's response.
680
680
 
681
- Arguments:
681
+ Args:
682
682
  response: (wandb.sdk.integration_utils.auto_logging.Response) The response from
683
683
  the request.
684
684
 
@@ -704,7 +704,7 @@ class DiffusersMultiModalPipelineResolver:
704
704
  def log_media(self, image: Any, loggable_kwarg_chunks: List, idx: int) -> None:
705
705
  """Log the generated images, audio, video, etc. from the Diffusion Pipeline's response along with an optional caption to a media panel in the run.
706
706
 
707
- Arguments:
707
+ Args:
708
708
  image: (Any) The generated images, audio, video, etc. from the Diffusion
709
709
  Pipeline's response.
710
710
  loggable_kwarg_chunks: (List) Loggable chunks of kwargs.
@@ -780,7 +780,7 @@ class DiffusersMultiModalPipelineResolver:
780
780
  ) -> None:
781
781
  """Populate the row of the `wandb.Table`.
782
782
 
783
- Arguments:
783
+ Args:
784
784
  image: (Any) The generated images, audio, video, etc. from the Diffusion
785
785
  Pipeline's response.
786
786
  loggable_kwarg_chunks: (List) Loggable chunks of kwargs.
@@ -819,7 +819,7 @@ class DiffusersMultiModalPipelineResolver:
819
819
  ) -> Dict[str, Any]:
820
820
  """Prepare the loggable dictionary, which is the packed data as a dictionary for logging to wandb, None if an exception occurred.
821
821
 
822
- Arguments:
822
+ Args:
823
823
  pipeline: (Any) The Diffusion Pipeline.
824
824
  response: (wandb.sdk.integration_utils.auto_logging.Response) The response from
825
825
  the request.
@@ -69,7 +69,7 @@ def postprocess_np_arrays_for_video(
69
69
  def decode_sdxl_t2i_latents(pipeline: Any, latents: "torch_float_tensor") -> List:
70
70
  """Decode latents generated by [`diffusers.StableDiffusionXLPipeline`](https://huggingface.co/docs/diffusers/main/en/api/pipelines/stable_diffusion/stable_diffusion_xl#stable-diffusion-xl).
71
71
 
72
- Arguments:
72
+ Args:
73
73
  pipeline: (diffusers.DiffusionPipeline) The Diffusion Pipeline from
74
74
  [`diffusers`](https://huggingface.co/docs/diffusers).
75
75
  latents (torch.FloatTensor): The generated latents.
@@ -50,11 +50,12 @@ import fastai
50
50
  from fastai.callbacks import TrackerCallback
51
51
 
52
52
  import wandb
53
+ from wandb.sdk.lib import ipython
53
54
 
54
55
  try:
55
56
  import matplotlib
56
57
 
57
- if wandb.wandb_lib.ipython._get_python_type() != "jupyter": # type: ignore[attr-defined]
58
+ if not ipython.in_jupyter():
58
59
  matplotlib.use("Agg") # non-interactive backend (avoid tkinter issues)
59
60
  import matplotlib.pyplot as plt
60
61
  except ImportError:
@@ -66,7 +67,7 @@ class WandbCallback(TrackerCallback):
66
67
 
67
68
  Optionally logs weights, gradients, sample predictions and best trained model.
68
69
 
69
- Arguments:
70
+ Args:
70
71
  learn (fastai.basic_train.Learner): the fast.ai learner to hook.
71
72
  log (str): "gradients", "parameters", "all", or None. Losses & metrics are always logged.
72
73
  save_model (bool): save model at the end of each epoch. It will also load best model at the end of training.
@@ -38,7 +38,7 @@ class WandbMetricsLogger(callbacks.Callback):
38
38
  `step_size` is number of training steps per epoch. `step_size` can be calculated as
39
39
  the product of the cardinality of the training dataset and the batch size.
40
40
 
41
- Arguments:
41
+ Args:
42
42
  log_freq: ("epoch", "batch", or int) if "epoch", logs metrics
43
43
  at the end of each epoch. If "batch", logs metrics at the end
44
44
  of each batch. If an integer, logs metrics at the end of that
@@ -45,7 +45,7 @@ class WandbModelCheckpoint(callbacks.ModelCheckpoint):
45
45
  - Save only model weights, or save the whole model.
46
46
  - Save the model either in SavedModel format or in `.h5` format.
47
47
 
48
- Arguments:
48
+ Args:
49
49
  filepath: (Union[str, os.PathLike]) path to save the model file. `filepath`
50
50
  can contain named formatting options, which will be filled by the value
51
51
  of `epoch` and keys in `logs` (passed in `on_epoch_end`). For example:
@@ -313,7 +313,7 @@ class WandbCallback(tf.keras.callbacks.Callback):
313
313
 
314
314
  `WandbCallback` can optionally save training and validation data for wandb to visualize.
315
315
 
316
- Arguments:
316
+ Args:
317
317
  monitor: (str) name of metric to monitor. Defaults to `val_loss`.
318
318
  mode: (str) one of {`auto`, `min`, `max`}.
319
319
  `min` - save model when monitor is minimized
@@ -163,7 +163,7 @@ def _get_function_source_definition(func: Callable) -> str:
163
163
 
164
164
  # For wandb, allow decorators (so we can use the @wandb_log decorator)
165
165
  func_code_lines = itertools.dropwhile(
166
- lambda x: not (x.startswith("def") or x.startswith("@wandb_log")),
166
+ lambda x: not (x.startswith(("def", "@wandb_log"))),
167
167
  func_code_lines,
168
168
  )
169
169
 
@@ -155,7 +155,7 @@ class _WandbCallback:
155
155
  def wandb_callback(log_params: bool = True, define_metric: bool = True) -> Callable:
156
156
  """Automatically integrates LightGBM with wandb.
157
157
 
158
- Arguments:
158
+ Args:
159
159
  log_params: (boolean) if True (default) logs params passed to lightgbm.train as W&B config
160
160
  define_metric: (boolean) if True (default) capture model performance at the best step, instead of the last step, of training in your `wandb.summary`
161
161
 
@@ -190,7 +190,7 @@ def log_summary(
190
190
  ) -> None:
191
191
  """Log useful metrics about lightgbm model after training is done.
192
192
 
193
- Arguments:
193
+ Args:
194
194
  model: (Booster) is an instance of lightgbm.basic.Booster.
195
195
  feature_importance: (boolean) if True (default), logs the feature importance plot.
196
196
  save_model_checkpoint: (boolean) if True saves the best model and upload as W&B artifacts.
@@ -9,6 +9,7 @@ import yaml
9
9
 
10
10
  import wandb
11
11
  from wandb import trigger
12
+ from wandb.sdk.lib import ipython
12
13
  from wandb.util import add_import_hook, get_optional_module
13
14
 
14
15
  _import_hook = None
@@ -505,8 +506,7 @@ def magic_install(init_args=None):
505
506
  # process system args
506
507
  _process_system_args()
507
508
  # install argparse wrapper
508
- in_jupyter_or_ipython = wandb.wandb_sdk.lib.ipython._get_python_type() != "python"
509
- if not in_jupyter_or_ipython:
509
+ if not ipython.in_notebook():
510
510
  _monkey_argparse()
511
511
 
512
512
  # track init calls
@@ -300,7 +300,7 @@ def wandb_log(
300
300
  - Decorating the flow is equivalent to decorating all steps with a default
301
301
  - Decorating a step after decorating the flow will overwrite the flow decoration
302
302
 
303
- Arguments:
303
+ Args:
304
304
  func: (`Callable`). The method or class being decorated (if decorating a step or flow respectively).
305
305
  datasets: (`bool`). If `True`, log datasets. Datasets can be a `pd.DataFrame` or `pathlib.Path`. The default value is `False`, so datasets are not logged.
306
306
  models: (`bool`). If `True`, log models. Models can be a `nn.Module` or `sklearn.base.BaseEstimator`. The default value is `False`, so models are not logged.
@@ -10,7 +10,7 @@ import wandb
10
10
  class WandbObserver(RunObserver):
11
11
  """Log sacred experiment data to W&B.
12
12
 
13
- Arguments:
13
+ Args:
14
14
  Accepts all the arguments accepted by wandb.init().
15
15
 
16
16
  name — A display name for this run, which shows up in the UI and is editable, doesn't have to be unique
@@ -7,7 +7,7 @@ from wandb import env
7
7
  def sagemaker_auth(overrides=None, path=".", api_key=None):
8
8
  """Write a secrets.env file with the W&B ApiKey and any additional secrets passed.
9
9
 
10
- Arguments:
10
+ Args:
11
11
  overrides (dict, optional): Additional environment variables to write
12
12
  to secrets.env
13
13
  path (str, optional): The path to write the secrets file.
@@ -37,7 +37,7 @@ def classifier(
37
37
 
38
38
  Should only be called with a fitted classifier (otherwise an error is thrown).
39
39
 
40
- Arguments:
40
+ Args:
41
41
  model: (classifier) Takes in a fitted classifier.
42
42
  X_train: (arr) Training set features.
43
43
  y_train: (arr) Training set labels.
@@ -117,7 +117,7 @@ def roc(
117
117
  ):
118
118
  """Log the receiver-operating characteristic curve.
119
119
 
120
- Arguments:
120
+ Args:
121
121
  y_true: (arr) Test set labels.
122
122
  y_probas: (arr) Test set predicted probabilities.
123
123
  labels: (list) Named labels for target variable (y). Makes plots easier to
@@ -150,7 +150,7 @@ def confusion_matrix(
150
150
 
151
151
  Confusion matrices depict the pattern of misclassifications by a model.
152
152
 
153
- Arguments:
153
+ Args:
154
154
  y_true: (arr) Test set labels.
155
155
  y_probas: (arr) Test set predicted probabilities.
156
156
  labels: (list) Named labels for target variable (y). Makes plots easier to
@@ -194,7 +194,7 @@ def precision_recall(
194
194
  Precision-recall curves depict the tradeoff between positive predictive value (precision)
195
195
  and true positive rate (recall) as the threshold of a classifier is shifted.
196
196
 
197
- Arguments:
197
+ Args:
198
198
  y_true: (arr) Test set labels.
199
199
  y_probas: (arr) Test set predicted probabilities.
200
200
  labels: (list) Named labels for target variable (y). Makes plots easier to
@@ -226,7 +226,7 @@ def feature_importances(
226
226
  Should only be called with a fitted classifier (otherwise an error is thrown).
227
227
  Only works with classifiers that have a feature_importances_ attribute, like trees.
228
228
 
229
- Arguments:
229
+ Args:
230
230
  model: (clf) Takes in a fitted classifier.
231
231
  feature_names: (list) Names for features. Makes plots easier to read by
232
232
  replacing feature indexes with corresponding names.
@@ -254,7 +254,7 @@ def class_proportions(y_train=None, y_test=None, labels=None):
254
254
 
255
255
  Useful for detecting imbalanced classes.
256
256
 
257
- Arguments:
257
+ Args:
258
258
  y_train: (arr) Training set labels.
259
259
  y_test: (arr) Test set labels.
260
260
  labels: (list) Named labels for target variable (y). Makes plots easier to
@@ -298,7 +298,7 @@ def calibration_curve(clf=None, X=None, y=None, clf_name="Classifier"): # noqa:
298
298
 
299
299
  Please note this function fits variations of the model on the training set when called.
300
300
 
301
- Arguments:
301
+ Args:
302
302
  clf: (clf) Takes in a fitted classifier.
303
303
  X: (arr) Training set features.
304
304
  y: (arr) Training set labels.
@@ -20,7 +20,7 @@ def clusterer(model, X_train, cluster_labels, labels=None, model_name="Clusterer
20
20
 
21
21
  Should only be called with a fitted clusterer (otherwise an error is thrown).
22
22
 
23
- Arguments:
23
+ Args:
24
24
  model: (clusterer) Takes in a fitted clusterer.
25
25
  X_train: (arr) Training set features.
26
26
  cluster_labels: (list) Names for cluster labels. Makes plots easier to read
@@ -68,7 +68,7 @@ def elbow_curve(
68
68
 
69
69
  Please note this function fits the model on the training set when called.
70
70
 
71
- Arguments:
71
+ Args:
72
72
  model: (clusterer) Takes in a fitted clusterer.
73
73
  X: (arr) Training set features.
74
74
 
@@ -118,7 +118,7 @@ def silhouette(
118
118
 
119
119
  Please note this function fits the model on the training set when called.
120
120
 
121
- Arguments:
121
+ Args:
122
122
  model: (clusterer) Takes in a fitted clusterer.
123
123
  X: (arr) Training set features.
124
124
  cluster_labels: (list) Names for cluster labels. Makes plots easier to read