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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
# Even if empty this file is useful so that when running from the root folder
# ./sklearn is added to sys.path by pytest. See
# https://docs.pytest.org/en/latest/pythonpath.html for more details. For
# example, this allows to build extensions in place and run pytest
# doc/modules/clustering.rst and use sklearn from the local folder rather than
# the one from site-packages.
import platform
import sys
import pytest
from _pytest.doctest import DoctestItem
from packaging.version import Version, parse
from skopt import _IS_32BIT
PYTEST_MIN_VERSION = '3.6.0'
if parse(pytest.__version__) < Version(PYTEST_MIN_VERSION):
raise ImportError(
'Your version of pytest is too old, you should have '
'at least pytest >= {} installed.'.format(PYTEST_MIN_VERSION)
)
def pytest_addoption(parser):
parser.addoption(
"--skip-network", action="store_true", default=False, help="skip network tests"
)
def pytest_collection_modifyitems(config, items):
# FeatureHasher is not compatible with PyPy
if platform.python_implementation() == 'PyPy':
skip_marker = pytest.mark.skip(
reason='FeatureHasher is not compatible with PyPy'
)
for item in items:
if item.name.endswith(('_hash.FeatureHasher', 'text.HashingVectorizer')):
item.add_marker(skip_marker)
# Skip tests which require internet if the flag is provided
if config.getoption("--skip-network"):
skip_network = pytest.mark.skip(reason="test requires internet connectivity")
for item in items:
if "network" in item.keywords:
item.add_marker(skip_network)
# numpy changed the str/repr formatting of numpy arrays in 1.14. We want to
# run doctests only for numpy >= 1.14.
skip_doctests = False
try:
import numpy as np
if parse(np.__version__) < Version('1.14'):
reason = 'doctests are only run for numpy >= 1.14'
skip_doctests = True
elif _IS_32BIT:
reason = 'doctest are only run when the default numpy int is ' '64 bits.'
skip_doctests = True
elif sys.platform.startswith("win32"):
reason = (
"doctests are not run for Windows because numpy arrays "
"repr is inconsistent across platforms."
)
skip_doctests = True
except ImportError:
pass
if skip_doctests:
skip_marker = pytest.mark.skip(reason=reason)
for item in items:
if isinstance(item, DoctestItem):
item.add_marker(skip_marker)
def pytest_configure(config):
import sys
sys._is_pytest_session = True
def pytest_unconfigure(config):
import sys
del sys._is_pytest_session
|