Python bindings to the geoarrow C and C++ implementation
Project Links
Meta
Author: Dewey Dunnington
Requires Python: >=3.8
Classifiers
geoarrow-c for Python
The geoarrow-c Python package provides bindings to the geoarrow-c implementation of the GeoArrow specification. Its primary purpose is to serve as a dependency to geoarrow-python where needed.
Installation
Python bindings for geoarrow are available on PyPI and can be installed with:
pip install geoarrow-c
You can install a development version with:
python -m pip install "git+https://github.com/geoarrow/geoarrow-c.git#egg=geoarrow-c&subdirectory=python/geoarrow-c"
If you can import the namespace, you're good to go!
import geoarrow.c
Example
Most users should use the higher-level
geoarrow-python bindings.
If you would like to use the compute kernels exposed via geoarrow-c
directly, you will have to use the Arrow C Data interface to pass and
retrieve values.
import geoarrow.pyarrow as ga
from geoarrow.c import lib
input_pyarrow = ga.array(["POINT (0 1)"])
type_in = lib.SchemaHolder()
input_pyarrow.type._export_to_c(type_in._addr())
array_in = lib.ArrayHolder()
input_pyarrow._export_to_c(array_in._addr())
kernel = lib.CKernel("box_agg".encode("UTF-8"))
type_out = kernel.start(type_in, bytes())
kernel.push_batch_agg(array_in)
array_out = kernel.finish_agg()
result = pyarrow.Array._import_from_c(array_out._addr(), type_out._addr())
Building
Python bindings for nanoarrow are managed with setuptools. This means you can build the project using:
git clone https://github.com/geoarrow/geoarrow-c.git
cd python
pip install -e geoarrow-c/
Tests use pytest:
# Install dependencies
cd python/geoarrow-c
pip install -e ".[test]"
# Run tests
pytest
0.3.1
Oct 10, 2025
0.3.0
May 27, 2025
0.2.0
May 24, 2025
0.1.2
Feb 11, 2024
0.1.1
Oct 05, 2023
0.1.0
Sep 25, 2023
Wheel compatibility matrix
Files in release
geoarrow_c-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl (557.7KiB)
geoarrow_c-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (545.0KiB)
geoarrow_c-0.3.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
geoarrow_c-0.3.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.8MiB)
geoarrow_c-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl (2.7MiB)
geoarrow_c-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp310-cp310-win32.whl (420.3KiB)
geoarrow_c-0.3.1-cp310-cp310-win_amd64.whl (438.4KiB)
geoarrow_c-0.3.1-cp310-cp310-win_arm64.whl (414.7KiB)
geoarrow_c-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl (561.4KiB)
geoarrow_c-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (548.0KiB)
geoarrow_c-0.3.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
geoarrow_c-0.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.9MiB)
geoarrow_c-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl (2.7MiB)
geoarrow_c-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp311-cp311-win32.whl (421.4KiB)
geoarrow_c-0.3.1-cp311-cp311-win_amd64.whl (439.6KiB)
geoarrow_c-0.3.1-cp311-cp311-win_arm64.whl (415.5KiB)
geoarrow_c-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl (561.5KiB)
geoarrow_c-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (547.2KiB)
geoarrow_c-0.3.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
geoarrow_c-0.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.9MiB)
geoarrow_c-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl (2.7MiB)
geoarrow_c-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp312-cp312-win32.whl (420.5KiB)
geoarrow_c-0.3.1-cp312-cp312-win_amd64.whl (440.6KiB)
geoarrow_c-0.3.1-cp312-cp312-win_arm64.whl (414.5KiB)
geoarrow_c-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl (563.0KiB)
geoarrow_c-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (553.7KiB)
geoarrow_c-0.3.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.9MiB)
geoarrow_c-0.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.9MiB)
geoarrow_c-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl (2.8MiB)
geoarrow_c-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.9MiB)
geoarrow_c-0.3.1-cp313-cp313-win32.whl (421.5KiB)
geoarrow_c-0.3.1-cp313-cp313-win_amd64.whl (445.1KiB)
geoarrow_c-0.3.1-cp313-cp313-win_arm64.whl (417.6KiB)
geoarrow_c-0.3.1-cp314-cp314-macosx_10_13_x86_64.whl (563.6KiB)
geoarrow_c-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (554.3KiB)
geoarrow_c-0.3.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.9MiB)
geoarrow_c-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.9MiB)
geoarrow_c-0.3.1-cp314-cp314-musllinux_1_2_aarch64.whl (2.8MiB)
geoarrow_c-0.3.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp314-cp314-win32.whl (426.0KiB)
geoarrow_c-0.3.1-cp314-cp314-win_amd64.whl (449.9KiB)
geoarrow_c-0.3.1-cp314-cp314-win_arm64.whl (423.5KiB)
geoarrow_c-0.3.1-cp314-cp314t-macosx_10_13_x86_64.whl (570.8KiB)
geoarrow_c-0.3.1-cp314-cp314t-macosx_11_0_arm64.whl (563.2KiB)
geoarrow_c-0.3.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.9MiB)
geoarrow_c-0.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.9MiB)
geoarrow_c-0.3.1-cp314-cp314t-musllinux_1_2_aarch64.whl (2.8MiB)
geoarrow_c-0.3.1-cp314-cp314t-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp314-cp314t-win32.whl (442.1KiB)
geoarrow_c-0.3.1-cp314-cp314t-win_amd64.whl (471.5KiB)
geoarrow_c-0.3.1-cp314-cp314t-win_arm64.whl (431.8KiB)
geoarrow_c-0.3.1-cp38-cp38-macosx_10_9_x86_64.whl (562.4KiB)
geoarrow_c-0.3.1-cp38-cp38-macosx_11_0_arm64.whl (550.4KiB)
geoarrow_c-0.3.1-cp38-cp38-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
geoarrow_c-0.3.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.8MiB)
geoarrow_c-0.3.1-cp38-cp38-musllinux_1_2_aarch64.whl (2.7MiB)
geoarrow_c-0.3.1-cp38-cp38-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp38-cp38-win32.whl (423.2KiB)
geoarrow_c-0.3.1-cp38-cp38-win_amd64.whl (440.9KiB)
geoarrow_c-0.3.1-cp39-cp39-macosx_10_9_x86_64.whl (557.8KiB)
geoarrow_c-0.3.1-cp39-cp39-macosx_11_0_arm64.whl (545.1KiB)
geoarrow_c-0.3.1-cp39-cp39-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (1.8MiB)
geoarrow_c-0.3.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.8MiB)
geoarrow_c-0.3.1-cp39-cp39-musllinux_1_2_aarch64.whl (2.7MiB)
geoarrow_c-0.3.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.8MiB)
geoarrow_c-0.3.1-cp39-cp39-win32.whl (420.4KiB)
geoarrow_c-0.3.1-cp39-cp39-win_amd64.whl (438.2KiB)
geoarrow_c-0.3.1-cp39-cp39-win_arm64.whl (414.7KiB)
geoarrow_c-0.3.1.tar.gz (292.0KiB)