@@ -125,8 +125,8 @@ graph without computing.
125125``` bash
126126pip install -e .
127127python setup.py build_ext --inplace --cython-coverage --force # required before running tests
128- pytest geotiepoints/tests
129- pytest --cov=geotiepoints geotiepoints/tests --cov-report=xml # what CI runs
128+ pytest # whole package, doctests included
129+ pytest --cov=geotiepoints geotiepoints --cov-report=xml # what CI runs
130130make -C doc doctest
131131```
132132
@@ -135,7 +135,21 @@ make -C doc doctest
135135
136136- Tests load HDF5 fixtures by path relative to the test file (` ../../testdata/ ` ), so they only work
137137 from a source checkout, never from an installed wheel.
138- - There is ** no ` conftest.py ` and no pytest configuration at all** — no markers, no ini options.
138+ - There is ** no ` conftest.py ` ** . All pytest configuration lives in ` [tool.pytest.ini_options] ` in
139+ ` pyproject.toml ` (mirroring trollimage): ` --doctest-modules ` plus `-ra --showlocals
140+ --strict-markers --strict-config` , ` xfail_strict` , ` filterwarnings = [ "error"] `, and
141+ ` testpaths = ["geotiepoints"] ` . So a bare ` pytest ` runs the unit tests * and* every module
142+ docstring. No markers. Two consequences worth knowing:
143+ - Passing an explicit path (e.g. ` pytest geotiepoints/tests ` ) overrides ` testpaths ` and skips the
144+ package doctests.
145+ - ** Warnings are errors** , with one scoped exception: the `invalid value encountered in
146+ arcsin/arccos` ` RuntimeWarning` from ` geotiepoints.geointerpolator` . ` xyz2lonlat` is * meant* to
147+ return NaN for coordinates that interpolation or extrapolation puts off the sphere -- an invalid
148+ pixel should stay visibly invalid rather than be clipped to a plausible-looking lat/lon -- while
149+ callers (Satpy readers) keep processing the rest of the swath. Do not "fix" that NaN.
150+ - ` warnings.catch_warnings(record=True) ` inherits the error filter and will raise instead of
151+ recording, so it needs an explicit ` warnings.simplefilter("always") ` inside the context (see
152+ ` test_modisinterpolator.test_sat_angle_based_interp ` ).
139153- ` test_simple_modis_interpolator.py ` imports its loaders and ` assert_geodetic_distance ` from
140154 ` test_modisinterpolator.py ` . Preserve that cross-module dependency.
141155- ` testdata/create_modis_test_data.py ` regenerates fixtures but needs ` pyhdf ` plus a real MOD03 file;
@@ -145,6 +159,8 @@ make -C doc doctest
145159- CI: ubuntu/macos/windows × Python 3.11/3.12/3.13, plus an experimental nightly-dependency job.
146160 ` python_requires >= 3.11 ` .
147161- There is no ` [project] ` table — package metadata still lives in ` setup.py ` .
162+ - ` doc/source/conf.py ` mocks nothing; the docs (and RTD, via ` pip install . ` ) need the real package
163+ and its dependencies importable, which is what makes the ` index.rst ` doctests runnable.
148164- ` geotiepoints/version.py ` is versioneer-generated; never edit it. Release steps are in ` RELEASING.md ` .
149165
150166## Known defects and traps
0 commit comments