geoarrow-python icon indicating copy to clipboard operation
geoarrow-python copied to clipboard

ValueError: Can't create `geoarrow.types.Crs` from 4326

Open kylebarron opened this issue 3 months ago • 12 comments

This might be expected if geoarrow-types hasn't yet updated to the latest support for non-projjson CRS representations in 0.2?

If it's not expected, I can create a more detailed repro. I don't have an easy repro here because passing a crs argument to geoarrow-rust will automatically use pyproj to convert to PROJJSON. In geodatafusion I'm assigning a CRS with SRID 4326 when calling ST_Point(x, y, 4326). You can see my SQL call here: https://github.com/developmentseed/lonboard/blob/751f1a1a3d35d078758f51c4ef422e04dd45bd01/examples/nyc_taxi_trips.py#L137-L138

Traceback (most recent call last):
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/marimo/_output/formatting.py", line 231, in try_format
    mimetype, data = formatter(obj)
                     ^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/marimo/_output/formatters/repr_formatters.py", line 107, in f_repr
    contents = method()
               ^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/datafusion/dataframe.py", line 327, in _repr_html_
    return self.df._repr_html_()
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/datafusion/dataframe_formatter.py", line 303, in format_html
    html.extend(self._build_table_header(schema))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/datafusion/dataframe_formatter.py", line 379, in _build_table_header
    for field in schema:
                 ^^^^^^
  File "pyarrow/types.pxi", line 2907, in __iter__
  File "pyarrow/types.pxi", line 2903, in pyarrow.lib.Schema.__getitem__
  File "pyarrow/types.pxi", line 3209, in pyarrow.lib.Schema._field
  File "pyarrow/public-api.pxi", line 185, in pyarrow.lib.pyarrow_wrap_field
  File "pyarrow/types.pxi", line 2495, in pyarrow.lib.Field.init
  File "pyarrow/public-api.pxi", line 129, in pyarrow.lib.pyarrow_wrap_data_type
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/geoarrow/types/type_pyarrow.py", line 62, in __arrow_ext_deserialize__
    return _deserialize_storage(
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/geoarrow/types/type_pyarrow.py", line 619, in _deserialize_storage
    spec = TypeSpec.from_extension_metadata(extension_metadata).with_defaults(spec)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/geoarrow/types/type_spec.py", line 275, in from_extension_metadata
    out_crs = crs.create(metadata["crs"])
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/kyle/.cache/uv/archive-v0/N2xYiaCnXio3dQ-xoXvod/lib/python3.12/site-packages/geoarrow/types/crs.py", line 322, in create
    raise ValueError(f"Can't create geoarrow.types.Crs from {obj}")
ValueError: Can't create geoarrow.types.Crs from 4326

kylebarron avatar Sep 18 '25 18:09 kylebarron

Thanks! That should definitely work.

In SedonaDB we prefix it with EPSG:4326 (i.e., we only support SRIDs that are EPSG codes, and we make that assumption explicit in the scalar function implementation rather than assume something downstream will interpret it correctly). We also have ST_Crs() and ST_SetCrs() to make it a bit easier to work with non EPSG things.

paleolimbot avatar Sep 18 '25 18:09 paleolimbot

Hmm, perhaps I should assume that input is always EPSG and assign the CRS as such.

Then I would have:

  • {"crs_type": "authority_code", "crs": "EPSG:4326"}

I believe currently I'm creating

  • {"crs_type": "srid", "crs": "4326"}

I can verify this. But is this representation invalid? In terms of the spec there's not much validation around what the crs string should be formatted like here.

kylebarron avatar Sep 18 '25 18:09 kylebarron

Yes, I think that was on purpose (on my part, anyway), to force that assumption to be made explicit. It was added to ensure that when we passed on SRIDs from other specifications where this wasn't explicit (cough, Parquet), we didn't insert any assumptions.

paleolimbot avatar Sep 18 '25 18:09 paleolimbot

Yes

You're saying yes that is invalid? In the spec or in your implementation, or both?

Is there some spec text we can change to clarify this?

I think that was on purpose (on my part, anyway), to force that assumption to be made explicit. It was added to ensure that when we passed on SRIDs from other specifications where this wasn't explicit (cough, Parquet), we didn't insert any assumptions.

So you're saying we should essentially always use authority_code and EPSG:4326, and essentially never use srid?

kylebarron avatar Sep 18 '25 21:09 kylebarron

Sorry!

  • Your example code at the top shouldn't cause that error...any "string" should be propagated by geoarrow-python without erroring. Any "string" is also valid with respect to the spec, although obviously if you put in random stuff it's unlikely to be recognized correctly elsewhere.
  • Yes, the specification doesn't say anything about what an SRID is or is not. I think this is the right "spec" language.
  • I think for the purposes of your functions, when somebody types ST_SetSRID(geom, 1234), you should set the CRS to "EPSG:1234" (i.e., resolve and document that assumption in your function rather than assume on an interpretation somewhere else).

paleolimbot avatar Sep 18 '25 21:09 paleolimbot

Ok, thanks! That's good info.

I'm still trying to ascertain if there's any bug here in geoarrow-types.

crs.create("4326") # StringCrs(4326)

crs.create(4326) # ValueError: Can't create geoarrow.types.Crs from 4326

Perhaps I'm incorrectly saving it as an integer 👀

kylebarron avatar Sep 19 '25 16:09 kylebarron

Ahh! That would make sense. geoarrow-types should still probably handle that even though it's theoreetically out of spec.

paleolimbot avatar Sep 19 '25 16:09 paleolimbot

Hmm

https://github.com/datafusion-contrib/datafusion-geo/blob/171bdaf31069efe618371249e051e5b8eaa109d1/rust/geodatafusion/src/udf/native/constructors/point.rs#L80-L81 https://github.com/geoarrow/geoarrow-rs/blob/338a08cd2f5f2b35df36453ec3ad6ef031dfb702/rust/geoarrow-schema/src/crs.rs#L101-L107

I sure thought I was saving it as a string.

This crashes the interpreter when trying to access the table schema. (Run with uv run script.py)

# /// script
# requires-python = ">=3.10"
# dependencies = [
#     "arro3-core",
#     "geoarrow-types",
#     "geodatafusion==0.1.1",
#     "pyarrow",
# ]
# ///

from __future__ import annotations

import pyarrow as pa
from datafusion import SessionContext
from geoarrow.types.type_pyarrow import register_extension_types
from geodatafusion import register_all

register_extension_types()


ctx = SessionContext()
register_all(ctx)
sql = "SELECT ST_Point(0, 1, 4326) as geom"
df = ctx.sql(sql)
print("converting to pyarrow table")
table = pa.table(df)
print("finished converting to pyarrow table")

print("printing schema:")
print(table.schema)
print("finished printing schema")

But this works just fine when I load it into arro3:

# /// script
# requires-python = ">=3.10"
# dependencies = [
#     "arro3-core",
#     "geoarrow-types",
#     "geodatafusion==0.1.1",
#     "pyarrow",
# ]
# ///

from __future__ import annotations

from arro3.core import Table
from datafusion import SessionContext
from geodatafusion import register_all


ctx = SessionContext()
register_all(ctx)
sql = "SELECT ST_Point(0, 1, 4326) as geom"
df = ctx.sql(sql)
print("converting to pyarrow table")
table = Table(df)
print("finished converting to pyarrow table")

print("printing schema:")
print(table.schema)
print("finished printing schema")

print("printing field metadata")
print(table.schema.field(0).metadata_str)

Run with uv run script.py I see:

> uv run geodatafusion_pyarrow_test.py
converting to pyarrow table
finished converting to pyarrow table
printing schema:
arro3.core.Schema
------------
geom: Struct(x Float64, y Float64)

finished printing schema
printing field metadata
{'ARROW:extension:metadata': '{"crs":"4326","crs_type":"srid"}', 'ARROW:extension:name': 'geoarrow.point'}

Is the issue that it should be

{'ARROW:extension:metadata': {"crs":"4326","crs_type":"srid"}, 'ARROW:extension:name': 'geoarrow.point'}

without encoding the JSON as a string?

But the spec says

When GeoArrow-encoded Arrays have the ARROW:extension:metadata metadata field set, it must be serialized as a UTF-8 encoded JSON object

kylebarron avatar Sep 19 '25 17:09 kylebarron

I think you're doing the right thing here...I bet something funny is going on somewhere you're not in control of (hopefully not geoarrow-c, since theoretically that shouldn't be in play here). With that script I can probably get a backtrace (if the crash is happening in geoarrow-c or pyarrow).

paleolimbot avatar Sep 19 '25 18:09 paleolimbot

This is happening just with geoarrow-types, where geoarrow-c isn't even a dependency I don't think?

kylebarron avatar Sep 19 '25 18:09 kylebarron

In theory, it's not a dependency!

paleolimbot avatar Sep 19 '25 18:09 paleolimbot

Just verified it's not. uv lock --script script.py; cat script.py.lock gives the following, and no geoarrow-c

version = 1
revision = 3
requires-python = ">=3.10"

[manifest]
requirements = [
    { name = "arro3-core" },
    { name = "geoarrow-types" },
    { name = "geodatafusion", specifier = "==0.1.1" },
    { name = "pyarrow" },
]

[[package]]
name = "arro3-core"
version = "0.6.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "typing-extensions", marker = "python_full_version < '3.12'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/08/44/104ec426c1bed146deae8fdf1f9b8aa1fd54872fc05768059e47d642285b/arro3_core-0.6.3.tar.gz", hash = "sha256:5da776dda9ac278d8ae61f6dbc5bc4ce95ac9869d57940938eb10115ce4b8edf", size = 107926, upload-time = "2025-09-17T21:59:52.46Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/5b/75/937519fcdbe7e406f7c8bde0beb8ac22d44df132185e5711c2a25be71f5d/arro3_core-0.6.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cac1cbb57c272293b7f4fb42ae5736103bab0a5ce3fadde47a52adf9f16b0db4", size = 2679224, upload-time = "2025-09-17T21:55:20.842Z" },
    { url = "https://files.pythonhosted.org/packages/bf/9b/9eafd4fbd4c016359e8a4c9870096e35f44f44c928b193b750df69ac52d3/arro3_core-0.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ecb1f1c5b83a2e24d2079f70588f4ddeb8409f0080397fb874db45c2da8c52ad", size = 2372219, upload-time = "2025-09-17T21:55:23.099Z" },
    { url = "https://files.pythonhosted.org/packages/89/5a/8f1bc061c5b18e54ff69b2e4270fdc20a217ded411d036a6f80c33fd9dc1/arro3_core-0.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:38b53021e6572115b1e066647db8c0d2bf322b8d984e89a10bf216124a60b85a", size = 2875551, upload-time = "2025-09-17T21:55:27.87Z" },
    { url = "https://files.pythonhosted.org/packages/95/da/ddda696d287880cc63e0bbfbe6ada8251de02443a006e0e4c3ec29c001f3/arro3_core-0.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:615ba271f72e3d09e6c3996db4a5b7b1fc16fec5dcc49b57e291d7b514327ab7", size = 2886930, upload-time = "2025-09-17T21:55:31.153Z" },
    { url = "https://files.pythonhosted.org/packages/ca/a0/48249d8ed00f67929ba2077b857a4e1d196b3e395f755514ae003d3b4fa3/arro3_core-0.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:570b65b6616856a731fa11e39c341142aa626232676edd17cfc4c4234ffa7acc", size = 3115522, upload-time = "2025-09-17T21:55:35.471Z" },
    { url = "https://files.pythonhosted.org/packages/2f/4b/4395b173b3a4f2c2ff18ab9b4b494061fbdf03a654b5facdad5e01387562/arro3_core-0.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c39d2af2106d001be55706c72f1924904f79f4908ddb32e2d57aa0bee66255", size = 2773941, upload-time = "2025-09-17T21:55:38.722Z" },
    { url = "https://files.pythonhosted.org/packages/f9/98/811cef3af0c15a512058423dba80b78f8811bdab3fbf66af8957f16cd6a5/arro3_core-0.6.3-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:76f00bea5439df58f1934f7987e8eae701a2ede52c930df71bf8cc8f1ed6a9d6", size = 2518671, upload-time = "2025-09-17T21:55:41.945Z" },
    { url = "https://files.pythonhosted.org/packages/d8/03/28be52f54d6ab49437e774daa47ea87694fa0de3f96f56c8aad48fee3769/arro3_core-0.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d65dcab157e16f2bf130d80edd261bf712a7e5f52185fd488e53dc19f4ea52", size = 3027914, upload-time = "2025-09-17T21:55:45.427Z" },
    { url = "https://files.pythonhosted.org/packages/24/37/d9281b4a7830209ac1b0594942dca0c1a89a9bf2b3efc862c5cc81c0afc9/arro3_core-0.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:877d3ae8d2f5ff5867e7f81047700f54f7124ff1fb5fb9912bfec6abe1a27b41", size = 2664963, upload-time = "2025-09-17T21:55:48.782Z" },
    { url = "https://files.pythonhosted.org/packages/ed/73/0561e00f53a40b4928a7a1a521a3c8291a5b5be387bbe67d9b6d65dfd504/arro3_core-0.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1745162a43dbeb9c689f1207e3bfe251a48fb467e455d44be0daaba85aac9b2a", size = 3138808, upload-time = "2025-09-17T21:55:52.336Z" },
    { url = "https://files.pythonhosted.org/packages/58/b8/594b856c9e33d34b35e26cb0e789a7264bf8e44f4a9c45a69403139676da/arro3_core-0.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3715fcdfeb2ded8eeab14a940bf7cf350d5cdea82422982af4e2aea0fdbf866", size = 3101813, upload-time = "2025-09-17T21:55:55.89Z" },
    { url = "https://files.pythonhosted.org/packages/4e/41/6acc5bc6443090176697074fc59eac2d5f4eb32ca727255eab49d7fdc0ac/arro3_core-0.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:89f0070cdd259482379275c3eeaddcb7ad5a81a997215304674cf3f9f032899f", size = 2941502, upload-time = "2025-09-17T21:55:59.021Z" },
    { url = "https://files.pythonhosted.org/packages/c3/ae/1ffb462a907d2765c326173112c0b07c5c5c26bda9c698fe75d884f7c3cd/arro3_core-0.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:54e7afc9955e7b409ec79638514580eea518707a90b65d35cb3819363debc88d", size = 2833453, upload-time = "2025-09-17T21:56:02.474Z" },
    { url = "https://files.pythonhosted.org/packages/4e/cd/8e92efdc61501bfd66979837e24b3c4ab63eb7222415c2984e5ab5c5815d/arro3_core-0.6.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:60d1fb6621f7319d489eda5192ad07d198b4d2af2216d81ade05a09ef3f96e1a", size = 2678994, upload-time = "2025-09-17T21:56:05.856Z" },
    { url = "https://files.pythonhosted.org/packages/51/8e/54a59b3e23b3440742f10863d16b23c34aeca56cf6ce54d7d7250203229c/arro3_core-0.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4adb82b6fda667197b9d84d0bb4d9f6557349d4cf950a84813773944d33ced27", size = 2371720, upload-time = "2025-09-17T21:56:09.119Z" },
    { url = "https://files.pythonhosted.org/packages/bb/ce/75f53e0fa120ed440a5ed5b64f6488ec1d9f377bf5c7dfe744bcea6fbc38/arro3_core-0.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:18c3f8419d1af70b489ebf5d655f81fcf919174f84367aff3df489b824f22b08", size = 2874192, upload-time = "2025-09-17T21:56:12.18Z" },
    { url = "https://files.pythonhosted.org/packages/1b/56/9e549efcfef137d6c8c42bf5bd2b6eb90edaf355b12734aaff6dfaf1acf9/arro3_core-0.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:234081b9038038fecafa098a7e8d069ba37ab78ccd83d5cd8e843204a42912e4", size = 2887039, upload-time = "2025-09-17T21:56:15.699Z" },
    { url = "https://files.pythonhosted.org/packages/bb/d3/cce00c8dabdb894710922551c8fca2faf1c85e73b452a07502aaec1100d4/arro3_core-0.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9141997dc999eb8a77cefd91a95de4d2958b7b23dc764e33ce37881ea4a7bae6", size = 3124472, upload-time = "2025-09-17T21:56:23.682Z" },
    { url = "https://files.pythonhosted.org/packages/5b/c7/adaa299dc5428f641076f54dd074d6a323a9b2d9cde8e37e3bfe9b16e478/arro3_core-0.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21f95a2176d861f2d767c8d988750ab1f0e13bd12e551e6c1b709470020c2144", size = 2773773, upload-time = "2025-09-17T21:56:26.729Z" },
    { url = "https://files.pythonhosted.org/packages/8b/10/b13b87eb3b9fa9378dc697fa8ec47646cd778f52fa581d49bfdba7893e1e/arro3_core-0.6.3-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:62b7fd6989db16379c22db1c2923bda4eae24ee0905e1610a932dd74cf8ce8d4", size = 2518754, upload-time = "2025-09-17T21:56:30.046Z" },
    { url = "https://files.pythonhosted.org/packages/33/f5/d52689288a4700f7dc3721175f4497f4afd0eba4b9de0b735aec3f0176d2/arro3_core-0.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b11d0b8992c810448a461baff9fcffa64131deb2362105091fce634bc08eb4d9", size = 3027932, upload-time = "2025-09-17T21:56:33.437Z" },
    { url = "https://files.pythonhosted.org/packages/07/a6/31c25e9f056b450e966d18444041e34bcd993da83898125b516882828b43/arro3_core-0.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0ff853d61fd5bab04b846e21a4d06b2b75a7a2428674d1b16be5ebe27bed64", size = 2664877, upload-time = "2025-09-17T21:56:36.639Z" },
    { url = "https://files.pythonhosted.org/packages/e8/1d/01c18475c2d802907efbe02b1a65386d8ed65b315c9cffec967e81e98ccd/arro3_core-0.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:16ab37568859c80da1d24cc2b059aff078511f023ea015329da034df842004b5", size = 3137633, upload-time = "2025-09-17T21:56:39.749Z" },
    { url = "https://files.pythonhosted.org/packages/31/3b/ee1e0224a0561b6a30319b69c79bd9e4c2f12900687223a71f53c788ebfd/arro3_core-0.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ea70271c886e84e837d57027f70888e10cf81f6d9126fbdaa1d9f583e2757bb", size = 3101927, upload-time = "2025-09-17T21:56:43.348Z" },
    { url = "https://files.pythonhosted.org/packages/7d/51/06a43ce42236aaa30e886fc4727ed76bc84f61234d7e9a25cc39b570034f/arro3_core-0.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:64905d36d08a5ae72bd214031b00ea895682f88300183e532834ab15c0a7830b", size = 2941784, upload-time = "2025-09-17T21:56:47.468Z" },
    { url = "https://files.pythonhosted.org/packages/6b/55/be25f89600893d9063770435f40c40af5287942633d8962e4cb63f431956/arro3_core-0.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:896f4368a18f3303f372f9ca4e55348813afe8b3b6ab78d976a2a560d0546e57", size = 2833486, upload-time = "2025-09-17T21:56:50.827Z" },
    { url = "https://files.pythonhosted.org/packages/3d/0a/56fae7e43377e7f3b4d12cf2610600e9dd7bca80178dbedc9d9c25d2c85e/arro3_core-0.6.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:831b16044e791d7bd93aa47ebbdce219ef7e8613a04802149cd61584b236cead", size = 2667943, upload-time = "2025-09-17T21:56:54.157Z" },
    { url = "https://files.pythonhosted.org/packages/3c/d8/589a4a1ef136bca84d7b0c20a82fbfb7526b81611a8407a94c8a82a82212/arro3_core-0.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1ed625996c63443b354fed1c0756dbfa55f3b2cd5adbc4203adbfdb79549d49f", size = 2359479, upload-time = "2025-09-17T21:56:57.364Z" },
    { url = "https://files.pythonhosted.org/packages/79/7f/67729c440e3d1a41e0fea10738328785c5b3e5e78776c985a46f925e2de6/arro3_core-0.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a125b1c69b556bf3ad6f5fc31910489c987612c30e160b8634d86f63f53f6099", size = 2869113, upload-time = "2025-09-17T21:57:00.592Z" },
    { url = "https://files.pythonhosted.org/packages/af/29/ec07886805640b5fe7d9d9a1f6ff8286bd43e3a17e76c9c6500f6a7cb2e1/arro3_core-0.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4eaee19aef578340eb1a21358ec74a076730a0034f9201fb8300f68161442da", size = 2884956, upload-time = "2025-09-17T21:57:03.679Z" },
    { url = "https://files.pythonhosted.org/packages/42/36/95006f8ffe9ac402b9fdc30c1219e4b4c84b015a2044a64881665a39d031/arro3_core-0.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d0e3cd65d3d8291a1264f63f4d52fdec6f568b59b251b06da262c04366c4e94", size = 3128632, upload-time = "2025-09-17T21:57:07.424Z" },
    { url = "https://files.pythonhosted.org/packages/8b/68/2e26a8ab469a0c5bcee59a1237c77045a9190ff226d5802ba771ea04213c/arro3_core-0.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ace96f1a933b7acc64b66f9f9b2bccac79244c693cdfc74ed7eaef92c05c4db8", size = 2769161, upload-time = "2025-09-17T21:57:10.643Z" },
    { url = "https://files.pythonhosted.org/packages/db/23/36abe2e3c146442fdec5b982fad757002469276e7cf65e8b64dad927129a/arro3_core-0.6.3-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:92d75b1b5e6faaa44aa3e24543e8bfb06703e510d2c98104eae4ef36c234fbd8", size = 2514233, upload-time = "2025-09-17T21:57:14.236Z" },
    { url = "https://files.pythonhosted.org/packages/28/99/467096bea0b81f9bb959e2d399a8dc88886a4f2c20342c26e82ad8bc643b/arro3_core-0.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f222ff4aec28cb10a422bd36d15c947f5b134682bb60c546131c5fdb2f9d75e0", size = 3028860, upload-time = "2025-09-17T21:57:17.905Z" },
    { url = "https://files.pythonhosted.org/packages/40/61/430d9f8006429c9e1e8961aaeb4fd6cd56dc5cf9eb457fd368b9b7428058/arro3_core-0.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:81bbb41244ad6ed9cbf292ed0fa22ce39ac1280cd2062faa80d6d11841517caa", size = 2659640, upload-time = "2025-09-17T21:57:21.114Z" },
    { url = "https://files.pythonhosted.org/packages/02/79/93474994e5babfe9eedbe6f2d3f45b303d9bd0c3729a7a432f1d3db4f99f/arro3_core-0.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b7b0295a1b792b62de0110d73e3abc77c54482e0e5bb82e06a3809bdd0c7e5c7", size = 3132602, upload-time = "2025-09-17T21:57:24.596Z" },
    { url = "https://files.pythonhosted.org/packages/87/8d/c750a612aa6c23184d078de3546c3d775ed7fc050e5fbb5752798610f687/arro3_core-0.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5ce2bc0bba2bab845d6974a9bebe7607e8edd273628d71fbe4513e8f28f44622", size = 3099007, upload-time = "2025-09-17T21:57:27.872Z" },
    { url = "https://files.pythonhosted.org/packages/86/d3/7e582fc2e413c26e6dcd993428663db33bbea26be6f3911dcb726768b4d4/arro3_core-0.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ed285fba9dab1cebf3bf63a98df83e93d4fd70933d5af1dc24b6164032d845ee", size = 2936878, upload-time = "2025-09-17T21:57:31.193Z" },
    { url = "https://files.pythonhosted.org/packages/9a/13/5aed08d87a396c0b8441871f703ef06c2364d98ef1fbfa73b1c259457212/arro3_core-0.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:a564470bd529facffd71e31e11b8b38cc9ca207745b6349f5923fcd39bf75877", size = 2835145, upload-time = "2025-09-17T21:57:35.296Z" },
    { url = "https://files.pythonhosted.org/packages/a6/27/75f729785396e5780a08b7c63f3f09b0545a718e5a38976d815ccf0c51e2/arro3_core-0.6.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5510c501252212fe6b5427f465019de1d92c9ad8e8d1c0b268ab952b1888d9f7", size = 2667560, upload-time = "2025-09-17T21:57:38.531Z" },
    { url = "https://files.pythonhosted.org/packages/db/c4/d3730b7f4e7f01e502f79966733b4821388c23e7c343483f69dad0f99568/arro3_core-0.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3aa049228302c81b996fb6e5917dd6fe1cb0f0699b69e5031e9e22331379c5b0", size = 2359471, upload-time = "2025-09-17T21:57:41.714Z" },
    { url = "https://files.pythonhosted.org/packages/96/47/f7b0589c9ba7b4d0b09fc363e2b8fd62ab897c81494be2f099647d27df15/arro3_core-0.6.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae4ba5141376c668f8cc5b0607f1e1e23713d1fe922e77f153648aa21739f2de", size = 2867954, upload-time = "2025-09-17T21:57:44.884Z" },
    { url = "https://files.pythonhosted.org/packages/00/13/7a2ed0b27cc0ce265022f338446c0c133ad7f2ccd9746934203728786be4/arro3_core-0.6.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e45fa8a90ef779495b52932eaca374d69b5f0683a3458a66f002a107857f43b4", size = 2884493, upload-time = "2025-09-17T21:57:48.351Z" },
    { url = "https://files.pythonhosted.org/packages/d9/07/d1ada59bb461e0103323cb2096ffa9e0590d8504bd624745ec2d900eeab1/arro3_core-0.6.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b79291b12f3cb3f4538b07770cba15b4013ecebca8e28230ee6f08665e3b8d4e", size = 3128265, upload-time = "2025-09-17T21:57:51.651Z" },
    { url = "https://files.pythonhosted.org/packages/23/fe/3f19abcf6c0fc788df79366e5bfee643f1d0f20493a906e660bc4041f4a0/arro3_core-0.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a450d3904e834ae6a21866538e5ddf43f676a7f3881321835390d061953a98", size = 2768547, upload-time = "2025-09-17T21:57:55.056Z" },
    { url = "https://files.pythonhosted.org/packages/49/3e/b3c2a260c1e2ade25998540a151be37b000849c7d21af068f70d824f9681/arro3_core-0.6.3-cp313-cp313-manylinux_2_24_aarch64.whl", hash = "sha256:02e86a9b932639e6282ef8b5ad6a0d532d1e4909b8c3d36e8a82b8cefa3aa759", size = 2514159, upload-time = "2025-09-17T21:57:58.348Z" },
    { url = "https://files.pythonhosted.org/packages/37/56/fd6bd638be26dccb237d3c51b221b2a6e90ae70749a103a505c05387f05b/arro3_core-0.6.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7b0115eb6a91da54dc00e99d609b37fff460aca1d3e04ffc9a827626938c5fde", size = 3028141, upload-time = "2025-09-17T21:58:01.84Z" },
    { url = "https://files.pythonhosted.org/packages/ef/29/ed5048111de3c8b65a0d4b95bd86859d88efbe9a21d2a3194f01cccd79bf/arro3_core-0.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2c29251db308c087a9bb49a71ea2e921333e8951edecfcc9659cf87a2de237e5", size = 2659264, upload-time = "2025-09-17T21:58:05.259Z" },
    { url = "https://files.pythonhosted.org/packages/d6/2e/69c651cdbc56c250dee8f44ed5a4ec11824be9e9f3513bc0ae0b1824941a/arro3_core-0.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d45a6affb74f20a7c6e049f2abba73e687f6cd674e2cb747e3cfe8a012560fda", size = 3131835, upload-time = "2025-09-17T21:58:08.435Z" },
    { url = "https://files.pythonhosted.org/packages/d0/b6/82947fe4c322ef60315a12023e27048078dcf90967ec2b373687e2f9dfd9/arro3_core-0.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:312d70f7c69436a3eac716995c4fdafe94acf750d0037fa2495936dff8feaa0b", size = 3098165, upload-time = "2025-09-17T21:58:11.875Z" },
    { url = "https://files.pythonhosted.org/packages/1b/05/1ed10598ea96d80d4b2db9f3ac0b19390fe996c8b6f342c40f0fac22115d/arro3_core-0.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d8f8dd075c2f69e36b968bca420cd0c6885f8f877d544a0b6af5872deeb4ab2", size = 2936341, upload-time = "2025-09-17T21:58:15.112Z" },
    { url = "https://files.pythonhosted.org/packages/32/0e/3eadf8cf4be14df1d6c991b094685da9fd605d5727d969640a2d85873e29/arro3_core-0.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:4f69866656e8a2e75495bf8c5ed8138f4ca7169b6532e66f6c7f7e37bd96b21f", size = 2834121, upload-time = "2025-09-17T21:58:18.431Z" },
    { url = "https://files.pythonhosted.org/packages/d3/b8/af4a42a62f808b62f35d5601b1494ddab39585379754d6e87d9c5863fe98/arro3_core-0.6.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:615f5384ee2cc7b30306a91453e7b05dda310cbad7a7f2dc606b3c8ef706ce98", size = 2678187, upload-time = "2025-09-17T21:59:11.639Z" },
    { url = "https://files.pythonhosted.org/packages/bc/cb/493c1dff23830e14407425b94139475e05ad566e451ddde775f0c50466fb/arro3_core-0.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:183cac8d4909536ccdbc6a56be800afe96272289a6ac5547177403ec7d7ff1ff", size = 2370497, upload-time = "2025-09-17T21:59:15.414Z" },
    { url = "https://files.pythonhosted.org/packages/72/38/46ff4340c92071a265a48f2cc4089d6da2a6ad7763fe8845677ed79acc5f/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3b1bf6d96cc906c00bebb4165b6da1bed61dcdca051e0a084b3799d185aeab0", size = 2874173, upload-time = "2025-09-17T21:59:18.788Z" },
    { url = "https://files.pythonhosted.org/packages/ef/92/ff15e892a6c306ee78eb0018e7a27f9eb8ab2ddbe41d106a6d353f0e6e8c/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cea24982f6e5bd6cb5f7df6acaad8a585262376c1c633454136316187098fcb7", size = 2886020, upload-time = "2025-09-17T21:59:22.332Z" },
    { url = "https://files.pythonhosted.org/packages/58/7d/b582ad6461197b37cf8ddd5e37988232186363b774bc5048120bf7b351a1/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf641982e1e6213c5ad62c2d4b7bfc27e972f363e00fbf3983c298ec6dad5887", size = 3114794, upload-time = "2025-09-17T21:59:26.838Z" },
    { url = "https://files.pythonhosted.org/packages/6b/14/d10a204e71861d6d595b254d4ddff1a6448c02b0f05ebf68b3a96ca36f3e/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f33a5ab3203ff4884e84c1a3ea01e4f749603a6070d8bedc29044b57253afc62", size = 2773685, upload-time = "2025-09-17T21:59:30.411Z" },
    { url = "https://files.pythonhosted.org/packages/e2/2b/a749b4103d5975fa187db5d72912a55a20470df1910c5549f893d1c13fc0/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_24_aarch64.whl", hash = "sha256:fdb8e17c31582b36303288c9516491c5e2e4d50c6ede437cc5a2d048065ef500", size = 2518737, upload-time = "2025-09-17T21:59:33.666Z" },
    { url = "https://files.pythonhosted.org/packages/74/83/e36c3c0e03aa4550f021dc16c20d39ab91f36c73d36536425d6e76890e29/arro3_core-0.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dd7d9ca69880cc92bf71c37f43cdb5aac8681c014a512f2c27088015b7adac61", size = 3027924, upload-time = "2025-09-17T21:59:37.493Z" },
    { url = "https://files.pythonhosted.org/packages/a6/70/c4f78e9bd128a4b6aa479cb24f398d79735630ae45d902c8df608951f690/arro3_core-0.6.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a6a52556b76e7dabd0a3bbd9c556e366c93e6b1ae9dcdf7f454f439ce3296d24", size = 2664871, upload-time = "2025-09-17T21:59:40.76Z" },
    { url = "https://files.pythonhosted.org/packages/6a/f7/40711fbd308d568cfa6cd882259769aebfed4dfbb580fe77e047e50f3a2b/arro3_core-0.6.3-pp310-pypy310_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:3db782df72e7ccd9688fa1ff2f504261f9f346c29219d0c165791ca1d3fa35de", size = 3137750, upload-time = "2025-09-17T21:59:44.198Z" },
    { url = "https://files.pythonhosted.org/packages/2c/0a/b03c4b936ec3a93047226cdcdda7dc96362f332c56133777c9fa8139d206/arro3_core-0.6.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:ded38b6092f16e7e7f90c3879586ea76e3651e967e9fd4db7e604f435c9fdaa5", size = 3101734, upload-time = "2025-09-17T21:59:48.003Z" },
    { url = "https://files.pythonhosted.org/packages/5e/17/70a3596f7f4124113f4b8938c0f4c339f29e792a177ea3ef3b12ebc84da5/arro3_core-0.6.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8ff145b5556c07cd1968c428e57e3234dd71c258bc45e78e802bbae509c4d54b", size = 2941071, upload-time = "2025-09-17T21:59:50.575Z" },
]

[[package]]
name = "datafusion"
version = "49.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "pyarrow" },
    { name = "typing-extensions", marker = "python_full_version < '3.13'" },
]
sdist = { url = "https://files.pythonhosted.org/packages/1b/81/eb7f69e184eba6f8fc748f09aa6ac39a50a4aa54e66e1529769d68d7c9e4/datafusion-49.0.0.tar.gz", hash = "sha256:f3ba4f00d56a199a90df145f43667131dbba9aea9b170cc61cd3663241a74a94", size = 183558, upload-time = "2025-08-29T01:39:45.889Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/02/16/a1438058d784deea42105b869323007cf9dd8a52dbb4551a9ef23967a235/datafusion-49.0.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bb419810c7b1032ec4a374260d289279c5911e3fcdcfb57c9513b6d256fe0330", size = 26455326, upload-time = "2025-08-29T01:39:19.759Z" },
    { url = "https://files.pythonhosted.org/packages/83/8d/d906b27b61838002b1cf0880eaa75c741409f0f6386192f2fabee24684af/datafusion-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:95d82ceda75767714629c1b5572a41bc919066156163d1ca3777418ffdbf4916", size = 23623419, upload-time = "2025-08-29T01:39:26.613Z" },
    { url = "https://files.pythonhosted.org/packages/66/4e/2a113bef5e51e56f7273f193959a80e4abd48a2ff6856cfa219dbba85600/datafusion-49.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e093a8d8cc68bf48376c2f553dcec35829be3ea2c9557516fcf93d2bf4695593", size = 29392602, upload-time = "2025-08-29T01:39:32.053Z" },
    { url = "https://files.pythonhosted.org/packages/ea/80/f49809e61f28343f303059572d9fdfedcb6f08653f34c057c2018d98ab5e/datafusion-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7e9286f92f9f292a57873f8b83f10796decba98f4c022e92d929511f68e2d79a", size = 27505100, upload-time = "2025-08-29T01:39:36.398Z" },
    { url = "https://files.pythonhosted.org/packages/f6/d7/54f1d73a9e8b084965ea40531988ca25e57f7f5c77560e198483b1c7bf25/datafusion-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:2079a2ec6e73820a21d6f8d466a1410a94f8ef3171eba2cd2461790fc0437c91", size = 28352189, upload-time = "2025-08-29T01:39:43.546Z" },
]

