wandb 0.17.8rc1__py3-none-macosx_11_0_arm64.whl → 0.17.9__py3-none-macosx_11_0_arm64.whl
Sign up to get free protection for your applications and to get access to all the features.
- package_readme.md +47 -53
- wandb/__init__.py +12 -6
- wandb/__init__.pyi +112 -2
- wandb/bin/apple_gpu_stats +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/data_types.py +1 -0
- wandb/env.py +13 -0
- wandb/integration/keras/__init__.py +2 -5
- wandb/integration/keras/callbacks/metrics_logger.py +10 -4
- wandb/integration/keras/callbacks/model_checkpoint.py +0 -5
- wandb/integration/keras/keras.py +12 -1
- wandb/integration/openai/fine_tuning.py +5 -5
- wandb/integration/tensorboard/log.py +1 -1
- wandb/proto/v3/wandb_internal_pb2.py +31 -21
- wandb/proto/v3/wandb_settings_pb2.py +2 -2
- wandb/proto/v3/wandb_telemetry_pb2.py +12 -12
- wandb/proto/v4/wandb_internal_pb2.py +23 -21
- wandb/proto/v4/wandb_settings_pb2.py +2 -2
- wandb/proto/v4/wandb_telemetry_pb2.py +12 -12
- wandb/proto/v5/wandb_internal_pb2.py +23 -21
- wandb/proto/v5/wandb_settings_pb2.py +2 -2
- wandb/proto/v5/wandb_telemetry_pb2.py +12 -12
- wandb/proto/wandb_deprecated.py +4 -0
- wandb/sdk/__init__.py +1 -1
- wandb/sdk/artifacts/artifact.py +9 -11
- wandb/sdk/artifacts/artifact_manifest_entry.py +10 -2
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py +31 -0
- wandb/sdk/internal/system/assets/trainium.py +2 -1
- wandb/sdk/internal/tb_watcher.py +1 -1
- wandb/sdk/lib/_settings_toposort_generated.py +5 -3
- wandb/sdk/service/service.py +7 -2
- wandb/sdk/wandb_init.py +5 -1
- wandb/sdk/wandb_manager.py +0 -3
- wandb/sdk/wandb_require.py +22 -1
- wandb/sdk/wandb_run.py +14 -4
- wandb/sdk/wandb_settings.py +32 -10
- wandb/sdk/wandb_setup.py +3 -0
- {wandb-0.17.8rc1.dist-info → wandb-0.17.9.dist-info}/METADATA +48 -54
- {wandb-0.17.8rc1.dist-info → wandb-0.17.9.dist-info}/RECORD +43 -44
- wandb/testing/relay.py +0 -874
- /wandb/{viz.py → sdk/lib/viz.py} +0 -0
- {wandb-0.17.8rc1.dist-info → wandb-0.17.9.dist-info}/WHEEL +0 -0
- {wandb-0.17.8rc1.dist-info → wandb-0.17.9.dist-info}/entry_points.txt +0 -0
- {wandb-0.17.8rc1.dist-info → wandb-0.17.9.dist-info}/licenses/LICENSE +0 -0
wandb/sdk/wandb_settings.py
CHANGED
@@ -356,6 +356,7 @@ class SettingsData:
|
|
356
356
|
_python: str
|
357
357
|
_runqueue_item_id: str
|
358
358
|
_require_core: bool
|
359
|
+
_require_legacy_service: bool
|
359
360
|
_save_requirements: bool
|
360
361
|
_service_transport: str
|
361
362
|
_service_wait: float
|
@@ -363,8 +364,11 @@ class SettingsData:
|
|
363
364
|
_start_datetime: str
|
364
365
|
_start_time: float
|
365
366
|
_stats_pid: int # (internal) base pid for system stats
|
366
|
-
|
367
|
-
|
367
|
+
_stats_sampling_interval: float # sampling interval for system stats
|
368
|
+
_stats_sample_rate_seconds: float # badly-named sampling interval, deprecated
|
369
|
+
_stats_samples_to_average: (
|
370
|
+
int # number of samples to average before reporting, deprecated
|
371
|
+
)
|
368
372
|
_stats_join_assets: (
|
369
373
|
bool # join metrics from different assets before sending to backend
|
370
374
|
)
|
@@ -404,8 +408,8 @@ class SettingsData:
|
|
404
408
|
entity: str
|
405
409
|
files_dir: str
|
406
410
|
force: bool
|
407
|
-
fork_from:
|
408
|
-
resume_from:
|
411
|
+
fork_from: RunMoment
|
412
|
+
resume_from: RunMoment
|
409
413
|
git_commit: str
|
410
414
|
git_remote: str
|
411
415
|
git_remote_url: str
|
@@ -475,8 +479,6 @@ class SettingsData:
|
|
475
479
|
sync_dir: str
|
476
480
|
sync_file: str
|
477
481
|
sync_symlink_latest: str
|
478
|
-
system_sample: int
|
479
|
-
system_sample_seconds: int
|
480
482
|
table_raise_on_max_row_limit_exceeded: bool
|
481
483
|
timespec: str
|
482
484
|
tmp_dir: str
|
@@ -618,7 +620,7 @@ class Property:
|
|
618
620
|
|
619
621
|
|
620
622
|
class Settings(SettingsData):
|
621
|
-
"""
|
623
|
+
"""Settings for the W&B SDK."""
|
622
624
|
|
623
625
|
def _default_props(self) -> Dict[str, Dict[str, Any]]:
|
624
626
|
"""Initialize instance attributes (individual settings) as Property objects.
|
@@ -650,7 +652,7 @@ class Settings(SettingsData):
|
|
650
652
|
},
|
651
653
|
_disable_service={
|
652
654
|
"value": False,
|
653
|
-
"preprocessor":
|
655
|
+
"preprocessor": self._process_disable_service,
|
654
656
|
"is_policy": True,
|
655
657
|
},
|
656
658
|
_disable_setproctitle={"value": False, "preprocessor": _str_as_bool},
|
@@ -718,6 +720,7 @@ class Settings(SettingsData):
|
|
718
720
|
"preprocessor": _str_as_json,
|
719
721
|
},
|
720
722
|
_require_core={"value": False, "preprocessor": _str_as_bool},
|
723
|
+
_require_legacy_service={"value": False, "preprocessor": _str_as_bool},
|
721
724
|
_save_requirements={"value": True, "preprocessor": _str_as_bool},
|
722
725
|
_service_wait={
|
723
726
|
"value": 30,
|
@@ -729,6 +732,11 @@ class Settings(SettingsData):
|
|
729
732
|
"auto_hook": True,
|
730
733
|
},
|
731
734
|
_start_datetime={"preprocessor": _datetime_as_str},
|
735
|
+
_stats_sampling_interval={
|
736
|
+
"value": 10.0,
|
737
|
+
"preprocessor": float,
|
738
|
+
"validator": self._validate__stats_sampling_interval,
|
739
|
+
},
|
732
740
|
_stats_sample_rate_seconds={
|
733
741
|
"value": 2.0,
|
734
742
|
"preprocessor": float,
|
@@ -955,8 +963,6 @@ class Settings(SettingsData):
|
|
955
963
|
"value": "latest-run",
|
956
964
|
"hook": lambda x: self._path_convert(self.wandb_dir, x),
|
957
965
|
},
|
958
|
-
system_sample={"value": 15},
|
959
|
-
system_sample_seconds={"value": 2},
|
960
966
|
table_raise_on_max_row_limit_exceeded={
|
961
967
|
"value": False,
|
962
968
|
"preprocessor": _str_as_bool,
|
@@ -1172,12 +1178,28 @@ class Settings(SettingsData):
|
|
1172
1178
|
|
1173
1179
|
return True
|
1174
1180
|
|
1181
|
+
@staticmethod
|
1182
|
+
def _process_disable_service(value: Union[str, bool]) -> bool:
|
1183
|
+
value = _str_as_bool(value)
|
1184
|
+
if value:
|
1185
|
+
wandb.termwarn(
|
1186
|
+
"Disabling the wandb service is deprecated as of version 0.18.0 and will be removed in version 0.19.0.",
|
1187
|
+
repeat=False,
|
1188
|
+
)
|
1189
|
+
return value
|
1190
|
+
|
1175
1191
|
@staticmethod
|
1176
1192
|
def _validate__service_wait(value: float) -> bool:
|
1177
1193
|
if value <= 0:
|
1178
1194
|
raise UsageError("_service_wait must be a positive number")
|
1179
1195
|
return True
|
1180
1196
|
|
1197
|
+
@staticmethod
|
1198
|
+
def _validate__stats_sampling_interval(value: float) -> bool:
|
1199
|
+
if value < 0.1:
|
1200
|
+
raise UsageError("sampling interval must be >= 0.1 seconds")
|
1201
|
+
return True
|
1202
|
+
|
1181
1203
|
@staticmethod
|
1182
1204
|
def _validate__stats_sample_rate_seconds(value: float) -> bool:
|
1183
1205
|
if value < 0.1:
|
wandb/sdk/wandb_setup.py
CHANGED
@@ -18,6 +18,7 @@ import threading
|
|
18
18
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
19
19
|
|
20
20
|
import wandb
|
21
|
+
from wandb.sdk.lib import import_hooks
|
21
22
|
|
22
23
|
from . import wandb_manager, wandb_settings
|
23
24
|
from .lib import config_util, server, tracelog
|
@@ -268,6 +269,8 @@ class _WandbSetup__WandbSetup: # noqa: N801
|
|
268
269
|
self._config = config_dict
|
269
270
|
|
270
271
|
def _teardown(self, exit_code: Optional[int] = None) -> None:
|
272
|
+
import_hooks.unregister_all_post_import_hooks()
|
273
|
+
|
271
274
|
if not self._manager:
|
272
275
|
return
|
273
276
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: wandb
|
3
|
-
Version: 0.17.
|
3
|
+
Version: 0.17.9
|
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
|
@@ -127,92 +127,86 @@ Description-Content-Type: text/markdown
|
|
127
127
|
|
128
128
|
# Weights and Biases [![PyPI](https://img.shields.io/pypi/v/wandb)](https://pypi.python.org/pypi/wandb) [![Conda (channel only)](https://img.shields.io/conda/vn/conda-forge/wandb)](https://anaconda.org/conda-forge/wandb) [![CircleCI](https://img.shields.io/circleci/build/github/wandb/wandb/main)](https://circleci.com/gh/wandb/wandb) [![Codecov](https://img.shields.io/codecov/c/gh/wandb/wandb)](https://codecov.io/gh/wandb/wandb)
|
129
129
|
|
130
|
-
Use W&B to build better models faster. Track and visualize all the pieces of your machine learning pipeline, from datasets to production models.
|
130
|
+
Use W&B to build better models faster. Track and visualize all the pieces of your machine learning pipeline, from datasets to production machine learning models. Get started with W&B today, [sign up for an account!](https://wandb.com?utm_source=github&utm_medium=code&utm_campaign=wandb&utm_content=readme)
|
131
131
|
|
132
|
-
- Quickly identify model regressions. Use W&B to visualize results in real time, all in a central dashboard.
|
133
|
-
- Focus on the interesting ML. Spend less time manually tracking results in spreadsheets and text files.
|
134
|
-
- Capture dataset versions with W&B Artifacts to identify how changing data affects your resulting models.
|
135
|
-
- Reproduce any model, with saved code, hyperparameters, launch commands, input data, and resulting model weights.
|
136
132
|
|
137
|
-
[Sign up for a free account →](https://wandb.ai/login?signup=true)
|
138
133
|
|
139
|
-
|
134
|
+
See the [W&B Developer Guide](https://docs.wandb.ai/?utm_source=github&utm_medium=code&utm_campaign=wandb&utm_content=documentation) and [API Reference Guide](https://docs.wandb.ai/ref?utm_source=github&utm_medium=code&utm_campaign=wandb&utm_content=documentation) for a full technical description of the W&B platform.
|
140
135
|
|
141
|
-
|
142
|
-
- Search, compare, and visualize training runs
|
143
|
-
- Analyze system usage metrics alongside runs
|
144
|
-
- Collaborate with team members
|
145
|
-
- Replicate historic results
|
146
|
-
- Run parameter sweeps
|
147
|
-
- Keep records of experiments available forever
|
136
|
+
|
148
137
|
|
149
|
-
|
138
|
+
# Quickstart
|
150
139
|
|
151
|
-
|
140
|
+
Get started with W&B in four steps:
|
141
|
+
|
142
|
+
1. First, sign up for a [W&B account](https://wandb.ai/login?utm_source=github&utm_medium=code&utm_campaign=wandb&utm_content=quickstart).
|
143
|
+
|
144
|
+
2. Second, install the W&B SDK with [pip](https://pip.pypa.io/en/stable/). Navigate to your terminal and type the following command:
|
152
145
|
|
153
146
|
```shell
|
154
147
|
pip install wandb
|
155
148
|
```
|
156
149
|
|
157
|
-
|
150
|
+
3. Third, log into W&B:
|
158
151
|
|
159
152
|
```python
|
160
|
-
|
153
|
+
wandb.login()
|
154
|
+
```
|
161
155
|
|
162
|
-
|
163
|
-
args = ...
|
156
|
+
4. Use the example code snippet below as a template to integrate W&B to your Python script:
|
164
157
|
|
165
|
-
|
166
|
-
wandb
|
158
|
+
```python
|
159
|
+
import wandb
|
167
160
|
|
161
|
+
# Start a W&B Run with wandb.init
|
162
|
+
run = wandb.init(project="my_first_project")
|
168
163
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
epoch, loss, val_loss = ...
|
173
|
-
# Framework agnostic / custom metrics
|
174
|
-
wandb.log({"epoch": epoch, "loss": loss, "val_loss": val_loss})
|
175
|
-
```
|
164
|
+
# Save model inputs and hyperparameters in a wandb.config object
|
165
|
+
config = run.config
|
166
|
+
config.learning_rate = 0.01
|
176
167
|
|
177
|
-
|
168
|
+
# Model training code here ...
|
178
169
|
|
179
|
-
|
180
|
-
|
170
|
+
# Log metrics over time to visualize performance with wandb.log
|
171
|
+
for i in range(10):
|
172
|
+
run.log({"loss": ...})
|
173
|
+
|
174
|
+
# Mark the run as finished, and finish uploading all data
|
175
|
+
run.finish()
|
181
176
|
```
|
182
177
|
|
183
|
-
|
178
|
+
For example, if the preceding code was stored in a script called train.py:
|
184
179
|
|
185
|
-
|
180
|
+
```shell
|
181
|
+
python train.py
|
182
|
+
```
|
186
183
|
|
187
|
-
|
184
|
+
You will see a URL in your terminal logs when your script starts and finishes. Data is staged locally in a directory named _wandb_ relative to your script. Navigate to the W&B App to view a dashboard of your first W&B Experiment. Use the W&B App to compare multiple experiments in a unified place, dive into the results of a single run, and much more!
|
188
185
|
|
189
|
-
|
186
|
+
|
190
187
|
|
191
|
-
|
188
|
+
# Integrations
|
192
189
|
|
193
|
-
|
194
|
-
[![Watch the video](https://i.imgur.com/PW0Ejlc.png)](https://youtu.be/EeqhOSvNX-A)
|
195
|
-
[Introduction video →](https://youtu.be/EeqhOSvNX-A)
|
190
|
+
Use your favorite framework with W&B. W&B integrations make it fast and easy to set up experiment tracking and data versioning inside existing projects. For more information on how to integrate W&B with the framework of your choice, see [W&B Integrations](https://docs.wandb.ai/guides/integrations) in the W&B Developer Guide.
|
196
191
|
|
197
|
-
|
192
|
+
|
198
193
|
|
199
|
-
|
194
|
+
# Contribution guidelines
|
195
|
+
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.
|
200
196
|
|
201
|
-
|
197
|
+
|
202
198
|
|
203
|
-
|
199
|
+
# Academic Researchers
|
200
|
+
Reach out to W&B Support at support@wandb.com to get a [free academic license](https://www.wandb.com/academic) for you and your research group.
|
204
201
|
|
205
|
-
|
202
|
+
|
206
203
|
|
207
|
-
#
|
208
|
-
If you'd like a free academic account for your research group, [reach out to us →](https://www.wandb.com/academic)
|
204
|
+
# W&B Community
|
209
205
|
|
210
|
-
|
211
|
-
[![](https://i.imgur.com/loKLiez.png)](https://www.wandb.com/academic)
|
206
|
+
Be a part of the growing W&B Community and interact with the W&B team in our [Discord](https://wandb.me/discord). Stay connected with the latest ML updates and tutorials with [W&B Fully Connected](https://wandb.ai/fully-connected).
|
212
207
|
|
213
|
-
|
214
|
-
Got questions, feedback or want to join a community of ML engineers working on exciting projects?
|
208
|
+
|
215
209
|
|
216
|
-
|
210
|
+
# License
|
217
211
|
|
218
|
-
[
|
212
|
+
[MIT License](https://github.com/wandb/wandb/blob/main/LICENSE)
|
@@ -1,22 +1,21 @@
|
|
1
|
-
package_readme.md,sha256=
|
2
|
-
wandb-0.17.
|
3
|
-
wandb-0.17.
|
4
|
-
wandb-0.17.
|
5
|
-
wandb-0.17.
|
6
|
-
wandb-0.17.
|
1
|
+
package_readme.md,sha256=1v4WgKja-54kllY4clEr85vGFQAGaCo-JrtTZfsG4zM,3864
|
2
|
+
wandb-0.17.9.dist-info/RECORD,,
|
3
|
+
wandb-0.17.9.dist-info/WHEEL,sha256=B_HTF0nESsbkeA2UeB8YgKrtPrxyKFORYURx7Qxu8Xw,101
|
4
|
+
wandb-0.17.9.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
|
5
|
+
wandb-0.17.9.dist-info/METADATA,sha256=y-qSncqTKlyFUV9oRdxswE5owXRQhtLGEJvKt4MXKlY,9581
|
6
|
+
wandb-0.17.9.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
|
7
7
|
wandb/magic.py,sha256=YVSQmkrtlQ56p-VqkwjiPGNBa694UvPALxc4yp6RiLk,59
|
8
|
-
wandb/env.py,sha256=
|
9
|
-
wandb/__init__.pyi,sha256=
|
8
|
+
wandb/env.py,sha256=IMnRFsZtV2ySzi7K1yaAurqk91Hoy79Dc8hQLQ96to8,13983
|
9
|
+
wandb/__init__.pyi,sha256=GRt4nYNWE3POD8vzOBdzvSh9DRskiwhLHULdzIOOdOo,41168
|
10
10
|
wandb/_globals.py,sha256=CccwOAls5bxJArYHg12b08ZeKR8Qu9u57GtYWjBH0o0,702
|
11
11
|
wandb/util.py,sha256=NCcgpBVkmYA1ysO0XpEwRRXjb_pXjM_L4lHqUkWtXkc,61474
|
12
12
|
wandb/wandb_run.py,sha256=CNh9S6uubFk8FphQjzkbvedyyGCN9aBEsRBKjy8tqqs,155
|
13
|
-
wandb/__init__.py,sha256=
|
14
|
-
wandb/data_types.py,sha256=
|
13
|
+
wandb/__init__.py,sha256=VyVVTimB1ukcDAvgRhsnUFFU7UbKbd85YfqWDYcER-0,7107
|
14
|
+
wandb/data_types.py,sha256=PB9sFue9cT6W-eZ2HwQrIoaJ5LLhdMICNAYlXjKboZs,73250
|
15
15
|
wandb/wandb_controller.py,sha256=Mp6szfycF_F8fFhxuDTSMpN4Vvc6D0Ix2gZBSSYOOS0,24804
|
16
16
|
wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
wandb/wandb_torch.py,sha256=DGY0jsWashL02iXGce-5XypfSJIbBWfLsCrmixqNTCY,21276
|
18
18
|
wandb/wandb_agent.py,sha256=V6NUHwv4_PDvR3ygyjHxHGZhJeeLUF9JgK2NpjXigUU,21117
|
19
|
-
wandb/viz.py,sha256=3wrGhPKNdj4VZ-hD1wanzF01XH2IHcUBl_1ZnYKnl5Q,3455
|
20
19
|
wandb/__main__.py,sha256=gripuDgB7J8wMMeJt4CIBRjn1BMSFr5zvsrt585Pnj4,64
|
21
20
|
wandb/trigger.py,sha256=PaitU3sX6ekGkd2R8iD6d_VtI72ypF7LaPBXh3rXY7Q,615
|
22
21
|
wandb/jupyter.py,sha256=tPnqX9kvAOpWpyz1f-uXrmUvj2V3hx0ANHKeXNxGF1o,16954
|
@@ -72,37 +71,37 @@ wandb/proto/wandb_base_pb2.py,sha256=HjakgSUcYSm6X7B-nvckrmMjaUKGuUh_KE97AuFBat8
|
|
72
71
|
wandb/proto/wandb_internal_pb2.py,sha256=nIbQS1O4z7n2U0SWGxViHUnjReEBblhht3rZ7pQ0MTs,542
|
73
72
|
wandb/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
74
73
|
wandb/proto/wandb_generate_proto.py,sha256=KO1hlAUBGHQRNKsddhcSXvh5a6rmFM3kshKTWftbWwY,1278
|
75
|
-
wandb/proto/wandb_deprecated.py,sha256=
|
74
|
+
wandb/proto/wandb_deprecated.py,sha256=TzajfudC8s2ihtSmeRLVj_jmvsOxw_hFsQhrFPXYCQI,1988
|
76
75
|
wandb/proto/wandb_telemetry_pb2.py,sha256=ReY9N2qSt46o7m1ou1khvYSYYImrzo5ro90g_9m8QsM,322
|
77
|
-
wandb/proto/v5/wandb_settings_pb2.py,sha256=
|
76
|
+
wandb/proto/v5/wandb_settings_pb2.py,sha256=eg3NI4DH_MTK4X2q0Yo0vnUDtG9unYqFD9d2zcnp9uI,16802
|
78
77
|
wandb/proto/v5/wandb_server_pb2.py,sha256=8uKB9qS4F3QjKSlj1aL8eEXZiBIVuTGIZWvCsbs2qEQ,6477
|
79
78
|
wandb/proto/v5/wandb_base_pb2.py,sha256=_RqGlyLs6WbBXyh2m6xke8OQyjQeRFKDwh8Brn9PAN4,1441
|
80
|
-
wandb/proto/v5/wandb_internal_pb2.py,sha256=
|
81
|
-
wandb/proto/v5/wandb_telemetry_pb2.py,sha256=
|
82
|
-
wandb/proto/v4/wandb_settings_pb2.py,sha256=
|
79
|
+
wandb/proto/v5/wandb_internal_pb2.py,sha256=jelnVMvxb8x1uAhWtm427p5C9MClAGKfBlBo5-shmhA,53363
|
80
|
+
wandb/proto/v5/wandb_telemetry_pb2.py,sha256=dk1TfWfDFOJqpvYzHdNjbCh_nUEEH1NrD1F_YKOD3G8,11342
|
81
|
+
wandb/proto/v4/wandb_settings_pb2.py,sha256=xVNtv7RSeQnENLMjBo6Mw6d0ptDvO0Lkmqgyz7PrgnQ,16494
|
83
82
|
wandb/proto/v4/wandb_server_pb2.py,sha256=YkapN5k621amFmIYKtV5xLww3TaB-6EeGI8Qq2_UY94,5991
|
84
83
|
wandb/proto/v4/wandb_base_pb2.py,sha256=fF312_OnXSKQTjMW0Pwdo-yZBmFURWH-n4XJ_sEaExY,1315
|
85
|
-
wandb/proto/v4/wandb_internal_pb2.py,sha256=
|
84
|
+
wandb/proto/v4/wandb_internal_pb2.py,sha256=y-7fmh5BGgQ9ayRTM5Kg9s4yany25UxCTwTYY8RjFs0,49304
|
86
85
|
wandb/proto/v4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
|
-
wandb/proto/v4/wandb_telemetry_pb2.py,sha256=
|
88
|
-
wandb/proto/v3/wandb_settings_pb2.py,sha256=
|
86
|
+
wandb/proto/v4/wandb_telemetry_pb2.py,sha256=q0Lt4IehdwFaLtEwJ6phh9BLJU0E_d5odmsN_grRJ2U,11096
|
87
|
+
wandb/proto/v3/wandb_settings_pb2.py,sha256=M5Z7ATiAolFX-g1aVL_MyRLAyaDawiHDj0mtTpm_Z2c,19763
|
89
88
|
wandb/proto/v3/wandb_server_pb2.py,sha256=u7p14fy4XjKVcDnE54U1WwgC1Gpy6VWGA4MGU3aXyg4,13631
|
90
89
|
wandb/proto/v3/wandb_base_pb2.py,sha256=0Ixr7LeEOTdIU_pewdbhRZOrFqRtgsOsWcyC_Tw4Nzw,2248
|
91
|
-
wandb/proto/v3/wandb_internal_pb2.py,sha256=
|
90
|
+
wandb/proto/v3/wandb_internal_pb2.py,sha256=lLt7VzP8Euzbed4jHvVfC0VgutnJXV0AKUBvuLoVecE,107759
|
92
91
|
wandb/proto/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
|
-
wandb/proto/v3/wandb_telemetry_pb2.py,sha256=
|
94
|
-
wandb/bin/wandb-core,sha256=
|
95
|
-
wandb/bin/apple_gpu_stats,sha256=
|
92
|
+
wandb/proto/v3/wandb_telemetry_pb2.py,sha256=V2pidQIG-U1i9f4ojjiB4_KOHfWS8zoit0LAgk3QY3g,13649
|
93
|
+
wandb/bin/wandb-core,sha256=RPyVPr8eSuQxLvmQY4hmCsAOjsxLZAjrVYwlSBTgV8g,10769298
|
94
|
+
wandb/bin/apple_gpu_stats,sha256=OMcDdPX8YBhjRlPEOZarjEPVkQBgzpOjpCyK4Ficd2A,1386888
|
96
95
|
wandb/integration/magic.py,sha256=8b7GkkntZb-jJ7L0OF4M7mS1yJKtMI_o3jfsTufWMr4,17246
|
97
96
|
wandb/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
97
|
wandb/integration/yolov8/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
99
98
|
wandb/integration/yolov8/yolov8.py,sha256=srryantZqO65pj1x52MiKD5m2SzdQc4nIsj4o1GPK8o,11371
|
100
|
-
wandb/integration/keras/keras.py,sha256=
|
101
|
-
wandb/integration/keras/__init__.py,sha256=
|
99
|
+
wandb/integration/keras/keras.py,sha256=V6VT9xnglRa75JymHUG9MHv1PvFX5plCgyfq_UMVaMM,44155
|
100
|
+
wandb/integration/keras/__init__.py,sha256=8_vNA4cEbj1lg2pgMz-c5Iu1XJQtX9x5_vNGrv4NBdE,345
|
102
101
|
wandb/integration/keras/callbacks/tables_builder.py,sha256=kmqwNGVbDaHo6pNfltUK5BED0g1oIwmtJOCGZZk-FAg,8840
|
103
102
|
wandb/integration/keras/callbacks/__init__.py,sha256=sY5AMC3x28iA815fqbqkkArtjctqG-m9N2D5FnyR0no,223
|
104
|
-
wandb/integration/keras/callbacks/model_checkpoint.py,sha256=
|
105
|
-
wandb/integration/keras/callbacks/metrics_logger.py,sha256=
|
103
|
+
wandb/integration/keras/callbacks/model_checkpoint.py,sha256=tSsUmpIJiKZsxB-rVmV2i9uTIYJVI3iXeJ-AjU0GaBo,8665
|
104
|
+
wandb/integration/keras/callbacks/metrics_logger.py,sha256=yEzLI6i5P6yWdgW4gYKXlLH_cYbv6bi1jDVjbKPFNO4,5038
|
106
105
|
wandb/integration/lightning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
106
|
wandb/integration/lightning/fabric/__init__.py,sha256=RFhr2VkC0D8b6bAXUMZzcVzqDQaoOozfP_HOogAWi9o,94
|
108
107
|
wandb/integration/lightning/fabric/logger.py,sha256=DSW0VUJyxQjkRAzi4t1YiOXWgvic5n4erKPxD3h81xI,27229
|
@@ -130,7 +129,7 @@ wandb/integration/torch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
130
129
|
wandb/integration/fastai/__init__.py,sha256=poVKoo5eBJn98rhO6nC6-iExeQwYH1RI49rRz9nDFWk,9478
|
131
130
|
wandb/integration/tensorflow/estimator_hook.py,sha256=fi-UtjNZxUnDkzfbNP09iH074z5x0ItZiB4dkvwMGNI,1756
|
132
131
|
wandb/integration/tensorflow/__init__.py,sha256=8y7Acc7EAxKF-4vGXuZH6tsXeNNzqXisE2blNz9RNQk,125
|
133
|
-
wandb/integration/tensorboard/log.py,sha256=
|
132
|
+
wandb/integration/tensorboard/log.py,sha256=PPa-NviytycxE7CYA1VWvgjZsFcH5RAdArLFcisck_g,14312
|
134
133
|
wandb/integration/tensorboard/__init__.py,sha256=Ivj8-XV4lGLg1JK2LdNxWlaLkqrJmXdyWTXf41ysib8,213
|
135
134
|
wandb/integration/tensorboard/monkeypatch.py,sha256=7S3i2vcmmIjEpY4f2Ro8OxfS5b2zgXYoTDoLmwcm7fw,6828
|
136
135
|
wandb/integration/gym/__init__.py,sha256=0jeYkdGZFby6Rf8QlqltvKrZEZdlaaB9JPX7GhAj3_Q,3129
|
@@ -150,7 +149,7 @@ wandb/integration/ultralytics/bbox_utils.py,sha256=TFAiLqdp9ON2toR6nzJruNYy4D28C
|
|
150
149
|
wandb/integration/ultralytics/mask_utils.py,sha256=uzUtDjg4C9_4Z6_fWo0wiylauYvmckZ9JQn0afd1NJg,7080
|
151
150
|
wandb/integration/catboost/catboost.py,sha256=mI_8Ul5cC4d8tBeugSXRW1op--px_ihT3eUP9e5GXd8,5952
|
152
151
|
wandb/integration/catboost/__init__.py,sha256=dxef0C9s9Xez_sF3sOqSJpKaSrAibAqMA_TpVUyIwac,127
|
153
|
-
wandb/integration/openai/fine_tuning.py,sha256=
|
152
|
+
wandb/integration/openai/fine_tuning.py,sha256=w9_F3bLTG72KdNkD2rAPRdrq6rc58EtltFxwedyI690,18555
|
154
153
|
wandb/integration/openai/__init__.py,sha256=T6x9lIFfw2NzOSi46wi3otY_-DSwyMgnIjMIOIod7iU,66
|
155
154
|
wandb/integration/openai/openai.py,sha256=zGD1kj6yjDP1IfAAYRcltuXD5Bf569CSnMHMf4rDm54,496
|
156
155
|
wandb/integration/openai/resolver.py,sha256=KrndobRki0C9SNRL8SgPISea0-D7-1g8kvJMcFMN7SA,8164
|
@@ -167,7 +166,6 @@ wandb/old/summary.py,sha256=eqpzQB5CfzTKZta6tB-nVUh0ZmiLwISqjSAt4yvwocE,13952
|
|
167
166
|
wandb/old/settings.py,sha256=IrS10skC9gCTb8NgTWeRFgsTYL1bw36e-rG_xECk-yo,6374
|
168
167
|
wandb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
169
168
|
wandb/cli/cli.py,sha256=MlMkNpr6m62E6mEGkmXgFUKBYCSmdMRv-93rSM2SISw,98297
|
170
|
-
wandb/testing/relay.py,sha256=DTL9-ZQugqiID97PYRkym3zEJYmDeyh-7E0uzqNg0CI,29808
|
171
169
|
wandb/sklearn/__init__.py,sha256=bDnzytR60EFQblaAZdw76WlJBmfG-O7NrKavIEY97Ck,861
|
172
170
|
wandb/sklearn/utils.py,sha256=dfHxglqT6UlPl8ulgZNWrElfW04cdBWrFfEtDp3pvZw,5903
|
173
171
|
wandb/sklearn/plot/classifier.py,sha256=xtuztUURWZz0rEmfHh9G8nRqvQtcUHqMC6rG6gZXJjM,11736
|
@@ -191,20 +189,20 @@ wandb/mpmain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
191
189
|
wandb/mpmain/__main__.py,sha256=bLhspPeHQvNMyRNR7xi9v-02XfW1mhJY2yBWI3bYtbg,57
|
192
190
|
wandb/sdk/wandb_config.py,sha256=TCddmgheDApOE-OXcZdgihhCnTpoR5jj4zeohs-9Q8M,10854
|
193
191
|
wandb/sdk/wandb_alerts.py,sha256=SwBPBiXRxknMTMGbsVoMMWqWK65UWMcKAdTWZtdwAeo,193
|
194
|
-
wandb/sdk/wandb_run.py,sha256=
|
192
|
+
wandb/sdk/wandb_run.py,sha256=FGDVWbTnZ4SrMfo7dmrz7xoIpNF_hhNi1ktL9P_ccOk,164278
|
195
193
|
wandb/sdk/wandb_sync.py,sha256=KhxDOHR7x8q54hAlsEx4ta1dAW1ZnzTUMr7VwJyCL5c,2273
|
196
|
-
wandb/sdk/__init__.py,sha256=
|
197
|
-
wandb/sdk/wandb_init.py,sha256=
|
194
|
+
wandb/sdk/__init__.py,sha256=82sn75Iewvnbxx6_Idixcjac1igG5H6LdCI6H6iWmOM,809
|
195
|
+
wandb/sdk/wandb_init.py,sha256=8bFzJZXNxpIjbd71Q9GvRHWwe0bYr4UG4t4Z1LkqTnI,51463
|
198
196
|
wandb/sdk/wandb_helper.py,sha256=IbJ7opO8UkfwCDekSjRYIrGBblUxnTPBfp1EdesfF4U,1824
|
199
|
-
wandb/sdk/wandb_settings.py,sha256
|
197
|
+
wandb/sdk/wandb_settings.py,sha256=-rdmQyIrvWrC-5C1W3dmvBFM77IO5GeJQ8Ot1p2PCj4,76243
|
200
198
|
wandb/sdk/wandb_summary.py,sha256=yQdOVIPrZaZanhBQ7yuSfPLX0x6dxwkN_KAn4SgjSZU,4536
|
201
199
|
wandb/sdk/wandb_watch.py,sha256=2LGjshxCywHhlxHU3-APmgWsoQjMSxJdqA8J75KAmIU,3898
|
202
200
|
wandb/sdk/wandb_login.py,sha256=HnjrtkZRO3yoYBWkrCxEzM2jsIejYOxHz7VoENYeGqI,11191
|
203
201
|
wandb/sdk/wandb_metric.py,sha256=a3GiQXr6H18m81uobYjlJaC8CL8iANzI42qxkxfZsDs,3268
|
204
|
-
wandb/sdk/wandb_require.py,sha256=
|
202
|
+
wandb/sdk/wandb_require.py,sha256=gHx6stH3AZi5OoY5IlBJhgwxhniT90A4F6z8Wy5u3Zw,3697
|
205
203
|
wandb/sdk/wandb_sweep.py,sha256=cboZB5qvLigAY3UeYifDTX1me_-Q4Y0EJ5UVEzYCXac,4000
|
206
|
-
wandb/sdk/wandb_manager.py,sha256=
|
207
|
-
wandb/sdk/wandb_setup.py,sha256=
|
204
|
+
wandb/sdk/wandb_manager.py,sha256=CW2rRta519DcUTBqWMiu90L8nHaT_7S-Iq2jFA9N4ck,6884
|
205
|
+
wandb/sdk/wandb_setup.py,sha256=uHG5bp4IcJxFVrQboM3m-VIUqe845TLqATiB-nbv0ew,13204
|
208
206
|
wandb/sdk/wandb_require_helpers.py,sha256=ZmKv5aXXHDTTU6nYHMLKW4_pt9X-PlaMtbRJl77kHX8,1331
|
209
207
|
wandb/sdk/integration_utils/data_logging.py,sha256=DDFtDaUu50aeTTgxCHHYd2f85guqqf2xfEOburRlwwQ,19533
|
210
208
|
wandb/sdk/integration_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -227,11 +225,11 @@ wandb/sdk/artifacts/storage_policy.py,sha256=iDZmHBINhrXoeUbc7s5MKCd0r5JCc5QPN3V
|
|
227
225
|
wandb/sdk/artifacts/artifact_state.py,sha256=6fxISSPsK62VeMau_5CI4a9lQXTaUJXcruzk74WUIBE,236
|
228
226
|
wandb/sdk/artifacts/artifact_ttl.py,sha256=kNRr9JZ5P2iuo0ofoNKlSddGJkIQXRUjwgO8YUdyN4g,86
|
229
227
|
wandb/sdk/artifacts/storage_layout.py,sha256=No2cLJEuU3Dr8rJ5Pq-e-36S6p-WKoYcCG24DKAKzro,73
|
230
|
-
wandb/sdk/artifacts/artifact.py,sha256=
|
228
|
+
wandb/sdk/artifacts/artifact.py,sha256=E336yad5FRb51H3xQcAQcOR2UpZKHsfi27Z_7Um54Q4,88887
|
231
229
|
wandb/sdk/artifacts/artifact_file_cache.py,sha256=EsXD2bQyFhFYK2NICUZ3jtXf-r0hC63-6lqyU_cHcPw,9840
|
232
230
|
wandb/sdk/artifacts/artifact_saver.py,sha256=tG3QiqB-CUrEC_2Qus1AsJHCInhgaFDqdDmZQ1ja798,9285
|
233
231
|
wandb/sdk/artifacts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
234
|
-
wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=
|
232
|
+
wandb/sdk/artifacts/artifact_manifest_entry.py,sha256=SfjfdzAIHEpbvQ1tOorfOMpITPgIyEnsJyUARgrnS7I,8424
|
235
233
|
wandb/sdk/artifacts/artifact_manifest.py,sha256=eSx_51ETukZ3PehIJkrNBd_Q1E6CowEZSbrLmaWiwiY,2503
|
236
234
|
wandb/sdk/artifacts/artifact_instance_cache.py,sha256=8dnqz8ri-3zAygk-ihn9JQsRaeYUwF7Av_pUqUoJxt0,473
|
237
235
|
wandb/sdk/artifacts/exceptions.py,sha256=2rVhtgZixcnjcMkR2Mr_sGp9KnqTDILwcqecyZDDwWY,1852
|
@@ -249,7 +247,7 @@ wandb/sdk/artifacts/storage_handlers/multi_handler.py,sha256=egJykO-DwvXocKvnnU6
|
|
249
247
|
wandb/sdk/artifacts/storage_handlers/azure_handler.py,sha256=fHGoZ-qK3Se7879VoWIn7clDd-g7VKcpdvy-1sLH9p0,8122
|
250
248
|
wandb/sdk/artifacts/storage_handlers/local_file_handler.py,sha256=2JPEQ88CyX1F454o8N7TGWEbC2p5OugXiuD1n9X9-Oo,5335
|
251
249
|
wandb/sdk/artifacts/storage_handlers/http_handler.py,sha256=0rw0ABqThgOmthmmOt4wAOfHexHxCs74ROlj1Nh_fCw,4093
|
252
|
-
wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256
|
250
|
+
wandb/sdk/artifacts/storage_handlers/gcs_handler.py,sha256=-wfTy3LGnjxlolDH8DAlOMVoW7GYjlSSY6KHPvnfqck,8597
|
253
251
|
wandb/sdk/artifacts/storage_handlers/tracking_handler.py,sha256=Yz5tC0d37JQjVCYJbte_5E33frAcI2A7q5mepSmMLN4,2577
|
254
252
|
wandb/sdk/artifacts/artifact_manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
255
253
|
wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py,sha256=ZQyFPm2ab0VtIpJjYW2jxuAb85u4S7n7IB69RnPycMU,3433
|
@@ -338,7 +336,7 @@ wandb/sdk/internal/thread_local_settings.py,sha256=UqD6kfjsy6mvxIWcjhd-vJWkNRCeU
|
|
338
336
|
wandb/sdk/internal/sender_config.py,sha256=qEuXwOskca3sYyDIRsswlXmj9StCCS0WKQ1qrBXbIjw,6767
|
339
337
|
wandb/sdk/internal/settings_static.py,sha256=m97hST3YWmpkmgnXbso0gfPFZ7k7Y4SJSM7NbJIZKTc,3526
|
340
338
|
wandb/sdk/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
341
|
-
wandb/sdk/internal/tb_watcher.py,sha256=
|
339
|
+
wandb/sdk/internal/tb_watcher.py,sha256=yBM_cYtxEF12Tdz1a99kgUKhYNOEJHbHWuYngJr1sGc,18728
|
342
340
|
wandb/sdk/internal/flow_control.py,sha256=LO3iDyBbI4WGoDuVLjA_iv62PyiupdYkpSjxPIMGI7E,8584
|
343
341
|
wandb/sdk/internal/context.py,sha256=dnmsKEoQ2xOtmXM5OBVHdyGO3XdTQrqjxfb1lRADSTc,2518
|
344
342
|
wandb/sdk/internal/file_stream.py,sha256=MNWY5xAPHonGGMTDwQxS4PEZk0ZZRp16I_OOaUonB2Y,25924
|
@@ -359,7 +357,7 @@ wandb/sdk/internal/system/assets/ipu.py,sha256=qYENDcFSxLcx7Cpfm8hqE4p9fXnH00rV2
|
|
359
357
|
wandb/sdk/internal/system/assets/gpu_amd.py,sha256=bM5usw4qdKHQGQnqFFi-ObOfS3YZg7oDjzeA7eBiLHY,7171
|
360
358
|
wandb/sdk/internal/system/assets/memory.py,sha256=RA_1o3PQ_bxgDhGK7f58aq_WDsdWpIIB8BbOufbi-Co,4290
|
361
359
|
wandb/sdk/internal/system/assets/cpu.py,sha256=6I06hsCmsPt2tjfj0hrFQdlXfUwKKhI3DBg2L6cFbuc,4574
|
362
|
-
wandb/sdk/internal/system/assets/trainium.py,sha256=
|
360
|
+
wandb/sdk/internal/system/assets/trainium.py,sha256=5jt8KY-XHIqSybuTkcfz_e64ZxDbli_gcQpRSi2F9l8,13455
|
363
361
|
wandb/sdk/internal/system/assets/__init__.py,sha256=MYjvhda8QWI55ygVE8hzLULgJhrJPMftB3z4F660Hso,522
|
364
362
|
wandb/sdk/internal/system/assets/aggregators.py,sha256=EzJp_YjvYORcBH6g58OsqGtmy55HqYHYMAvaIsp2Iwg,1093
|
365
363
|
wandb/sdk/internal/system/assets/asset_registry.py,sha256=NYSoCDya3Wh7ytBJOE-tNySdPpLYnSghM6CzS9-I4nk,478
|
@@ -406,7 +404,8 @@ wandb/sdk/lib/hashutil.py,sha256=3T0DyZZPZ6VXrYrmLzusdoAtD1JsuXsx0_iNuyqim9M,174
|
|
406
404
|
wandb/sdk/lib/module.py,sha256=f-NFgDi87ai-3r-jN9T3cAZQ3fhivxi4RWhzc9GPb98,1830
|
407
405
|
wandb/sdk/lib/handler_util.py,sha256=mT9CKsmboq4lPWElsi4uo9ORHhx6OYTr7KY2QtgbM6M,589
|
408
406
|
wandb/sdk/lib/gql_request.py,sha256=4-4HY6IOetwcL8EUaoFc_u3pojnNtEN4NN6-5EtT-MY,2400
|
409
|
-
wandb/sdk/lib/_settings_toposort_generated.py,sha256=
|
407
|
+
wandb/sdk/lib/_settings_toposort_generated.py,sha256=1P9Uj-QZaK8Y1Vt0HS6xaYRfH1miImPOI1r-YAt-EcM,5401
|
408
|
+
wandb/sdk/lib/viz.py,sha256=3wrGhPKNdj4VZ-hD1wanzF01XH2IHcUBl_1ZnYKnl5Q,3455
|
410
409
|
wandb/sdk/lib/config_util.py,sha256=YdYvk-KbTdTa-84XegpvbqMuQfdlOREFiVR7m3q6e3Q,2917
|
411
410
|
wandb/sdk/lib/apikey.py,sha256=O9kdOEVAa9EedVZyCsh-CdSKo6T-FjhqGk7-n-jXPYY,9211
|
412
411
|
wandb/sdk/lib/printer.py,sha256=QoiAd68b3fGrtuve2QJOvy20O6IGLsyffOrKFXUPXDs,9641
|
@@ -414,7 +413,7 @@ wandb/sdk/lib/fsm.py,sha256=rUON10HAMDumB0JOE5BDsBgk1F4KbdynGnfSZFuWDEA,5250
|
|
414
413
|
wandb/sdk/lib/lazyloader.py,sha256=y9mToMsUOibWeL5I6P9e993IKYRLxMYFLeUTessw3L4,1877
|
415
414
|
wandb/sdk/lib/_wburls_generate.py,sha256=ROOCtjLN6LVcS_vgUf1IOQe0RU-FWUsECeAhww9Eg64,440
|
416
415
|
wandb/sdk/lib/reporting.py,sha256=sfjVyNtNVOWFIcKihS-9C0yJhCAaUOUP3N3TDdyA-Fc,2410
|
417
|
-
wandb/sdk/service/service.py,sha256=
|
416
|
+
wandb/sdk/service/service.py,sha256=wsxS6vRgXku2ZXocWqB6pRkN82pLtg4HMlqqX-OiptE,9520
|
418
417
|
wandb/sdk/service/server.py,sha256=FOWWSk6xxknnATKdi9zkmG4N9rk6BCMpFit7hMV0qOw,4009
|
419
418
|
wandb/sdk/service/streams.py,sha256=Vgg1Zk5dYGZYo2sgwwZDaGy8H7qZSlNJN5bVGXjasmU,14822
|
420
419
|
wandb/sdk/service/_startup_debug.py,sha256=0-evSjgwjb2LiOP952eScrfSWL8PrAXPOKPgZbio5_M,588
|