Spaces:
Sleeping
Sleeping
| import sys | |
| sys._running_pytest = True # type: ignore | |
| from sympy.external.importtools import version_tuple | |
| import pytest | |
| from sympy.core.cache import clear_cache, USE_CACHE | |
| from sympy.external.gmpy import GROUND_TYPES | |
| from sympy.utilities.misc import ARCH | |
| import re | |
| try: | |
| import hypothesis | |
| hypothesis.settings.register_profile("sympy_hypothesis_profile", deadline=None) | |
| hypothesis.settings.load_profile("sympy_hypothesis_profile") | |
| except ImportError: | |
| raise ImportError( | |
| "hypothesis is a required dependency to run the SymPy test suite. " | |
| "Install it with 'pip install hypothesis' or 'conda install -c conda-forge hypothesis'" | |
| ) | |
| sp = re.compile(r"([0-9]+)/([1-9][0-9]*)") | |
| def process_split(config, items): | |
| split = config.getoption("--split") | |
| if not split: | |
| return | |
| m = sp.match(split) | |
| if not m: | |
| raise ValueError( | |
| "split must be a string of the form a/b " "where a and b are ints." | |
| ) | |
| i, t = map(int, m.groups()) | |
| start, end = (i - 1) * len(items) // t, i * len(items) // t | |
| if i < t: | |
| # remove elements from end of list first | |
| del items[end:] | |
| del items[:start] | |
| def pytest_report_header(config): | |
| s = "architecture: %s\n" % ARCH | |
| s += "cache: %s\n" % USE_CACHE | |
| version = "" | |
| if GROUND_TYPES == "gmpy": | |
| import gmpy2 | |
| version = gmpy2.version() | |
| elif GROUND_TYPES == "flint": | |
| try: | |
| from flint import __version__ | |
| except ImportError: | |
| version = "unknown" | |
| else: | |
| version = f'(python-flint=={__version__})' | |
| s += "ground types: %s %s\n" % (GROUND_TYPES, version) | |
| return s | |
| def pytest_terminal_summary(terminalreporter): | |
| if terminalreporter.stats.get("error", None) or terminalreporter.stats.get( | |
| "failed", None | |
| ): | |
| terminalreporter.write_sep(" ", "DO *NOT* COMMIT!", red=True, bold=True) | |
| def pytest_addoption(parser): | |
| parser.addoption("--split", action="store", default="", help="split tests") | |
| def pytest_collection_modifyitems(config, items): | |
| """pytest hook.""" | |
| # handle splits | |
| process_split(config, items) | |
| def file_clear_cache(): | |
| clear_cache() | |
| def check_disabled(request): | |
| if getattr(request.module, "disabled", False): | |
| pytest.skip("test requirements not met.") | |
| elif getattr(request.module, "ipython", False): | |
| # need to check version and options for ipython tests | |
| if ( | |
| version_tuple(pytest.__version__) < version_tuple("2.6.3") | |
| and pytest.config.getvalue("-s") != "no" | |
| ): | |
| pytest.skip("run py.test with -s or upgrade to newer version.") | |