[[package]]
name = "geoarrow-types"
version = "0.3.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/a5/97/fa35f5d13a803b8f16e59c1f18f06607b9df5683c08bd7cd7a48a29ce988/geoarrow_types-0.3.0.tar.gz", hash = "sha256:82243e4be88b268fa978ae5bba6c6680c3556735e795965b2fe3e6fbfea9f9ee", size = 23708, upload-time = "2025-05-27T03:39:39.979Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/b6/16/e37cb1b0894c9cf3f9b1c50ebcfab56a0d9fe7c3b6f97d5680a7eb27ca08/geoarrow_types-0.3.0-py3-none-any.whl", hash = "sha256:439df6101632080442beccc7393cac54d6c7f6965da897554349e94d2492f613", size = 19025, upload-time = "2025-05-27T03:39:38.652Z" },
]

[[package]]
name = "geodatafusion"
version = "0.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "datafusion" },
]
wheels = [
    { url = "https://files.pythonhosted.org/packages/60/3e/9ef4f135437b9eedae73f13b97ef59e96839db906f9e20407c9d5d8ed9bf/geodatafusion-0.1.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:5ba50701d4b78abaca14d2d6fb33c234f6494b6f207f2d3e3ab290b756bc55ec", size = 28530074, upload-time = "2025-09-15T05:45:32.659Z" },
    { url = "https://files.pythonhosted.org/packages/ce/00/1135df86d248cd84df01cd0eca160779839b3ab19f36086448ad9a874f54/geodatafusion-0.1.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:de2320b1263f920cd4ba6d6b3529c5530eba4bf528e10ab421559d1c46e28c2c", size = 26274401, upload-time = "2025-09-15T05:45:29.419Z" },
    { url = "https://files.pythonhosted.org/packages/11/61/3f419848d70c8459cc36e9131199ec7e380ceb0641e3c733041051080c21/geodatafusion-0.1.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ed1be20aaa5f7b05f68c78534db38c15c9dbf617e0ffccc6c4b03631e933080", size = 30155603, upload-time = "2025-09-15T05:45:01.693Z" },
    { url = "https://files.pythonhosted.org/packages/30/ad/64aada98741467d63ed39b1e0ec9c77fe5cca49adfd1a3ba69a7e7d66947/geodatafusion-0.1.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:537b2d19a0ba32c8b9ca2289745ff2729f388b6f386c7493f556e92b89d7277e", size = 33762357, upload-time = "2025-09-15T05:45:15.868Z" },
    { url = "https://files.pythonhosted.org/packages/fb/4e/68afb522171f2eb79ca31a6a5dd02364c9e71fe8abb492804344ce5d7766/geodatafusion-0.1.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9c01cb04644d60f82083667589dca8e5ada3400d16afb5976537c100ae76085", size = 36528469, upload-time = "2025-09-15T05:45:08.755Z" },
    { url = "https://files.pythonhosted.org/packages/c4/6a/154eb1bb3736f5d22ccf7596a2df9440bed813dcb4188b8efc1e5f415af4/geodatafusion-0.1.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:112bae9682f3419a4a5888152cfd0dfb2f4795ab1763c5aa7761f2c31fb92aed", size = 30501886, upload-time = "2025-09-15T05:45:22.645Z" },
    { url = "https://files.pythonhosted.org/packages/71/3d/b5152e4e24874a10f56d0babb05e277e9695811cac9912e742d3d8ee03ed/geodatafusion-0.1.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:26511e03bf93f7695b3c25e6dac6c8b4a8bc30401a81d4dfa5d63cce15ce6aef", size = 29066422, upload-time = "2025-09-15T05:44:54.794Z" },
    { url = "https://files.pythonhosted.org/packages/bf/d1/12ea9a604a2ec5df2053bbb1c328e02bd48a623865350e8f7ffd680dd449/geodatafusion-0.1.1-cp39-abi3-win_amd64.whl", hash = "sha256:dbbfaff31d26d28566441d268ca462b4c52a8ce78ad1c180130a7db4c118747e", size = 26681481, upload-time = "2025-09-15T05:45:36.044Z" },
    { url = "https://files.pythonhosted.org/packages/1b/22/799d268b1f7a9fcd687fc89ce602fa0dc8b6a98d48b633d202d672ed704a/geodatafusion-0.1.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d20d9d7d6b365df9f790940bc81eee39d85abe924c3df7ff87ab3149c426b984", size = 30144129, upload-time = "2025-09-15T05:45:04.902Z" },
    { url = "https://files.pythonhosted.org/packages/6a/5d/4e52b6a46e78a49e42aab99b53b8eeb237cf73dd285ca4354114303127b2/geodatafusion-0.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f9a61e29aceaaaaf8b7b03dfe0c0824e2ab348509d039ea562d7e6936bf8b7c", size = 33757068, upload-time = "2025-09-15T05:45:19.505Z" },
    { url = "https://files.pythonhosted.org/packages/f7/cf/3fccc3d36db7d695d25d5a279139aad7bafa22fc5eb321ec19f3eb14dbd7/geodatafusion-0.1.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38274d703c0d403e6b6aadf392c8d39aa31edc114b590b07e8d40c349a5479fe", size = 36521785, upload-time = "2025-09-15T05:45:12.562Z" },
    { url = "https://files.pythonhosted.org/packages/70/5e/ed2f404e384b6d807ac25bedfee592807ea8f060b5e58b682021d0cbbd7a/geodatafusion-0.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:888b2d05a585b2c94846198da5e059ca1f69fc7d2263cbf07cfa7577b577260f", size = 30494275, upload-time = "2025-09-15T05:45:25.963Z" },
    { url = "https://files.pythonhosted.org/packages/0e/f3/e36350c7b57e7f020f442db77c583e158f7f5287f0de5274aa4240302461/geodatafusion-0.1.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:633c604eb2cd400e74ffd4b2321066575715dde0cae0ac716ee419fdcc182bf3", size = 29057512, upload-time = "2025-09-15T05:44:58.311Z" },
]

