wandb 0.18.0__py3-none-any.whl → 0.18.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- wandb/__init__.py +2 -2
- wandb/__init__.pyi +1 -1
- wandb/apis/public/runs.py +2 -0
- wandb/bin/nvidia_gpu_stats +0 -0
- wandb/cli/cli.py +0 -2
- wandb/data_types.py +9 -2019
- wandb/env.py +0 -5
- wandb/{sklearn → integration/sklearn}/calculate/calibration_curves.py +7 -7
- wandb/{sklearn → integration/sklearn}/calculate/class_proportions.py +1 -1
- wandb/{sklearn → integration/sklearn}/calculate/confusion_matrix.py +3 -2
- wandb/{sklearn → integration/sklearn}/calculate/elbow_curve.py +6 -6
- wandb/{sklearn → integration/sklearn}/calculate/learning_curve.py +2 -2
- wandb/{sklearn → integration/sklearn}/calculate/outlier_candidates.py +2 -2
- wandb/{sklearn → integration/sklearn}/calculate/residuals.py +8 -8
- wandb/{sklearn → integration/sklearn}/calculate/silhouette.py +2 -2
- wandb/{sklearn → integration/sklearn}/calculate/summary_metrics.py +2 -2
- wandb/{sklearn → integration/sklearn}/plot/classifier.py +5 -5
- wandb/{sklearn → integration/sklearn}/plot/clusterer.py +10 -6
- wandb/{sklearn → integration/sklearn}/plot/regressor.py +5 -5
- wandb/{sklearn → integration/sklearn}/plot/shared.py +3 -3
- wandb/{sklearn → integration/sklearn}/utils.py +8 -8
- wandb/{wandb_torch.py → integration/torch/wandb_torch.py} +36 -32
- wandb/proto/v3/wandb_base_pb2.py +2 -1
- wandb/proto/v3/wandb_internal_pb2.py +2 -1
- wandb/proto/v3/wandb_server_pb2.py +2 -1
- wandb/proto/v3/wandb_settings_pb2.py +2 -1
- wandb/proto/v3/wandb_telemetry_pb2.py +2 -1
- wandb/proto/v4/wandb_base_pb2.py +2 -1
- wandb/proto/v4/wandb_internal_pb2.py +2 -1
- wandb/proto/v4/wandb_server_pb2.py +2 -1
- wandb/proto/v4/wandb_settings_pb2.py +2 -1
- wandb/proto/v4/wandb_telemetry_pb2.py +2 -1
- wandb/proto/v5/wandb_base_pb2.py +3 -2
- wandb/proto/v5/wandb_internal_pb2.py +3 -2
- wandb/proto/v5/wandb_server_pb2.py +3 -2
- wandb/proto/v5/wandb_settings_pb2.py +3 -2
- wandb/proto/v5/wandb_telemetry_pb2.py +3 -2
- wandb/sdk/data_types/audio.py +165 -0
- wandb/sdk/data_types/bokeh.py +70 -0
- wandb/sdk/data_types/graph.py +405 -0
- wandb/sdk/data_types/image.py +156 -0
- wandb/sdk/data_types/table.py +1204 -0
- wandb/sdk/data_types/trace_tree.py +2 -2
- wandb/sdk/data_types/utils.py +49 -0
- wandb/sdk/service/service.py +2 -9
- wandb/sdk/service/streams.py +0 -7
- wandb/sdk/wandb_init.py +10 -3
- wandb/sdk/wandb_run.py +6 -152
- wandb/sdk/wandb_setup.py +1 -1
- wandb/sklearn.py +35 -0
- wandb/util.py +6 -2
- {wandb-0.18.0.dist-info → wandb-0.18.1.dist-info}/METADATA +1 -1
- {wandb-0.18.0.dist-info → wandb-0.18.1.dist-info}/RECORD +61 -57
- wandb/sdk/lib/console.py +0 -39
- /wandb/{sklearn → integration/sklearn}/__init__.py +0 -0
- /wandb/{sklearn → integration/sklearn}/calculate/__init__.py +0 -0
- /wandb/{sklearn → integration/sklearn}/calculate/decision_boundaries.py +0 -0
- /wandb/{sklearn → integration/sklearn}/calculate/feature_importances.py +0 -0
- /wandb/{sklearn → integration/sklearn}/plot/__init__.py +0 -0
- {wandb-0.18.0.dist-info → wandb-0.18.1.dist-info}/WHEEL +0 -0
- {wandb-0.18.0.dist-info → wandb-0.18.1.dist-info}/entry_points.txt +0 -0
- {wandb-0.18.0.dist-info → wandb-0.18.1.dist-info}/licenses/LICENSE +0 -0
@@ -14,9 +14,9 @@ from enum import Enum
|
|
14
14
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
|
15
15
|
|
16
16
|
import wandb
|
17
|
-
import wandb.data_types
|
18
17
|
from wandb.sdk.data_types import _dtypes
|
19
18
|
from wandb.sdk.data_types.base_types.media import Media
|
19
|
+
from wandb.sdk.data_types.utils import _json_helper
|
20
20
|
|
21
21
|
if TYPE_CHECKING: # pragma: no cover
|
22
22
|
from wandb.sdk.artifacts.artifact import Artifact
|
@@ -142,7 +142,7 @@ def _fallback_serialize(obj: Any) -> str:
|
|
142
142
|
def _safe_serialize(obj: dict) -> str:
|
143
143
|
try:
|
144
144
|
return json.dumps(
|
145
|
-
|
145
|
+
_json_helper(obj, None),
|
146
146
|
skipkeys=True,
|
147
147
|
default=_fallback_serialize,
|
148
148
|
)
|
wandb/sdk/data_types/utils.py
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
import datetime
|
1
2
|
import logging
|
2
3
|
import os
|
3
4
|
import re
|
5
|
+
from decimal import Decimal
|
4
6
|
from typing import TYPE_CHECKING, Optional, Sequence, Union, cast
|
5
7
|
|
6
8
|
import wandb
|
@@ -178,3 +180,50 @@ def _prune_max_seq(seq: Sequence["BatchableMedia"]) -> Sequence["BatchableMedia"
|
|
178
180
|
)
|
179
181
|
items = seq[: seq[0].MAX_ITEMS]
|
180
182
|
return items
|
183
|
+
|
184
|
+
|
185
|
+
def _json_helper(val, artifact):
|
186
|
+
if isinstance(val, WBValue):
|
187
|
+
return val.to_json(artifact)
|
188
|
+
elif val.__class__ is dict:
|
189
|
+
res = {}
|
190
|
+
for key in val:
|
191
|
+
res[key] = _json_helper(val[key], artifact)
|
192
|
+
return res
|
193
|
+
|
194
|
+
if hasattr(val, "tolist"):
|
195
|
+
py_val = val.tolist()
|
196
|
+
if val.__class__.__name__ == "datetime64" and isinstance(py_val, int):
|
197
|
+
# when numpy datetime64 .tolist() returns an int, it is nanoseconds.
|
198
|
+
# need to convert to milliseconds
|
199
|
+
return _json_helper(py_val / int(1e6), artifact)
|
200
|
+
return _json_helper(py_val, artifact)
|
201
|
+
elif hasattr(val, "item"):
|
202
|
+
return _json_helper(val.item(), artifact)
|
203
|
+
|
204
|
+
if isinstance(val, datetime.datetime):
|
205
|
+
if val.tzinfo is None:
|
206
|
+
val = datetime.datetime(
|
207
|
+
val.year,
|
208
|
+
val.month,
|
209
|
+
val.day,
|
210
|
+
val.hour,
|
211
|
+
val.minute,
|
212
|
+
val.second,
|
213
|
+
val.microsecond,
|
214
|
+
tzinfo=datetime.timezone.utc,
|
215
|
+
)
|
216
|
+
return int(val.timestamp() * 1000)
|
217
|
+
elif isinstance(val, datetime.date):
|
218
|
+
return int(
|
219
|
+
datetime.datetime(
|
220
|
+
val.year, val.month, val.day, tzinfo=datetime.timezone.utc
|
221
|
+
).timestamp()
|
222
|
+
* 1000
|
223
|
+
)
|
224
|
+
elif isinstance(val, (list, tuple)):
|
225
|
+
return [_json_helper(i, artifact) for i in val]
|
226
|
+
elif isinstance(val, Decimal):
|
227
|
+
return float(val)
|
228
|
+
else:
|
229
|
+
return util.json_friendly(val)[0]
|
wandb/sdk/service/service.py
CHANGED
@@ -15,11 +15,7 @@ import time
|
|
15
15
|
from typing import TYPE_CHECKING, Any, Dict, Optional
|
16
16
|
|
17
17
|
from wandb import _sentry, termlog
|
18
|
-
from wandb.env import
|
19
|
-
core_debug,
|
20
|
-
core_error_reporting_enabled,
|
21
|
-
is_require_legacy_service,
|
22
|
-
)
|
18
|
+
from wandb.env import core_debug, error_reporting_enabled, is_require_legacy_service
|
23
19
|
from wandb.errors import Error, WandbCoreNotAvailableError
|
24
20
|
from wandb.sdk.lib.wburls import wburls
|
25
21
|
from wandb.util import get_core_path, get_module
|
@@ -162,9 +158,6 @@ class _Service:
|
|
162
158
|
|
163
159
|
executable = self._settings._executable
|
164
160
|
exec_cmd_list = [executable, "-m"]
|
165
|
-
# Add coverage collection if needed
|
166
|
-
if os.environ.get("YEA_RUN_COVERAGE") and os.environ.get("COVERAGE_RCFILE"):
|
167
|
-
exec_cmd_list += ["coverage", "run", "-m"]
|
168
161
|
|
169
162
|
service_args = []
|
170
163
|
|
@@ -176,7 +169,7 @@ class _Service:
|
|
176
169
|
|
177
170
|
service_args.extend([core_path])
|
178
171
|
|
179
|
-
if not
|
172
|
+
if not error_reporting_enabled():
|
180
173
|
service_args.append("--no-observability")
|
181
174
|
|
182
175
|
if core_debug(default="False"):
|
wandb/sdk/service/streams.py
CHANGED
@@ -317,7 +317,6 @@ class StreamMux:
|
|
317
317
|
# These could be done in parallel in the future
|
318
318
|
for _sid, stream in started_streams.items():
|
319
319
|
# dispatch all our final requests
|
320
|
-
server_info_handle = stream.interface.deliver_request_server_info()
|
321
320
|
poll_exit_handle = stream.interface.deliver_poll_exit()
|
322
321
|
final_summary_handle = stream.interface.deliver_get_summary()
|
323
322
|
sampled_history_handle = stream.interface.deliver_request_sampled_history()
|
@@ -327,11 +326,6 @@ class StreamMux:
|
|
327
326
|
assert result
|
328
327
|
internal_messages_response = result.response.internal_messages_response
|
329
328
|
|
330
|
-
# wait for them, it's ok to do this serially but this can be improved
|
331
|
-
result = server_info_handle.wait(timeout=-1)
|
332
|
-
assert result
|
333
|
-
server_info_response = result.response.server_info_response
|
334
|
-
|
335
329
|
result = poll_exit_handle.wait(timeout=-1)
|
336
330
|
assert result
|
337
331
|
poll_exit_response = result.response.poll_exit_response
|
@@ -348,7 +342,6 @@ class StreamMux:
|
|
348
342
|
sampled_history=sampled_history,
|
349
343
|
final_summary=final_summary,
|
350
344
|
poll_exit_response=poll_exit_response,
|
351
|
-
server_info_response=server_info_response,
|
352
345
|
internal_messages_response=internal_messages_response,
|
353
346
|
settings=stream._settings, # type: ignore
|
354
347
|
printer=printer,
|
wandb/sdk/wandb_init.py
CHANGED
@@ -174,12 +174,19 @@ class _WandbInit:
|
|
174
174
|
|
175
175
|
# we add this logic to be backward compatible with the old behavior of disable
|
176
176
|
# where it would disable the service if the mode was set to disabled
|
177
|
+
# TODO: use the regular settins object to handle this
|
177
178
|
mode = kwargs.get("mode")
|
178
179
|
settings_mode = (kwargs.get("settings") or {}).get("mode") or os.environ.get(
|
179
|
-
|
180
|
+
wandb.env.MODE
|
180
181
|
)
|
181
|
-
|
182
|
-
|
182
|
+
settings__disable_service = (kwargs.get("settings") or {}).get(
|
183
|
+
"_disable_service"
|
184
|
+
) or os.environ.get(wandb.env._DISABLE_SERVICE)
|
185
|
+
|
186
|
+
setup_settings = {
|
187
|
+
"mode": mode or settings_mode,
|
188
|
+
"_disable_service": settings__disable_service,
|
189
|
+
}
|
183
190
|
|
184
191
|
self._wl = wandb_setup.setup(settings=setup_settings)
|
185
192
|
# Make sure we have a logger setup (might be an early logger)
|
wandb/sdk/wandb_run.py
CHANGED
@@ -43,12 +43,12 @@ from wandb.apis import internal, public
|
|
43
43
|
from wandb.apis.internal import Api
|
44
44
|
from wandb.apis.public import Api as PublicApi
|
45
45
|
from wandb.errors import CommError
|
46
|
+
from wandb.integration.torch import wandb_torch
|
46
47
|
from wandb.proto.wandb_internal_pb2 import (
|
47
48
|
MetricRecord,
|
48
49
|
PollExitResponse,
|
49
50
|
Result,
|
50
51
|
RunRecord,
|
51
|
-
ServerInfoResponse,
|
52
52
|
)
|
53
53
|
from wandb.sdk.artifacts.artifact import Artifact
|
54
54
|
from wandb.sdk.internal import job_builder
|
@@ -62,7 +62,7 @@ from wandb.util import (
|
|
62
62
|
_is_artifact_object,
|
63
63
|
_is_artifact_string,
|
64
64
|
_is_artifact_version_weave_dict,
|
65
|
-
|
65
|
+
_is_py_requirements_or_dockerfile,
|
66
66
|
_resolve_aliases,
|
67
67
|
add_import_hook,
|
68
68
|
parse_artifact_string,
|
@@ -105,7 +105,6 @@ if TYPE_CHECKING:
|
|
105
105
|
import wandb.sdk.backend.backend
|
106
106
|
import wandb.sdk.interface.interface_queue
|
107
107
|
from wandb.proto.wandb_internal_pb2 import (
|
108
|
-
CheckVersionResponse,
|
109
108
|
GetSummaryResponse,
|
110
109
|
InternalMessagesResponse,
|
111
110
|
SampledHistoryResponse,
|
@@ -561,12 +560,10 @@ class Run:
|
|
561
560
|
|
562
561
|
_run_status_checker: Optional[RunStatusChecker]
|
563
562
|
|
564
|
-
_check_version: Optional["CheckVersionResponse"]
|
565
563
|
_sampled_history: Optional["SampledHistoryResponse"]
|
566
564
|
_final_summary: Optional["GetSummaryResponse"]
|
567
565
|
_poll_exit_handle: Optional[MailboxHandle]
|
568
566
|
_poll_exit_response: Optional[PollExitResponse]
|
569
|
-
_server_info_response: Optional[ServerInfoResponse]
|
570
567
|
_internal_messages_response: Optional["InternalMessagesResponse"]
|
571
568
|
|
572
569
|
_stdout_slave_fd: Optional[int]
|
@@ -624,7 +621,7 @@ class Run:
|
|
624
621
|
)
|
625
622
|
self.summary._set_update_callback(self._summary_update_callback)
|
626
623
|
self._step = 0
|
627
|
-
self._torch_history: Optional[
|
624
|
+
self._torch_history: Optional[wandb_torch.TorchHistory] = None # type: ignore
|
628
625
|
|
629
626
|
# todo: eventually would be nice to make this configurable using self._settings._start_time
|
630
627
|
# need to test (jhr): if you set start time to 2 days ago and run a test for 15 minutes,
|
@@ -669,11 +666,9 @@ class Run:
|
|
669
666
|
# Created when the run "starts".
|
670
667
|
self._run_status_checker = None
|
671
668
|
|
672
|
-
self._check_version = None
|
673
669
|
self._sampled_history = None
|
674
670
|
self._final_summary = None
|
675
671
|
self._poll_exit_response = None
|
676
|
-
self._server_info_response = None
|
677
672
|
self._internal_messages_response = None
|
678
673
|
self._poll_exit_handle = None
|
679
674
|
|
@@ -927,9 +922,9 @@ class Run:
|
|
927
922
|
self.__dict__.update(state)
|
928
923
|
|
929
924
|
@property
|
930
|
-
def _torch(self) -> "
|
925
|
+
def _torch(self) -> "wandb_torch.TorchHistory": # type: ignore
|
931
926
|
if self._torch_history is None:
|
932
|
-
self._torch_history =
|
927
|
+
self._torch_history = wandb_torch.TorchHistory() # type: ignore
|
933
928
|
return self._torch_history
|
934
929
|
|
935
930
|
@property
|
@@ -1152,7 +1147,7 @@ class Run:
|
|
1152
1147
|
name: Optional[str] = None,
|
1153
1148
|
include_fn: Union[
|
1154
1149
|
Callable[[str, str], bool], Callable[[str], bool]
|
1155
|
-
] =
|
1150
|
+
] = _is_py_requirements_or_dockerfile,
|
1156
1151
|
exclude_fn: Union[
|
1157
1152
|
Callable[[str, str], bool], Callable[[str], bool]
|
1158
1153
|
] = filenames.exclude_wandb_fn,
|
@@ -2453,8 +2448,6 @@ class Run:
|
|
2453
2448
|
sampled_history=self._sampled_history,
|
2454
2449
|
final_summary=self._final_summary,
|
2455
2450
|
poll_exit_response=self._poll_exit_response,
|
2456
|
-
server_info_response=self._server_info_response,
|
2457
|
-
check_version_response=self._check_version,
|
2458
2451
|
internal_messages_response=self._internal_messages_response,
|
2459
2452
|
reporter=self._reporter,
|
2460
2453
|
quiet=self._quiet,
|
@@ -2676,25 +2669,6 @@ class Run:
|
|
2676
2669
|
|
2677
2670
|
assert self._backend and self._backend.interface
|
2678
2671
|
|
2679
|
-
if not self._settings._disable_update_check:
|
2680
|
-
logger.info("communicating current version")
|
2681
|
-
version_handle = self._backend.interface.deliver_check_version(
|
2682
|
-
current_version=wandb.__version__
|
2683
|
-
)
|
2684
|
-
version_result = version_handle.wait(timeout=10)
|
2685
|
-
if not version_result:
|
2686
|
-
version_handle.abandon()
|
2687
|
-
else:
|
2688
|
-
self._check_version = version_result.response.check_version_response
|
2689
|
-
logger.info("got version response %s", self._check_version)
|
2690
|
-
|
2691
|
-
# get the server info before starting the defer state machine as
|
2692
|
-
# it will stop communication with the server
|
2693
|
-
server_info_handle = self._backend.interface.deliver_request_server_info()
|
2694
|
-
result = server_info_handle.wait(timeout=-1)
|
2695
|
-
assert result
|
2696
|
-
self._server_info_response = result.response.server_info_response
|
2697
|
-
|
2698
2672
|
exit_handle = self._backend.interface.deliver_exit(self._exit_code)
|
2699
2673
|
exit_handle.add_probe(on_probe=self._on_probe_exit)
|
2700
2674
|
|
@@ -3712,27 +3686,6 @@ class Run:
|
|
3712
3686
|
Run._header_sync_info(settings=settings, printer=printer)
|
3713
3687
|
Run._header_run_info(settings=settings, printer=printer)
|
3714
3688
|
|
3715
|
-
@staticmethod
|
3716
|
-
def _header_version_check_info(
|
3717
|
-
check_version: Optional["CheckVersionResponse"] = None,
|
3718
|
-
*,
|
3719
|
-
settings: "Settings",
|
3720
|
-
printer: Union["PrinterTerm", "PrinterJupyter"],
|
3721
|
-
) -> None:
|
3722
|
-
if not check_version or settings._offline:
|
3723
|
-
return
|
3724
|
-
|
3725
|
-
if check_version.delete_message:
|
3726
|
-
printer.display(check_version.delete_message, level="error")
|
3727
|
-
elif check_version.yank_message:
|
3728
|
-
printer.display(check_version.yank_message, level="warn")
|
3729
|
-
|
3730
|
-
printer.display(
|
3731
|
-
check_version.upgrade_message,
|
3732
|
-
off=not check_version.upgrade_message,
|
3733
|
-
level="warn",
|
3734
|
-
)
|
3735
|
-
|
3736
3689
|
@staticmethod
|
3737
3690
|
def _header_wandb_version_info(
|
3738
3691
|
*,
|
@@ -3846,8 +3799,6 @@ class Run:
|
|
3846
3799
|
sampled_history: Optional["SampledHistoryResponse"] = None,
|
3847
3800
|
final_summary: Optional["GetSummaryResponse"] = None,
|
3848
3801
|
poll_exit_response: Optional[PollExitResponse] = None,
|
3849
|
-
server_info_response: Optional[ServerInfoResponse] = None,
|
3850
|
-
check_version_response: Optional["CheckVersionResponse"] = None,
|
3851
3802
|
internal_messages_response: Optional["InternalMessagesResponse"] = None,
|
3852
3803
|
reporter: Optional[Reporter] = None,
|
3853
3804
|
quiet: Optional[bool] = None,
|
@@ -3870,23 +3821,11 @@ class Run:
|
|
3870
3821
|
printer=printer,
|
3871
3822
|
)
|
3872
3823
|
Run._footer_log_dir_info(quiet=quiet, settings=settings, printer=printer)
|
3873
|
-
Run._footer_version_check_info(
|
3874
|
-
check_version=check_version_response,
|
3875
|
-
quiet=quiet,
|
3876
|
-
settings=settings,
|
3877
|
-
printer=printer,
|
3878
|
-
)
|
3879
3824
|
Run._footer_notify_wandb_core(
|
3880
3825
|
quiet=quiet,
|
3881
3826
|
settings=settings,
|
3882
3827
|
printer=printer,
|
3883
3828
|
)
|
3884
|
-
Run._footer_local_warn(
|
3885
|
-
server_info_response=server_info_response,
|
3886
|
-
quiet=quiet,
|
3887
|
-
settings=settings,
|
3888
|
-
printer=printer,
|
3889
|
-
)
|
3890
3829
|
Run._footer_internal_messages(
|
3891
3830
|
internal_messages_response=internal_messages_response,
|
3892
3831
|
quiet=quiet,
|
@@ -3896,12 +3835,6 @@ class Run:
|
|
3896
3835
|
Run._footer_reporter_warn_err(
|
3897
3836
|
reporter=reporter, quiet=quiet, settings=settings, printer=printer
|
3898
3837
|
)
|
3899
|
-
Run._footer_server_messages(
|
3900
|
-
server_info_response=server_info_response,
|
3901
|
-
quiet=quiet,
|
3902
|
-
settings=settings,
|
3903
|
-
printer=printer,
|
3904
|
-
)
|
3905
3838
|
|
3906
3839
|
# fixme: Temporary hack until we move to rich which allows multiple spinners
|
3907
3840
|
@staticmethod
|
@@ -4156,33 +4089,6 @@ class Run:
|
|
4156
4089
|
if panel:
|
4157
4090
|
printer.display(printer.panel(panel))
|
4158
4091
|
|
4159
|
-
@staticmethod
|
4160
|
-
def _footer_local_warn(
|
4161
|
-
server_info_response: Optional[ServerInfoResponse] = None,
|
4162
|
-
quiet: Optional[bool] = None,
|
4163
|
-
*,
|
4164
|
-
settings: "Settings",
|
4165
|
-
printer: Union["PrinterTerm", "PrinterJupyter"],
|
4166
|
-
) -> None:
|
4167
|
-
if (quiet or settings.quiet) or settings.silent:
|
4168
|
-
return
|
4169
|
-
|
4170
|
-
if settings._offline:
|
4171
|
-
return
|
4172
|
-
|
4173
|
-
if not server_info_response or not server_info_response.local_info:
|
4174
|
-
return
|
4175
|
-
|
4176
|
-
if settings.is_local:
|
4177
|
-
local_info = server_info_response.local_info
|
4178
|
-
latest_version, out_of_date = local_info.version, local_info.out_of_date
|
4179
|
-
if out_of_date:
|
4180
|
-
printer.display(
|
4181
|
-
f"Upgrade to the {latest_version} version of W&B Server to get the latest features. "
|
4182
|
-
f"Learn more: {printer.link(wburls.get('upgrade_server'))}",
|
4183
|
-
level="warn",
|
4184
|
-
)
|
4185
|
-
|
4186
4092
|
@staticmethod
|
4187
4093
|
def _footer_internal_messages(
|
4188
4094
|
internal_messages_response: Optional["InternalMessagesResponse"] = None,
|
@@ -4200,58 +4106,6 @@ class Run:
|
|
4200
4106
|
for message in internal_messages_response.messages.warning:
|
4201
4107
|
printer.display(message, level="warn")
|
4202
4108
|
|
4203
|
-
@staticmethod
|
4204
|
-
def _footer_server_messages(
|
4205
|
-
server_info_response: Optional[ServerInfoResponse] = None,
|
4206
|
-
quiet: Optional[bool] = None,
|
4207
|
-
*,
|
4208
|
-
settings: "Settings",
|
4209
|
-
printer: Union["PrinterTerm", "PrinterJupyter"],
|
4210
|
-
) -> None:
|
4211
|
-
if (quiet or settings.quiet) or settings.silent:
|
4212
|
-
return
|
4213
|
-
|
4214
|
-
if settings.disable_hints:
|
4215
|
-
return
|
4216
|
-
|
4217
|
-
if server_info_response and server_info_response.server_messages:
|
4218
|
-
for message in server_info_response.server_messages.item:
|
4219
|
-
printer.display(
|
4220
|
-
message.html_text if printer._html else message.utf_text,
|
4221
|
-
default_text=message.plain_text,
|
4222
|
-
level=message.level,
|
4223
|
-
off=message.type.lower() != "footer",
|
4224
|
-
)
|
4225
|
-
|
4226
|
-
@staticmethod
|
4227
|
-
def _footer_version_check_info(
|
4228
|
-
check_version: Optional["CheckVersionResponse"] = None,
|
4229
|
-
quiet: Optional[bool] = None,
|
4230
|
-
*,
|
4231
|
-
settings: "Settings",
|
4232
|
-
printer: Union["PrinterTerm", "PrinterJupyter"],
|
4233
|
-
) -> None:
|
4234
|
-
if not check_version:
|
4235
|
-
return
|
4236
|
-
|
4237
|
-
if settings._offline:
|
4238
|
-
return
|
4239
|
-
|
4240
|
-
if (quiet or settings.quiet) or settings.silent:
|
4241
|
-
return
|
4242
|
-
|
4243
|
-
if check_version.delete_message:
|
4244
|
-
printer.display(check_version.delete_message, level="error")
|
4245
|
-
elif check_version.yank_message:
|
4246
|
-
printer.display(check_version.yank_message, level="warn")
|
4247
|
-
|
4248
|
-
# only display upgrade message if packages are bad
|
4249
|
-
if check_version.upgrade_message:
|
4250
|
-
printer.display(
|
4251
|
-
check_version.upgrade_message,
|
4252
|
-
level="warn",
|
4253
|
-
)
|
4254
|
-
|
4255
4109
|
@staticmethod
|
4256
4110
|
def _footer_notify_wandb_core(
|
4257
4111
|
*,
|
wandb/sdk/wandb_setup.py
CHANGED
@@ -281,7 +281,7 @@ class _WandbSetup__WandbSetup: # noqa: N801
|
|
281
281
|
sys.exit(internal_exit_code)
|
282
282
|
|
283
283
|
def _setup_manager(self) -> None:
|
284
|
-
if self._settings._disable_service:
|
284
|
+
if self._settings._noop or self._settings._disable_service:
|
285
285
|
return
|
286
286
|
self._manager = wandb_manager._Manager(settings=self._settings)
|
287
287
|
|
wandb/sklearn.py
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
from wandb.integration.sklearn import (
|
2
|
+
plot_calibration_curve,
|
3
|
+
plot_class_proportions,
|
4
|
+
plot_classifier,
|
5
|
+
plot_clusterer,
|
6
|
+
plot_confusion_matrix,
|
7
|
+
plot_elbow_curve,
|
8
|
+
plot_feature_importances,
|
9
|
+
plot_learning_curve,
|
10
|
+
plot_outlier_candidates,
|
11
|
+
plot_precision_recall,
|
12
|
+
plot_regressor,
|
13
|
+
plot_residuals,
|
14
|
+
plot_roc,
|
15
|
+
plot_silhouette,
|
16
|
+
plot_summary_metrics,
|
17
|
+
)
|
18
|
+
|
19
|
+
__all__ = (
|
20
|
+
"plot_classifier",
|
21
|
+
"plot_clusterer",
|
22
|
+
"plot_regressor",
|
23
|
+
"plot_summary_metrics",
|
24
|
+
"plot_learning_curve",
|
25
|
+
"plot_feature_importances",
|
26
|
+
"plot_class_proportions",
|
27
|
+
"plot_calibration_curve",
|
28
|
+
"plot_roc",
|
29
|
+
"plot_precision_recall",
|
30
|
+
"plot_confusion_matrix",
|
31
|
+
"plot_elbow_curve",
|
32
|
+
"plot_silhouette",
|
33
|
+
"plot_residuals",
|
34
|
+
"plot_outlier_candidates",
|
35
|
+
)
|
wandb/util.py
CHANGED
@@ -1554,9 +1554,13 @@ def _is_databricks() -> bool:
|
|
1554
1554
|
return False
|
1555
1555
|
|
1556
1556
|
|
1557
|
-
def
|
1557
|
+
def _is_py_requirements_or_dockerfile(path: str) -> bool:
|
1558
1558
|
file = os.path.basename(path)
|
1559
|
-
return
|
1559
|
+
return (
|
1560
|
+
file.endswith(".py")
|
1561
|
+
or file.startswith("Dockerfile")
|
1562
|
+
or file == "requirements.txt"
|
1563
|
+
)
|
1560
1564
|
|
1561
1565
|
|
1562
1566
|
def check_windows_valid_filename(path: Union[int, str]) -> bool:
|