wandb 0.18.0__py3-none-win32.whl → 0.18.1__py3-none-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wandb/__init__.py +2 -2
- wandb/__init__.pyi +1 -1
- wandb/apis/public/runs.py +2 -0
- wandb/bin/wandb-core +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:
|