[[package]]
name = "pyarrow"
version = "21.0.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487, upload-time = "2025-07-18T00:57:31.761Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/17/d9/110de31880016e2afc52d8580b397dbe47615defbf09ca8cf55f56c62165/pyarrow-21.0.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e563271e2c5ff4d4a4cbeb2c83d5cf0d4938b891518e676025f7268c6fe5fe26", size = 31196837, upload-time = "2025-07-18T00:54:34.755Z" },
    { url = "https://files.pythonhosted.org/packages/df/5f/c1c1997613abf24fceb087e79432d24c19bc6f7259cab57c2c8e5e545fab/pyarrow-21.0.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fee33b0ca46f4c85443d6c450357101e47d53e6c3f008d658c27a2d020d44c79", size = 32659470, upload-time = "2025-07-18T00:54:38.329Z" },
    { url = "https://files.pythonhosted.org/packages/3e/ed/b1589a777816ee33ba123ba1e4f8f02243a844fed0deec97bde9fb21a5cf/pyarrow-21.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:7be45519b830f7c24b21d630a31d48bcebfd5d4d7f9d3bdb49da9cdf6d764edb", size = 41055619, upload-time = "2025-07-18T00:54:42.172Z" },
    { url = "https://files.pythonhosted.org/packages/44/28/b6672962639e85dc0ac36f71ab3a8f5f38e01b51343d7aa372a6b56fa3f3/pyarrow-21.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:26bfd95f6bff443ceae63c65dc7e048670b7e98bc892210acba7e4995d3d4b51", size = 42733488, upload-time = "2025-07-18T00:54:47.132Z" },
    { url = "https://files.pythonhosted.org/packages/f8/cc/de02c3614874b9089c94eac093f90ca5dfa6d5afe45de3ba847fd950fdf1/pyarrow-21.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bd04ec08f7f8bd113c55868bd3fc442a9db67c27af098c5f814a3091e71cc61a", size = 43329159, upload-time = "2025-07-18T00:54:51.686Z" },
    { url = "https://files.pythonhosted.org/packages/a6/3e/99473332ac40278f196e105ce30b79ab8affab12f6194802f2593d6b0be2/pyarrow-21.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9b0b14b49ac10654332a805aedfc0147fb3469cbf8ea951b3d040dab12372594", size = 45050567, upload-time = "2025-07-18T00:54:56.679Z" },
    { url = "https://files.pythonhosted.org/packages/7b/f5/c372ef60593d713e8bfbb7e0c743501605f0ad00719146dc075faf11172b/pyarrow-21.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:9d9f8bcb4c3be7738add259738abdeddc363de1b80e3310e04067aa1ca596634", size = 26217959, upload-time = "2025-07-18T00:55:00.482Z" },
    { url = "https://files.pythonhosted.org/packages/94/dc/80564a3071a57c20b7c32575e4a0120e8a330ef487c319b122942d665960/pyarrow-21.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c077f48aab61738c237802836fc3844f85409a46015635198761b0d6a688f87b", size = 31243234, upload-time = "2025-07-18T00:55:03.812Z" },
    { url = "https://files.pythonhosted.org/packages/ea/cc/3b51cb2db26fe535d14f74cab4c79b191ed9a8cd4cbba45e2379b5ca2746/pyarrow-21.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:689f448066781856237eca8d1975b98cace19b8dd2ab6145bf49475478bcaa10", size = 32714370, upload-time = "2025-07-18T00:55:07.495Z" },
    { url = "https://files.pythonhosted.org/packages/24/11/a4431f36d5ad7d83b87146f515c063e4d07ef0b7240876ddb885e6b44f2e/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:479ee41399fcddc46159a551705b89c05f11e8b8cb8e968f7fec64f62d91985e", size = 41135424, upload-time = "2025-07-18T00:55:11.461Z" },
    { url = "https://files.pythonhosted.org/packages/74/dc/035d54638fc5d2971cbf1e987ccd45f1091c83bcf747281cf6cc25e72c88/pyarrow-21.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:40ebfcb54a4f11bcde86bc586cbd0272bac0d516cfa539c799c2453768477569", size = 42823810, upload-time = "2025-07-18T00:55:16.301Z" },
    { url = "https://files.pythonhosted.org/packages/2e/3b/89fced102448a9e3e0d4dded1f37fa3ce4700f02cdb8665457fcc8015f5b/pyarrow-21.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8d58d8497814274d3d20214fbb24abcad2f7e351474357d552a8d53bce70c70e", size = 43391538, upload-time = "2025-07-18T00:55:23.82Z" },
    { url = "https://files.pythonhosted.org/packages/fb/bb/ea7f1bd08978d39debd3b23611c293f64a642557e8141c80635d501e6d53/pyarrow-21.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:585e7224f21124dd57836b1530ac8f2df2afc43c861d7bf3d58a4870c42ae36c", size = 45120056, upload-time = "2025-07-18T00:55:28.231Z" },
    { url = "https://files.pythonhosted.org/packages/6e/0b/77ea0600009842b30ceebc3337639a7380cd946061b620ac1a2f3cb541e2/pyarrow-21.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:555ca6935b2cbca2c0e932bedd853e9bc523098c39636de9ad4693b5b1df86d6", size = 26220568, upload-time = "2025-07-18T00:55:32.122Z" },
    { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305, upload-time = "2025-07-18T00:55:35.373Z" },
    { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264, upload-time = "2025-07-18T00:55:39.303Z" },
    { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099, upload-time = "2025-07-18T00:55:42.889Z" },
    { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529, upload-time = "2025-07-18T00:55:47.069Z" },
    { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883, upload-time = "2025-07-18T00:55:53.069Z" },
    { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802, upload-time = "2025-07-18T00:55:57.714Z" },
    { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175, upload-time = "2025-07-18T00:56:01.364Z" },
    { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306, upload-time = "2025-07-18T00:56:04.42Z" },
    { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622, upload-time = "2025-07-18T00:56:07.505Z" },
    { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094, upload-time = "2025-07-18T00:56:10.994Z" },
    { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576, upload-time = "2025-07-18T00:56:15.569Z" },
    { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342, upload-time = "2025-07-18T00:56:19.531Z" },
    { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218, upload-time = "2025-07-18T00:56:23.347Z" },
    { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551, upload-time = "2025-07-18T00:56:26.758Z" },
    { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064, upload-time = "2025-07-18T00:56:30.214Z" },
    { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837, upload-time = "2025-07-18T00:56:33.935Z" },
    { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158, upload-time = "2025-07-18T00:56:37.528Z" },
    { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885, upload-time = "2025-07-18T00:56:41.483Z" },
    { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625, upload-time = "2025-07-18T00:56:48.002Z" },
    { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890, upload-time = "2025-07-18T00:56:52.568Z" },
    { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006, upload-time = "2025-07-18T00:56:56.379Z" },
]

[[package]]
name = "typing-extensions"
version = "4.15.0"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
wheels = [
    { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
]

kylebarron avatar Sep 19 '25 18:09 kylebarron