Software dependencies

PyCurious keeps a deliberately small import-time footprint: only numpy and scipy are imported when you import pycurious. Everything else is imported lazily inside the function that needs it, so it lives in an optional extra and is pulled in only when you ask for it.

Core dependencies

Package

Purpose

numpy (≥ 1.20)

arrays, FFTs, the grid and spectrum layer

scipy (≥ 1.5)

optimisation, special functions, banded linear algebra

Requires Python 3.9 or newer.

Optional extras

Install an extra with pip install "pycurious[<name>]". They compose, e.g. pip install "pycurious[mapping,download]".

download

Backs pycurious.download — cached downloads with md5 checks, used by the mapping tutorials to fetch the EMAG2 and reference datasets.

mapping

  • pyproj — coordinate reference system transforms

  • netCDF4 — reading and writing gridded data

Backs the projection and netCDF parts of pycurious.mapping.

geotiff

Backs the GeoTIFF import/export in pycurious.mapping. It is kept out of mapping on purpose: the GDAL Python bindings need a matching system libgdal already installed, so folding it into mapping would make pip install "pycurious[mapping]" fail for most users. conda install gdal is usually easier than installing it from pip.

examples

Everything needed to run the bundled Tutorials.

test

The test suite imports only pytest, numpy, scipy, and pycurious, so pip install -e ".[test]" && pytest runs the whole suite.

docs

Builds this documentation. Building the tutorials additionally needs the examples and mapping extras so the notebooks execute.