-
-
Notifications
You must be signed in to change notification settings - Fork 260
Expand file tree
/
Copy path_compat.py
More file actions
57 lines (46 loc) · 2.15 KB
/
_compat.py
File metadata and controls
57 lines (46 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import contextlib
import os
from collections.abc import Mapping # noqa
from typing import Any
import dask
import dask.array as da
import distributed
import packaging.version
import pandas
import sklearn
import sklearn.utils.validation
SK_VERSION = packaging.version.parse(sklearn.__version__)
DASK_VERSION = packaging.version.parse(dask.__version__)
PANDAS_VERSION = packaging.version.parse(pandas.__version__)
DISTRIBUTED_VERSION = packaging.version.parse(distributed.__version__)
SK_0_23_2 = SK_VERSION >= packaging.version.parse("0.23.2")
SK_024 = SK_VERSION >= packaging.version.parse("0.24.0.dev0")
DASK_240 = DASK_VERSION >= packaging.version.parse("2.4.0")
DASK_2130 = DASK_VERSION >= packaging.version.parse("2.13.0")
DASK_2_20_0 = DASK_VERSION >= packaging.version.parse("2.20.0")
DASK_2_26_0 = DASK_VERSION >= packaging.version.parse("2.26.0")
DASK_2_28_0 = DASK_VERSION > packaging.version.parse("2.27.0")
DASK_2021_02_0 = DASK_VERSION >= packaging.version.parse("2021.02.0")
DISTRIBUTED_2_5_0 = DISTRIBUTED_VERSION > packaging.version.parse("2.5.0")
DISTRIBUTED_2_11_0 = DISTRIBUTED_VERSION > packaging.version.parse("2.10.0") # dev
DISTRIBUTED_2021_02_0 = DISTRIBUTED_VERSION >= packaging.version.parse("2021.02.0")
PANDAS_1_2_0 = PANDAS_VERSION > packaging.version.parse("1.2.0")
WINDOWS = os.name == "nt"
@contextlib.contextmanager
def dummy_context(*args: Any, **kwargs: Any):
# Not needed if Python >= 3.7 is required
# https://docs.python.org/3/library/contextlib.html#contextlib.nullcontext
yield
annotate = dask.annotate if DASK_2021_02_0 else dummy_context
blockwise = da.blockwise
def _check_multimetric_scoring(estimator, scoring=None):
# TODO: See if scikit-learn 0.24 solves the need for using
# a private method
from sklearn.metrics import check_scoring
from sklearn.metrics._scorer import _check_multimetric_scoring
if SK_024:
if callable(scoring) or isinstance(scoring, (type(None), str)):
scorers = {"score": check_scoring(estimator, scoring=scoring)}
return scorers, False
return _check_multimetric_scoring(estimator, scoring), True
return _check_multimetric_scoring(estimator, scoring)