71 lines
1.9 KiB
Python
71 lines
1.9 KiB
Python
"""Pytest and scipy-doctest configuration for Shapely."""
|
|
|
|
import numpy
|
|
import pytest
|
|
|
|
from shapely import geos_version_string
|
|
|
|
try:
|
|
from scipy_doctest.conftest import dt_config
|
|
|
|
HAVE_SCPDT = True
|
|
except ModuleNotFoundError:
|
|
HAVE_SCPDT = False
|
|
|
|
shapely20_todo = pytest.mark.xfail(
|
|
strict=True, reason="Not yet implemented for Shapely 2.0"
|
|
)
|
|
shapely20_wontfix = pytest.mark.xfail(strict=True, reason="Will fail for Shapely 2.0")
|
|
|
|
|
|
def pytest_report_header(config):
|
|
"""Header for pytest."""
|
|
vers = [
|
|
f"GEOS version: {geos_version_string}",
|
|
f"NumPy version: {numpy.__version__}",
|
|
]
|
|
return "\n".join(vers)
|
|
|
|
|
|
if HAVE_SCPDT:
|
|
import doctest
|
|
import warnings
|
|
from contextlib import contextmanager
|
|
|
|
@contextmanager
|
|
def warnings_errors_and_rng(test=None):
|
|
"""Filter out some warnings."""
|
|
depr_msgs = "|".join(
|
|
[
|
|
# https://github.com/pyproj4/pyproj/issues/1468
|
|
"Conversion of an array with ndim",
|
|
]
|
|
)
|
|
|
|
runtime_msgs = "|".join(
|
|
[
|
|
# https://github.com/libgeos/geos/pull/1226
|
|
"invalid value encountered in coverage_union",
|
|
]
|
|
)
|
|
|
|
with warnings.catch_warnings():
|
|
if depr_msgs:
|
|
warnings.filterwarnings("ignore", depr_msgs, DeprecationWarning)
|
|
if runtime_msgs:
|
|
warnings.filterwarnings("ignore", runtime_msgs, RuntimeWarning)
|
|
yield
|
|
|
|
# find and check doctests under this context manager
|
|
dt_config.user_context_mgr = warnings_errors_and_rng
|
|
|
|
# relax all NumPy scalar type repr, e.g. `np.int32(0)` matches `0`
|
|
dt_config.strict_check = False
|
|
|
|
dt_config.optionflags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
|
|
|
|
# ignores are for things fail doctest collection (optionals etc)
|
|
dt_config.pytest_extra_ignore = [
|
|
"shapely/geos.py",
|
|
]
|