# LocalCartesian
Fast GPS to local Cartesian coordinate conversion using [GeographicLib](https://github.com/geographiclib/geographiclib).
## Description
This package provides efficient conversion between GPS coordinates (latitude, longitude) and local Cartesian coordinates (x, y). It uses the GeographicLib C++ library through Python bindings created with pybind11.
The package exists because GeographicLib's Python bindings don't include the equivalent of the C++ `LocalCartesian` class, which is essential for many geospatial applications.
## Installation
Install from PyPI using [uv](https://docs.astral.sh/uv/):
```bash
uv add localcartesian
```
or via pip globally, or inside any Python environment like virtualenv or conda:
```bash
pip install localcartesian
```
## Usage
```python
from localcartesian import gps2xy, xy2gps
# Define some GPS coordinates (lat, lon pairs)
gps_coords = [
[40.7128, -74.0060], # New York City
[40.7589, -73.9851], # Times Square
[40.6892, -74.0445], # Statue of Liberty
]
# Define origin point (lat, lon, altitude)
origin = [40.7128, -74.0060, 0.0] # NYC as origin
# Convert GPS to local Cartesian coordinates
local_coords = gps2xy(gps_coords, origin)
print("Local coordinates:", local_coords)
# Convert back to GPS coordinates
gps_back = xy2gps(local_coords, origin)
print("GPS coordinates:", gps_back)
```
## API Reference
### `gps2xy(latlon, origin_latlonalt)`
Convert GPS coordinates to local Cartesian coordinates.
**Parameters:**
- `latlon`: List of [latitude, longitude] pairs
- `origin_latlonalt`: Origin point as [latitude, longitude, altitude]
**Returns:**
- List of [x, y] coordinate pairs in meters
### `xy2gps(xy, origin_latlonalt)`
Convert local Cartesian coordinates to GPS coordinates.
**Parameters:**
- `xy`: List of [x, y] coordinate pairs in meters
- `origin_latlonalt`: Origin point as [latitude, longitude, altitude]
**Returns:**
- List of [latitude, longitude] pairs
## Development
### Building from Source Locally
Clone the repository and navigate to the project directory:
```bash
git clone https://github.com/PastorD/localcartesian.git
cd localcartesian
uv sync --dev
```
It will fetch the GeographicLib binaries, build the C++ extension, and install the package in editable mode. You can now import and use `localcartesian` in your Python environment. See `examples/basic_usage.py` for example usage.
### Generate multiple wheels locally
For Linux
```bash
uvx cibuildwheel --platform linux \
--only "cp39-manylinux_x86_64 cp310-manylinux_x86_64 \
cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64"
```
For MacOS
```bash
uvx cibuildwheel --platform macos \
--only "cp39-macosx_x86_64 cp310-macosx_x86_64 cp311-macosx_x86_64 cp312-macosx_x86_64 \
cp39-macosx_arm64 cp310-macosx_arm64 cp311-macosx_arm64 cp312-macosx_arm64"
```
### Running Tests
```bash
uv sync --extra test
uv run pytest
```
## License
This project is licensed under the MIT License.
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Raw data
{
"_id": null,
"home_page": null,
"name": "localcartesian",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "gps, coordinates, cartesian, geographic, geospatial",
"author": null,
"author_email": "Daniel Pastor <danpasmor@gmail.com>, Cevat Ustun <custun@beyond.ai>",
"download_url": "https://files.pythonhosted.org/packages/b7/80/915beb4ffa2cc2584785160601913c2747ba4d6dc40a945b3cd8ff5fe5b6/localcartesian-0.1.4.tar.gz",
"platform": null,
"description": "# LocalCartesian\n\nFast GPS to local Cartesian coordinate conversion using [GeographicLib](https://github.com/geographiclib/geographiclib).\n\n## Description\n\nThis package provides efficient conversion between GPS coordinates (latitude, longitude) and local Cartesian coordinates (x, y). It uses the GeographicLib C++ library through Python bindings created with pybind11.\n\nThe package exists because GeographicLib's Python bindings don't include the equivalent of the C++ `LocalCartesian` class, which is essential for many geospatial applications.\n\n## Installation\n\nInstall from PyPI using [uv](https://docs.astral.sh/uv/):\n```bash\nuv add localcartesian\n```\nor via pip globally, or inside any Python environment like virtualenv or conda:\n```bash\npip install localcartesian\n```\n\n## Usage\n\n```python\nfrom localcartesian import gps2xy, xy2gps\n\n# Define some GPS coordinates (lat, lon pairs)\ngps_coords = [\n [40.7128, -74.0060], # New York City\n [40.7589, -73.9851], # Times Square\n [40.6892, -74.0445], # Statue of Liberty\n]\n\n# Define origin point (lat, lon, altitude)\norigin = [40.7128, -74.0060, 0.0] # NYC as origin\n\n# Convert GPS to local Cartesian coordinates\nlocal_coords = gps2xy(gps_coords, origin)\nprint(\"Local coordinates:\", local_coords)\n\n# Convert back to GPS coordinates\ngps_back = xy2gps(local_coords, origin)\nprint(\"GPS coordinates:\", gps_back)\n```\n\n## API Reference\n\n### `gps2xy(latlon, origin_latlonalt)`\n\nConvert GPS coordinates to local Cartesian coordinates.\n\n**Parameters:**\n- `latlon`: List of [latitude, longitude] pairs\n- `origin_latlonalt`: Origin point as [latitude, longitude, altitude]\n\n**Returns:**\n- List of [x, y] coordinate pairs in meters\n\n### `xy2gps(xy, origin_latlonalt)`\n\nConvert local Cartesian coordinates to GPS coordinates.\n\n**Parameters:**\n- `xy`: List of [x, y] coordinate pairs in meters\n- `origin_latlonalt`: Origin point as [latitude, longitude, altitude]\n\n**Returns:**\n- List of [latitude, longitude] pairs\n\n## Development\n\n### Building from Source Locally\n\nClone the repository and navigate to the project directory: \n```bash\ngit clone https://github.com/PastorD/localcartesian.git\ncd localcartesian\nuv sync --dev\n```\nIt will fetch the GeographicLib binaries, build the C++ extension, and install the package in editable mode. You can now import and use `localcartesian` in your Python environment. See `examples/basic_usage.py` for example usage.\n\n### Generate multiple wheels locally\n\nFor Linux\n```bash\nuvx cibuildwheel --platform linux \\\n --only \"cp39-manylinux_x86_64 cp310-manylinux_x86_64 \\\n cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64\"\n```\n\nFor MacOS\n```bash\nuvx cibuildwheel --platform macos \\\n --only \"cp39-macosx_x86_64 cp310-macosx_x86_64 cp311-macosx_x86_64 cp312-macosx_x86_64 \\\n cp39-macosx_arm64 cp310-macosx_arm64 cp311-macosx_arm64 cp312-macosx_arm64\"\n```\n\n### Running Tests\n\n```bash\nuv sync --extra test\nuv run pytest\n```\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.",
"bugtrack_url": null,
"license": "MIT",
"summary": "Fast GPS to local Cartesian coordinate conversion using GeographicLib",
"version": "0.1.4",
"project_urls": null,
"split_keywords": [
"gps",
" coordinates",
" cartesian",
" geographic",
" geospatial"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2cb60a95ca838a765dc74f45775be989f4d81b8d7d554d900b2252be269617fd",
"md5": "be3af0d1fd1746e1e16944830484523f",
"sha256": "eae74d84fec7c7b05a04b384888a7207e6a9cf93514230a3c1703115e8a0c52e"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "be3af0d1fd1746e1e16944830484523f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 1992829,
"upload_time": "2025-10-23T19:48:08",
"upload_time_iso_8601": "2025-10-23T19:48:08.808208Z",
"url": "https://files.pythonhosted.org/packages/2c/b6/0a95ca838a765dc74f45775be989f4d81b8d7d554d900b2252be269617fd/localcartesian-0.1.4-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "31e8cbfb65d12332c97d7f2644536b93fd3672a2e585ae2e861c6ac19c0642cf",
"md5": "fae0960da5d9815a07065799c0d9d6cf",
"sha256": "9ec5d39d5f83a2f9425b7991a450ccb625a98e68d9af096ee4919cffc16b9926"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp310-cp310-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "fae0960da5d9815a07065799c0d9d6cf",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 2218866,
"upload_time": "2025-10-23T19:48:10",
"upload_time_iso_8601": "2025-10-23T19:48:10.916700Z",
"url": "https://files.pythonhosted.org/packages/31/e8/cbfb65d12332c97d7f2644536b93fd3672a2e585ae2e861c6ac19c0642cf/localcartesian-0.1.4-cp310-cp310-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "92318d6cc6352e6d23a82a9297747b0c574ff68c9980dee830c5ee046b6ec7e2",
"md5": "56e9eb7bbb4941617237f0853d0c94f6",
"sha256": "38d28316b875f3bf0f2f213f3f085c420c705923671f710a1f8971cb21059a3b"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "56e9eb7bbb4941617237f0853d0c94f6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 2625160,
"upload_time": "2025-10-23T19:48:12",
"upload_time_iso_8601": "2025-10-23T19:48:12.395476Z",
"url": "https://files.pythonhosted.org/packages/92/31/8d6cc6352e6d23a82a9297747b0c574ff68c9980dee830c5ee046b6ec7e2/localcartesian-0.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "08e9dd58ff9da1d99323f004b87e50d1c9c70f7479dca7de88ea6b5baf680eae",
"md5": "e17fa944d1210e743b60d9bdbc17adb5",
"sha256": "68a018fb5da11828ca580a915427ad30afe855bbf115c507f73acd40e460d929"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e17fa944d1210e743b60d9bdbc17adb5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 1994373,
"upload_time": "2025-10-23T19:48:14",
"upload_time_iso_8601": "2025-10-23T19:48:14.333971Z",
"url": "https://files.pythonhosted.org/packages/08/e9/dd58ff9da1d99323f004b87e50d1c9c70f7479dca7de88ea6b5baf680eae/localcartesian-0.1.4-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b84a30c7e1e78be14682446ad11e664c1c9dbfd41e67de887ced30ed3a9cf703",
"md5": "9b0ad583e385047a89782c8a98e7b5dc",
"sha256": "b934e124fbe43e93366f276f993e4d05ff5397eee5ce9a3fa0388b83791e5480"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp311-cp311-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "9b0ad583e385047a89782c8a98e7b5dc",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 2220225,
"upload_time": "2025-10-23T19:48:16",
"upload_time_iso_8601": "2025-10-23T19:48:16.169861Z",
"url": "https://files.pythonhosted.org/packages/b8/4a/30c7e1e78be14682446ad11e664c1c9dbfd41e67de887ced30ed3a9cf703/localcartesian-0.1.4-cp311-cp311-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f46f05e2ec1579f4c9c16f6c441d09cfe22079b869777a6d81bd1c4a107a5600",
"md5": "8b2c6b63927d6da702860edc423d403f",
"sha256": "10aa5b3fe9fbffde221cfbbda1f0a0206f0dbcc9df4e6588e27494f703e05664"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "8b2c6b63927d6da702860edc423d403f",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 2626512,
"upload_time": "2025-10-23T19:48:17",
"upload_time_iso_8601": "2025-10-23T19:48:17.692589Z",
"url": "https://files.pythonhosted.org/packages/f4/6f/05e2ec1579f4c9c16f6c441d09cfe22079b869777a6d81bd1c4a107a5600/localcartesian-0.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "536200a87c6ca3aa37324efa6c872a1eb1434f75172654bfe5ff515bb35e93e5",
"md5": "431b0eaf2f0bfe46cd6ab656f6f1164f",
"sha256": "8e0a106cdca146f75691a318d3849c8942d06a8877ada847b41d25fc6156a0b7"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "431b0eaf2f0bfe46cd6ab656f6f1164f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 1994717,
"upload_time": "2025-10-23T19:48:20",
"upload_time_iso_8601": "2025-10-23T19:48:20.191542Z",
"url": "https://files.pythonhosted.org/packages/53/62/00a87c6ca3aa37324efa6c872a1eb1434f75172654bfe5ff515bb35e93e5/localcartesian-0.1.4-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fd1aee204c33e07ef6997efce5b7d66fbfa622f92206466c1fe9bbe516eba54d",
"md5": "b22529c63746923b2c276c8723f6c206",
"sha256": "bc75f8ea4a32aa7df9203bb7724c9ec9d864ec41a8cb93a299f070e29788e596"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp312-cp312-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "b22529c63746923b2c276c8723f6c206",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 2221023,
"upload_time": "2025-10-23T19:48:21",
"upload_time_iso_8601": "2025-10-23T19:48:21.722403Z",
"url": "https://files.pythonhosted.org/packages/fd/1a/ee204c33e07ef6997efce5b7d66fbfa622f92206466c1fe9bbe516eba54d/localcartesian-0.1.4-cp312-cp312-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ba743ab1aac0e0cde530d3263d2e0c18a2a86287f11c351f61fd07fb9ab0c876",
"md5": "5a624bd1f3b19d2192a95219c8f56b69",
"sha256": "47863d82d29597c28b1d7024c21505f8a708617a96e0be3be47ee0a29c7456e6"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "5a624bd1f3b19d2192a95219c8f56b69",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 2628789,
"upload_time": "2025-10-23T19:48:23",
"upload_time_iso_8601": "2025-10-23T19:48:23.512722Z",
"url": "https://files.pythonhosted.org/packages/ba/74/3ab1aac0e0cde530d3263d2e0c18a2a86287f11c351f61fd07fb9ab0c876/localcartesian-0.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "91846d7e9cef167bafd3b3e5edf423a58e32ea67323c6e532597ce1be22c5115",
"md5": "598cc97237e40c8ca19dda12b2d7320b",
"sha256": "377fd0620a0dc4c666403f7c790d0a5751fec62d86996b632e8a869024b75fb9"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "598cc97237e40c8ca19dda12b2d7320b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 1994760,
"upload_time": "2025-10-23T19:48:25",
"upload_time_iso_8601": "2025-10-23T19:48:25.243251Z",
"url": "https://files.pythonhosted.org/packages/91/84/6d7e9cef167bafd3b3e5edf423a58e32ea67323c6e532597ce1be22c5115/localcartesian-0.1.4-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f917d5aed5ffabcf18c1d86454f861318f9125f8789b368af398f711fe19f7dd",
"md5": "01c0113587c7929419756ddf42ae9fed",
"sha256": "1842fc7382b01d5d8399caa9caa8a1622b2fc649bddc85fde66bba97f9fa66d3"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp313-cp313-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "01c0113587c7929419756ddf42ae9fed",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 2221054,
"upload_time": "2025-10-23T19:48:26",
"upload_time_iso_8601": "2025-10-23T19:48:26.912802Z",
"url": "https://files.pythonhosted.org/packages/f9/17/d5aed5ffabcf18c1d86454f861318f9125f8789b368af398f711fe19f7dd/localcartesian-0.1.4-cp313-cp313-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "784fbc131d6b3c9a18e54d085ec857de8f1418110d69c3ffda35822955f180a3",
"md5": "4df7ed36e22f1e99121ebe4f121b1b0b",
"sha256": "0722324aed2e5c3c3f4c108ec74526f5b2f962d809573f7b19b51795a322742c"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "4df7ed36e22f1e99121ebe4f121b1b0b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 2628476,
"upload_time": "2025-10-23T19:48:29",
"upload_time_iso_8601": "2025-10-23T19:48:29.008431Z",
"url": "https://files.pythonhosted.org/packages/78/4f/bc131d6b3c9a18e54d085ec857de8f1418110d69c3ffda35822955f180a3/localcartesian-0.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "83b479d628038ee8c37b0f8692850c30988a9b6e0d0c2799075d207dffb0d2b4",
"md5": "268f62ad0ab875f00c9125d5f298120e",
"sha256": "49907dca1c6ff505a60934dc289fd333758d8653ca91a3a734959b1a344e1147"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp314-cp314-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "268f62ad0ab875f00c9125d5f298120e",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.9",
"size": 1995018,
"upload_time": "2025-10-23T19:48:30",
"upload_time_iso_8601": "2025-10-23T19:48:30.557742Z",
"url": "https://files.pythonhosted.org/packages/83/b4/79d628038ee8c37b0f8692850c30988a9b6e0d0c2799075d207dffb0d2b4/localcartesian-0.1.4-cp314-cp314-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "010dce62992541c80865384969bb5b1a7df5c1382190e5c4cb61f439ecacf9ae",
"md5": "2c536f4f16513ab89ba8052bf0794b93",
"sha256": "b712bc402a200fc9c7c6baa176634389f551beb80ceec6016c9ad92ecdc0fa4e"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp314-cp314-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "2c536f4f16513ab89ba8052bf0794b93",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.9",
"size": 2221194,
"upload_time": "2025-10-23T19:48:32",
"upload_time_iso_8601": "2025-10-23T19:48:32.499013Z",
"url": "https://files.pythonhosted.org/packages/01/0d/ce62992541c80865384969bb5b1a7df5c1382190e5c4cb61f439ecacf9ae/localcartesian-0.1.4-cp314-cp314-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bc9d0ba8a6e3f9588c6512e126c07978c830344324d15c4d3526f5079f6e2a97",
"md5": "db9d436ade09b59a047f41189baee3ed",
"sha256": "ac67afc82d68343077c7eae389792ae7a8515c65794e1112d1ed3bdf28a29e7d"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "db9d436ade09b59a047f41189baee3ed",
"packagetype": "bdist_wheel",
"python_version": "cp314",
"requires_python": ">=3.9",
"size": 2628605,
"upload_time": "2025-10-23T19:48:34",
"upload_time_iso_8601": "2025-10-23T19:48:34.848684Z",
"url": "https://files.pythonhosted.org/packages/bc/9d/0ba8a6e3f9588c6512e126c07978c830344324d15c4d3526f5079f6e2a97/localcartesian-0.1.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "97b215b57acd7ecfd524eaeeaf15f33ecf73d02aec8d39598ac5d0a7bb48ad68",
"md5": "c1dc81947aaebccce3d540e4e9b3b119",
"sha256": "5d99854beb52d091368428e73bcfba9327e44fb420f33ebda009d74017d066ce"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c1dc81947aaebccce3d540e4e9b3b119",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 1992943,
"upload_time": "2025-10-23T19:48:36",
"upload_time_iso_8601": "2025-10-23T19:48:36.800179Z",
"url": "https://files.pythonhosted.org/packages/97/b2/15b57acd7ecfd524eaeeaf15f33ecf73d02aec8d39598ac5d0a7bb48ad68/localcartesian-0.1.4-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "06d32e2d2e06b37a9f0d247c6d7b58a7c1bdfffbc136797db8e93a94dd00d8b3",
"md5": "20df20ef63bc9523addca256d09d10cc",
"sha256": "338f7c4ffd04352e3312d5b17e79954e0256f62b8296822e1320da9b95228f45"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp39-cp39-macosx_11_0_x86_64.whl",
"has_sig": false,
"md5_digest": "20df20ef63bc9523addca256d09d10cc",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 2218955,
"upload_time": "2025-10-23T19:48:38",
"upload_time_iso_8601": "2025-10-23T19:48:38.598599Z",
"url": "https://files.pythonhosted.org/packages/06/d3/2e2d2e06b37a9f0d247c6d7b58a7c1bdfffbc136797db8e93a94dd00d8b3/localcartesian-0.1.4-cp39-cp39-macosx_11_0_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4c066025c4c946df27e92c5619be545c6ea00c82151377e32bbe393ddf75195d",
"md5": "71d77e6078b82232001ccbbe1b74ae2f",
"sha256": "0e26ddcfdae8ed4a7f68d4d30686b5d8da32c4053ffe03e6644bfa9d87246364"
},
"downloads": -1,
"filename": "localcartesian-0.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "71d77e6078b82232001ccbbe1b74ae2f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 2625427,
"upload_time": "2025-10-23T19:48:40",
"upload_time_iso_8601": "2025-10-23T19:48:40.121763Z",
"url": "https://files.pythonhosted.org/packages/4c/06/6025c4c946df27e92c5619be545c6ea00c82151377e32bbe393ddf75195d/localcartesian-0.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b780915beb4ffa2cc2584785160601913c2747ba4d6dc40a945b3cd8ff5fe5b6",
"md5": "1883679153aac7b5f48b20b7845e77cb",
"sha256": "b4f76afe23d3e16acb09c7be6a202066f3c0b4a7672bc3b9b2f11589aa0158cf"
},
"downloads": -1,
"filename": "localcartesian-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "1883679153aac7b5f48b20b7845e77cb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 44057,
"upload_time": "2025-10-23T19:48:41",
"upload_time_iso_8601": "2025-10-23T19:48:41.772057Z",
"url": "https://files.pythonhosted.org/packages/b7/80/915beb4ffa2cc2584785160601913c2747ba4d6dc40a945b3cd8ff5fe5b6/localcartesian-0.1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 19:48:41",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "localcartesian"
}