diff --git a/pkgs/development/python-modules/geoarrow-c/default.nix b/pkgs/development/python-modules/geoarrow-c/default.nix new file mode 100644 index 0000000000000..deef6b21947ae --- /dev/null +++ b/pkgs/development/python-modules/geoarrow-c/default.nix @@ -0,0 +1,53 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pythonOlder, + pytestCheckHook, + pyarrow, + cython, + numpy, + setuptools, + setuptools-scm, +}: +buildPythonPackage rec { + pname = "geoarrow-c"; + version = "0.1.3"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + repo = "geoarrow-c"; + owner = "geoarrow"; + rev = "refs/tags/geoarrow-c-python-${version}"; + hash = "sha256-kQCD3Vptl7GtRFigr4darvdtwnaHRLZWvBBpZ0xHMgM="; + }; + + sourceRoot = "${src.name}/python/geoarrow-c"; + + build-system = [ + cython + setuptools + setuptools-scm + ]; + + env.SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeCheckInputs = [ + pytestCheckHook + pyarrow + numpy + ]; + + pythonImportsCheck = [ "geoarrow.c" ]; + + meta = with lib; { + description = "Experimental C and C++ implementation of the GeoArrow specification"; + homepage = "https://github.com/geoarrow/geoarrow-c"; + license = licenses.asl20; + maintainers = with maintainers; [ + cpcloud + ]; + }; +} diff --git a/pkgs/development/python-modules/geoarrow-pandas/default.nix b/pkgs/development/python-modules/geoarrow-pandas/default.nix new file mode 100644 index 0000000000000..cdf71922b509f --- /dev/null +++ b/pkgs/development/python-modules/geoarrow-pandas/default.nix @@ -0,0 +1,52 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pythonOlder, + pytestCheckHook, + pandas, + pyarrow, + geoarrow-pyarrow, + setuptools-scm, +}: +buildPythonPackage rec { + pname = "geoarrow-pandas"; + version = "0.1.2"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + repo = "geoarrow-python"; + owner = "geoarrow"; + rev = "refs/tags/geoarrow-pandas-${version}"; + hash = "sha256-Ni+GKTRhRDRHip1us3OZPuUhHQCNU7Nap865T/+CU8Y="; + }; + + sourceRoot = "${src.name}/geoarrow-pandas"; + + build-system = [ setuptools-scm ]; + + env.SETUPTOOLS_SCM_PRETEND_VERSION = version; + + dependencies = [ + geoarrow-pyarrow + pandas + pyarrow + ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + pythonImportsCheck = [ "geoarrow.pandas" ]; + + meta = with lib; { + description = "Python implementation of the GeoArrow specification"; + homepage = "https://github.com/geoarrow/geoarrow-python"; + license = licenses.asl20; + maintainers = with maintainers; [ + cpcloud + ]; + }; +} diff --git a/pkgs/development/python-modules/geoarrow-pyarrow/default.nix b/pkgs/development/python-modules/geoarrow-pyarrow/default.nix new file mode 100644 index 0000000000000..197962bf15b2b --- /dev/null +++ b/pkgs/development/python-modules/geoarrow-pyarrow/default.nix @@ -0,0 +1,77 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pythonOlder, + pytestCheckHook, + geoarrow-c, + pyarrow, + pyarrow-hotfix, + numpy, + pandas, + geopandas, + pyogrio, + pyproj, + setuptools-scm, +}: +buildPythonPackage rec { + pname = "geoarrow-pyarrow"; + version = "0.1.2"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + repo = "geoarrow-python"; + owner = "geoarrow"; + rev = "refs/tags/geoarrow-pyarrow-${version}"; + hash = "sha256-Ni+GKTRhRDRHip1us3OZPuUhHQCNU7Nap865T/+CU8Y="; + }; + + sourceRoot = "${src.name}/geoarrow-pyarrow"; + + build-system = [ setuptools-scm ]; + + disabledTests = [ + # these tests are incompatible with arrow 17 + "test_make_point" + "test_point_with_offset" + "test_linestring_with_offset" + "test_polygon_with_offset" + "test_multipoint_with_offset" + "test_multilinestring_with_offset" + "test_multipolygon_with_offset" + "test_multipolygon_with_offset_nonempty_inner_lists" + "test_interleaved_multipolygon_with_offset" + "test_readpyogrio_table_gpkg" + "test_geometry_type_basic" + ]; + + dependencies = [ + geoarrow-c + pyarrow + pyarrow-hotfix + ]; + + env.SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeCheckInputs = [ + pytestCheckHook + numpy + pandas + geopandas + pyogrio + pyproj + ]; + + pythonImportsCheck = [ "geoarrow.pyarrow" ]; + + meta = with lib; { + description = "PyArrow implementation of geospatial data types"; + homepage = "https://github.com/geoarrow/geoarrow-python"; + license = licenses.asl20; + maintainers = with maintainers; [ + cpcloud + ]; + }; +} diff --git a/pkgs/development/python-modules/geoarrow-types/default.nix b/pkgs/development/python-modules/geoarrow-types/default.nix new file mode 100644 index 0000000000000..366fa20eeee43 --- /dev/null +++ b/pkgs/development/python-modules/geoarrow-types/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pythonOlder, + pytestCheckHook, + pyarrow, + setuptools-scm, +}: +buildPythonPackage rec { + pname = "geoarrow-types"; + version = "0.2.0"; + pyproject = true; + + disabled = pythonOlder "3.8"; + + src = fetchFromGitHub { + repo = "geoarrow-python"; + owner = "geoarrow"; + rev = "refs/tags/geoarrow-types-${version}"; + hash = "sha256-LySb4AsRuSirDJ73MAPpnMwPM2WFfG6X82areR4Y4lI="; + }; + + sourceRoot = "${src.name}/geoarrow-types"; + + build-system = [ setuptools-scm ]; + + env.SETUPTOOLS_SCM_PRETEND_VERSION = version; + + nativeCheckInputs = [ + pytestCheckHook + pyarrow + ]; + + pythonImportsCheck = [ "geoarrow.types" ]; + + meta = with lib; { + description = "PyArrow types for geoarrow"; + homepage = "https://github.com/geoarrow/geoarrow-python"; + license = licenses.asl20; + maintainers = with maintainers; [ + cpcloud + ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c1413dcff4ddf..7a1259039077f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5058,6 +5058,14 @@ self: super: with self; { geoalchemy2 = callPackage ../development/python-modules/geoalchemy2 { }; + geoarrow-c = callPackage ../development/python-modules/geoarrow-c { }; + + geoarrow-types = callPackage ../development/python-modules/geoarrow-types { }; + + geoarrow-pandas = callPackage ../development/python-modules/geoarrow-pandas { }; + + geoarrow-pyarrow = callPackage ../development/python-modules/geoarrow-pyarrow { }; + geocachingapi = callPackage ../development/python-modules/geocachingapi { }; geocoder = callPackage ../development/python-modules/geocoder { };