{ lib, stdenv, buildPythonPackage, fetchFromGitHub, pytestCheckHook, pythonOlder, setuptools, packaging, pandas, pyogrio, pyproj, rtree, shapely, # optional-dependencies folium, geoalchemy2, geopy, mapclassify, matplotlib, psycopg, pyarrow, sqlalchemy, xyzservices, }: buildPythonPackage rec { pname = "geopandas"; version = "1.0.1"; pyproject = true; disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "geopandas"; repo = "geopandas"; rev = "refs/tags/v${version}"; hash = "sha256-SZizjwkx8dsnaobDYpeQm9jeXZ4PlzYyjIScnQrH63Q="; }; build-system = [ setuptools ]; propagatedBuildInputs = [ packaging pandas pyogrio pyproj shapely ]; optional-dependencies = { all = [ # prevent infinite recursion (folium.overridePythonAttrs (prevAttrs: { doCheck = false; })) geoalchemy2 geopy # prevent infinite recursion (mapclassify.overridePythonAttrs (prevAttrs: { doCheck = false; })) matplotlib psycopg pyarrow sqlalchemy xyzservices ]; }; nativeCheckInputs = [ pytestCheckHook rtree ] ++ optional-dependencies.all; doCheck = !stdenv.hostPlatform.isDarwin; preCheck = '' export HOME=$(mktemp -d); ''; disabledTests = [ # Requires network access "test_read_file_url" ]; pytestFlagsArray = [ "geopandas" ]; pythonImportsCheck = [ "geopandas" ]; meta = with lib; { description = "Python geospatial data analysis framework"; homepage = "https://geopandas.org"; changelog = "https://github.com/geopandas/geopandas/blob/v${version}/CHANGELOG.md"; license = licenses.bsd3; maintainers = teams.geospatial.members; }; }