pygeodesic


Namepygeodesic JSON
Version 0.1.11 PyPI version JSON
download
home_pagehttps://github.com/mhogg/pygeodesic
SummaryPython library for calculating geodesic distance on triangular based surface meshes
upload_time2024-11-26 20:54:23
maintainerNone
docs_urlNone
authorMichael Hogg
requires_python>=3.9
licenseMIT license
keywords geodesic distance path triangle mesh python cython
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pygeodesic

Python library to compute geodesic distance over a triangular based surface mesh.

A Cython wrapper of the C++ code by [Kirsanov](https://code.google.com/archive/p/geodesic/), which is an implementation of the exact geodesic algorithm for triangular mesh first described by Mitchell, Mount and Papadimitriou in 1987.

`pygeodesic` is similar to other libraries on PyPi (such as [gdist](https://pypi.org/project/gdist/) and [tvb-gdist](https://pypi.org/project/tvb-gdist/)), but:
* provides a wrapper of the GeodesicAlgorithmExact class
* exposes geodesic path (not just geodesic distance)
* licensed under MIT license similar to the orginal Kirsanov C++ code, rather than GPL

A good alternative to `pygeodesic` is [potpourri3d](https://pypi.org/project/potpourri3d/), which uses the *heat method* and *vector heat method* to compute geodesic distance over surfaces and point clouds. However, this library does not currently output the geodesic path on the surface.

## Requirements

A C++ compiler is required if you are not installing one of the precompiled wheels. Although `pygeodesic` is a Cython wrapper, Cython is not required as the cythonized C++ file is also provided.

[VTK](https://pypi.org/project/vtk/) is used for visualisation in the example notebooks.


## Installation

Install from PyPi:
```
pip install pygeodesic
```

Installation from source (from within folder containing `setup.py`):
```
python setup.py install
```

## Usage

Loading pygeodesic:
```python
import pygeodesic.geodesic as geodesic
```

To read the mesh files provided with the original C++ code:
```python
filename = r'data/flat_triangular_mesh.txt'
result = geodesic.read_mesh_from_file(filename)
if result:
    points, faces = result
```

To calculate the geodesic distance and path between two points (the *source* and the *target*) on the mesh:
```python
# Initialise the PyGeodesicAlgorithmExact class instance
geoalg = geodesic.PyGeodesicAlgorithmExact(points, faces)

# Define the source and target point ids with respect to the points array
sourceIndex = 25
targetIndex = 97

# Compute the geodesic distance and the path
distance, path = geoalg.geodesicDistance(sourceIndex, targetIndex)
```

To calculate the geodesic distances from a single point (the source point) to all other points on the mesh:
```python
source_indices = np.array([25])
target_indices = None
distances, best_source = geoalg.geodesicDistances(source_indices, target_indices)
```

To calculate the geodesic distances from two source points to 3 target points:
```python
source_indices = np.array([25,100]) 
target_indices = np.array([0,10,50])
distances, best_source = geoalg.geodesicDistances(source_indices, target_indices)
```

For more detail, a Jupyter notebook is provided in the examples folder to show how to use `pygeodesic` to compute geodesic distances and paths.

## Example using the Stanford Bunny

A Jupyter notebook is provided showing how to use `pygeodesic` to calculate the geodesic distance and path using the Stanford Bunny as an example.

<img src="https://github.com/mhogg/pygeodesic/blob/main/images/stanford_bunny_geodesic_path.png?raw=true" height="400"/>




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/mhogg/pygeodesic",
    "name": "pygeodesic",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "geodesic, distance, path, triangle, mesh, python, cython",
    "author": "Michael Hogg",
    "author_email": "michael.christopher.hogg@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/66/33/174106049bdea633e537f14fc39ebc68f2f97994591911b4e64e4870803c/pygeodesic-0.1.11.tar.gz",
    "platform": null,
    "description": "# pygeodesic\n\nPython library to compute geodesic distance over a triangular based surface mesh.\n\nA Cython wrapper of the C++ code by [Kirsanov](https://code.google.com/archive/p/geodesic/), which is an implementation of the exact geodesic algorithm for triangular mesh first described by Mitchell, Mount and Papadimitriou in 1987.\n\n`pygeodesic` is similar to other libraries on PyPi (such as [gdist](https://pypi.org/project/gdist/) and [tvb-gdist](https://pypi.org/project/tvb-gdist/)), but:\n* provides a wrapper of the GeodesicAlgorithmExact class\n* exposes geodesic path (not just geodesic distance)\n* licensed under MIT license similar to the orginal Kirsanov C++ code, rather than GPL\n\nA good alternative to `pygeodesic` is [potpourri3d](https://pypi.org/project/potpourri3d/), which uses the *heat method* and *vector heat method* to compute geodesic distance over surfaces and point clouds. However, this library does not currently output the geodesic path on the surface.\n\n## Requirements\n\nA C++ compiler is required if you are not installing one of the precompiled wheels. Although `pygeodesic` is a Cython wrapper, Cython is not required as the cythonized C++ file is also provided.\n\n[VTK](https://pypi.org/project/vtk/) is used for visualisation in the example notebooks.\n\n\n## Installation\n\nInstall from PyPi:\n```\npip install pygeodesic\n```\n\nInstallation from source (from within folder containing `setup.py`):\n```\npython setup.py install\n```\n\n## Usage\n\nLoading pygeodesic:\n```python\nimport pygeodesic.geodesic as geodesic\n```\n\nTo read the mesh files provided with the original C++ code:\n```python\nfilename = r'data/flat_triangular_mesh.txt'\nresult = geodesic.read_mesh_from_file(filename)\nif result:\n    points, faces = result\n```\n\nTo calculate the geodesic distance and path between two points (the *source* and the *target*) on the mesh:\n```python\n# Initialise the PyGeodesicAlgorithmExact class instance\ngeoalg = geodesic.PyGeodesicAlgorithmExact(points, faces)\n\n# Define the source and target point ids with respect to the points array\nsourceIndex = 25\ntargetIndex = 97\n\n# Compute the geodesic distance and the path\ndistance, path = geoalg.geodesicDistance(sourceIndex, targetIndex)\n```\n\nTo calculate the geodesic distances from a single point (the source point) to all other points on the mesh:\n```python\nsource_indices = np.array([25])\ntarget_indices = None\ndistances, best_source = geoalg.geodesicDistances(source_indices, target_indices)\n```\n\nTo calculate the geodesic distances from two source points to 3 target points:\n```python\nsource_indices = np.array([25,100]) \ntarget_indices = np.array([0,10,50])\ndistances, best_source = geoalg.geodesicDistances(source_indices, target_indices)\n```\n\nFor more detail, a Jupyter notebook is provided in the examples folder to show how to use `pygeodesic` to compute geodesic distances and paths.\n\n## Example using the Stanford Bunny\n\nA Jupyter notebook is provided showing how to use `pygeodesic` to calculate the geodesic distance and path using the Stanford Bunny as an example.\n\n<img src=\"https://github.com/mhogg/pygeodesic/blob/main/images/stanford_bunny_geodesic_path.png?raw=true\" height=\"400\"/>\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT license",
    "summary": "Python library for calculating geodesic distance on triangular based surface meshes",
    "version": "0.1.11",
    "project_urls": {
        "Download": "https://github.com/mhogg/pygeodesic/releases",
        "Homepage": "https://github.com/mhogg/pygeodesic"
    },
    "split_keywords": [
        "geodesic",
        " distance",
        " path",
        " triangle",
        " mesh",
        " python",
        " cython"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d467b82ededbd6f5b1b1383053f88df5ffd16c66ed0623a8e778787458569bb",
                "md5": "c37e5dadcf817da234f2b9c61af203d2",
                "sha256": "aad31c623cfe122cac223a7e603fc30ba6b8a56436d0a986fb1f60045c635e0c"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c37e5dadcf817da234f2b9c61af203d2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 258774,
            "upload_time": "2024-11-26T20:53:56",
            "upload_time_iso_8601": "2024-11-26T20:53:56.382469Z",
            "url": "https://files.pythonhosted.org/packages/5d/46/7b82ededbd6f5b1b1383053f88df5ffd16c66ed0623a8e778787458569bb/pygeodesic-0.1.11-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c0b0b768a59be46f633f1ada3f818de630c73265867dc8b0ff2a1e6dc2b80ffc",
                "md5": "2530841f655d2375c66727ba5b43f8c3",
                "sha256": "e66ecde93fa2ec3362c0d80aacc2270ad4b5882d4835444bff34223f6d6f5f51"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2530841f655d2375c66727ba5b43f8c3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 253077,
            "upload_time": "2024-11-26T20:53:58",
            "upload_time_iso_8601": "2024-11-26T20:53:58.167975Z",
            "url": "https://files.pythonhosted.org/packages/c0/b0/b768a59be46f633f1ada3f818de630c73265867dc8b0ff2a1e6dc2b80ffc/pygeodesic-0.1.11-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1a66c134db3ed52a1c968d755620145381379478c7a4c451f0d3e58e898454a4",
                "md5": "e7cc453d7cb150966aa924edfdd693a3",
                "sha256": "32a318f41f0910579a85aeadf2810c815f41e33d06d5abba3d9c3b475838b5cc"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e7cc453d7cb150966aa924edfdd693a3",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 986273,
            "upload_time": "2024-11-26T20:53:59",
            "upload_time_iso_8601": "2024-11-26T20:53:59.966744Z",
            "url": "https://files.pythonhosted.org/packages/1a/66/c134db3ed52a1c968d755620145381379478c7a4c451f0d3e58e898454a4/pygeodesic-0.1.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "67b41a869fe63d296073c6d71f825cc4a84584348fe93a2bb1afb405139ce531",
                "md5": "21e64991ff5c7d3988fbfa174b70612c",
                "sha256": "bcb310b9fa23e869f0662d0ceaeed3497eaccaa8165b2d60a37d1484069c2e7e"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "21e64991ff5c7d3988fbfa174b70612c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1337184,
            "upload_time": "2024-11-26T20:54:01",
            "upload_time_iso_8601": "2024-11-26T20:54:01.780424Z",
            "url": "https://files.pythonhosted.org/packages/67/b4/1a869fe63d296073c6d71f825cc4a84584348fe93a2bb1afb405139ce531/pygeodesic-0.1.11-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "85a6300133dfa4f0b33276763fbdd94550829e33401ecc2893cb3b3aca5cf7e7",
                "md5": "df167b21a6ccd387292011da084c2069",
                "sha256": "02228e385e8ae35d520f9de8872063f88a1faf475e396a3363617b83a2fb51d3"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "df167b21a6ccd387292011da084c2069",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 258983,
            "upload_time": "2024-11-26T20:54:03",
            "upload_time_iso_8601": "2024-11-26T20:54:03.650371Z",
            "url": "https://files.pythonhosted.org/packages/85/a6/300133dfa4f0b33276763fbdd94550829e33401ecc2893cb3b3aca5cf7e7/pygeodesic-0.1.11-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "42e14404622c488a86fa255578ffa6366db26b008e127c917003fb5cc1c0ba5c",
                "md5": "518649a2e5866498f1a068259cf10ce8",
                "sha256": "a6bde2fef5e06e6d3579bae9273dde166e068abd67616c76b96be10cd70ef9e9"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "518649a2e5866498f1a068259cf10ce8",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 252850,
            "upload_time": "2024-11-26T20:54:05",
            "upload_time_iso_8601": "2024-11-26T20:54:05.402290Z",
            "url": "https://files.pythonhosted.org/packages/42/e1/4404622c488a86fa255578ffa6366db26b008e127c917003fb5cc1c0ba5c/pygeodesic-0.1.11-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b9ecd246386d325c37e78508cd92d7766b379ed34591189c578864e623d3839",
                "md5": "1e3bb1e2104391eab2e48540a9cf1f84",
                "sha256": "054242d85e7c7ed0c65d8de94aebb869c0a29b0b1719bfbc4f321088159e5255"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1e3bb1e2104391eab2e48540a9cf1f84",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1013099,
            "upload_time": "2024-11-26T20:54:06",
            "upload_time_iso_8601": "2024-11-26T20:54:06.481724Z",
            "url": "https://files.pythonhosted.org/packages/2b/9e/cd246386d325c37e78508cd92d7766b379ed34591189c578864e623d3839/pygeodesic-0.1.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6889bcd63cb7bee31fffe526bdd31f4a65abe40beacba894a7f208ed10ee9576",
                "md5": "66a1117d5bd8ab98fea123f2cf1b038e",
                "sha256": "e8aad25facf737ce70669e6bf16056426ae0f786721f272077ee6fbc2dfdff1c"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "66a1117d5bd8ab98fea123f2cf1b038e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1337934,
            "upload_time": "2024-11-26T20:54:07",
            "upload_time_iso_8601": "2024-11-26T20:54:07.676320Z",
            "url": "https://files.pythonhosted.org/packages/68/89/bcd63cb7bee31fffe526bdd31f4a65abe40beacba894a7f208ed10ee9576/pygeodesic-0.1.11-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d44bfa724ded65584cff1b024016783614393c770a3b8ff9e0b2b2352153f955",
                "md5": "84ae108e42e4e38923985c14014c2e0e",
                "sha256": "4bb9675435dbe1291989f8d3b33b80421e6ac7da819fe362fa82eab5519a16e2"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "84ae108e42e4e38923985c14014c2e0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 258144,
            "upload_time": "2024-11-26T20:54:08",
            "upload_time_iso_8601": "2024-11-26T20:54:08.838128Z",
            "url": "https://files.pythonhosted.org/packages/d4/4b/fa724ded65584cff1b024016783614393c770a3b8ff9e0b2b2352153f955/pygeodesic-0.1.11-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "505a61e8e9f8616427cf29310da628d5e5a836892c6a0503a08fee3439140285",
                "md5": "1658e1e74eb3600ea52e10345d71033c",
                "sha256": "fc730367f4b2f7067c6f79269097d00eda969ea044c6d123db0769abca306638"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1658e1e74eb3600ea52e10345d71033c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 252273,
            "upload_time": "2024-11-26T20:54:09",
            "upload_time_iso_8601": "2024-11-26T20:54:09.858839Z",
            "url": "https://files.pythonhosted.org/packages/50/5a/61e8e9f8616427cf29310da628d5e5a836892c6a0503a08fee3439140285/pygeodesic-0.1.11-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6b3d972e2207d5845b6129f553376010b0bddecc2b1b74799e186d97e0f326d6",
                "md5": "7b94215e08e3e76de6c562256bbc9464",
                "sha256": "495101cd634df7afe108a63419a864c77098c490608934c642b9d6eabc946ec1"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7b94215e08e3e76de6c562256bbc9464",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1016926,
            "upload_time": "2024-11-26T20:54:10",
            "upload_time_iso_8601": "2024-11-26T20:54:10.904222Z",
            "url": "https://files.pythonhosted.org/packages/6b/3d/972e2207d5845b6129f553376010b0bddecc2b1b74799e186d97e0f326d6/pygeodesic-0.1.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e60b03af381ad00eaf56dde8156d48c0c4b7c5b928dd128221619d8b3cfea901",
                "md5": "b58b27a66867c6367e95c6e8f7ae4591",
                "sha256": "585e6fd35babbda2fa9b87f23d05e0ec26e1e416e069997ed137ac04b94f05b9"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b58b27a66867c6367e95c6e8f7ae4591",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1335932,
            "upload_time": "2024-11-26T20:54:12",
            "upload_time_iso_8601": "2024-11-26T20:54:12.072741Z",
            "url": "https://files.pythonhosted.org/packages/e6/0b/03af381ad00eaf56dde8156d48c0c4b7c5b928dd128221619d8b3cfea901/pygeodesic-0.1.11-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1f03b7e5e98cc2a1a738d07daf6a2736b6c83c394e997ddca41a675eed11ae1e",
                "md5": "9d4b2697df442a8f83b1c8d5879a08f4",
                "sha256": "223e77235d0cefafb9b37ab2bcd8b99f94d4f819dfcf18c32e6f83d270eaf614"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9d4b2697df442a8f83b1c8d5879a08f4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 257300,
            "upload_time": "2024-11-26T20:54:13",
            "upload_time_iso_8601": "2024-11-26T20:54:13.484974Z",
            "url": "https://files.pythonhosted.org/packages/1f/03/b7e5e98cc2a1a738d07daf6a2736b6c83c394e997ddca41a675eed11ae1e/pygeodesic-0.1.11-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28ea37deeb6c02599048ee1a05750a119744e394d2f746f2f51cf5e02f030ed2",
                "md5": "bbfe80027dce83bdb90dcee33c6050e4",
                "sha256": "4ebb75522b7e668a056ae33958d912dfbf5f6926048eb581cd1411c109a60475"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bbfe80027dce83bdb90dcee33c6050e4",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 251506,
            "upload_time": "2024-11-26T20:54:15",
            "upload_time_iso_8601": "2024-11-26T20:54:15.160962Z",
            "url": "https://files.pythonhosted.org/packages/28/ea/37deeb6c02599048ee1a05750a119744e394d2f746f2f51cf5e02f030ed2/pygeodesic-0.1.11-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7dd4c0e2fa21ca048e0199a3bee1438d5fef6591b65d2c856d8b7934c9bb5af7",
                "md5": "f9d25de77f24ce0f7283cd4c5095709f",
                "sha256": "667dbfc3692b0d205140275157e6275d05910de9b3cecadff2d439ebb5386e8d"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f9d25de77f24ce0f7283cd4c5095709f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1013238,
            "upload_time": "2024-11-26T20:54:16",
            "upload_time_iso_8601": "2024-11-26T20:54:16.235642Z",
            "url": "https://files.pythonhosted.org/packages/7d/d4/c0e2fa21ca048e0199a3bee1438d5fef6591b65d2c856d8b7934c9bb5af7/pygeodesic-0.1.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9829967ad2b817a530a866ee9531452439bd1f1bf61c564b2fb85f37741795a5",
                "md5": "ddb809e4d1f3e21cef8a174bb26d1222",
                "sha256": "a76e838faf172001a12ca4cab6f6df17fc5e8cba13dd2317675df83e8a14c9ae"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ddb809e4d1f3e21cef8a174bb26d1222",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1335787,
            "upload_time": "2024-11-26T20:54:17",
            "upload_time_iso_8601": "2024-11-26T20:54:17.425899Z",
            "url": "https://files.pythonhosted.org/packages/98/29/967ad2b817a530a866ee9531452439bd1f1bf61c564b2fb85f37741795a5/pygeodesic-0.1.11-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdeb8c8097db37f26883d0cad27eb6b8ddf1fbc1c71767a5da55b4086325822e",
                "md5": "3d5f4641662b292a805a69bb7bf3e29c",
                "sha256": "22606383c2de4d23c684508a23275e785759b34f78ea9b60222fe520277ab820"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3d5f4641662b292a805a69bb7bf3e29c",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 149450,
            "upload_time": "2024-11-26T20:54:18",
            "upload_time_iso_8601": "2024-11-26T20:54:18.562752Z",
            "url": "https://files.pythonhosted.org/packages/cd/eb/8c8097db37f26883d0cad27eb6b8ddf1fbc1c71767a5da55b4086325822e/pygeodesic-0.1.11-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5663c3ad7b8aca07942a9d6726145ce9838a5c27b22c5aaa99d554c5749bd330",
                "md5": "c5535567fbc7d389b1789c8443d52284",
                "sha256": "b98e74f6b22dce80c74ed1aa4fedc01ca1b13cd0b660fdeb2732a15cdaa28d6e"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "c5535567fbc7d389b1789c8443d52284",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 143697,
            "upload_time": "2024-11-26T20:54:19",
            "upload_time_iso_8601": "2024-11-26T20:54:19.534509Z",
            "url": "https://files.pythonhosted.org/packages/56/63/c3ad7b8aca07942a9d6726145ce9838a5c27b22c5aaa99d554c5749bd330/pygeodesic-0.1.11-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0d918d037492bd6fc47edaac97a8bea86df8215a13c51063cdf3c3dd8ddc7373",
                "md5": "52e2b733cf42a16e515bd08e87f54d94",
                "sha256": "4f46c00dd763ff6bebae6c5fc2437b115bd59d0a0b4f9d0158f36389680f1f1a"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "52e2b733cf42a16e515bd08e87f54d94",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 877114,
            "upload_time": "2024-11-26T20:54:20",
            "upload_time_iso_8601": "2024-11-26T20:54:20.624503Z",
            "url": "https://files.pythonhosted.org/packages/0d/91/8d037492bd6fc47edaac97a8bea86df8215a13c51063cdf3c3dd8ddc7373/pygeodesic-0.1.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5abcaa653f5c817213698e75be0006cd426dcebc29714685810b21bbafde2410",
                "md5": "3dd7220271fdfc3dcd46d7f051f2cb61",
                "sha256": "6c8fc3a92087e9757e0c4f7ebf8dd47cb031367bbf48c0277392c852b4b6e609"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3dd7220271fdfc3dcd46d7f051f2cb61",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1227788,
            "upload_time": "2024-11-26T20:54:21",
            "upload_time_iso_8601": "2024-11-26T20:54:21.910840Z",
            "url": "https://files.pythonhosted.org/packages/5a/bc/aa653f5c817213698e75be0006cd426dcebc29714685810b21bbafde2410/pygeodesic-0.1.11-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6633174106049bdea633e537f14fc39ebc68f2f97994591911b4e64e4870803c",
                "md5": "b16534fa2ca253720fab0220be0ce83b",
                "sha256": "a9b54eb20d57f5499d8b2a4a67ece675a44c6fc8d00b11e8c14c8c99edeee5ed"
            },
            "downloads": -1,
            "filename": "pygeodesic-0.1.11.tar.gz",
            "has_sig": false,
            "md5_digest": "b16534fa2ca253720fab0220be0ce83b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 36275,
            "upload_time": "2024-11-26T20:54:23",
            "upload_time_iso_8601": "2024-11-26T20:54:23.088241Z",
            "url": "https://files.pythonhosted.org/packages/66/33/174106049bdea633e537f14fc39ebc68f2f97994591911b4e64e4870803c/pygeodesic-0.1.11.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-26 20:54:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "mhogg",
    "github_project": "pygeodesic",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pygeodesic"
}
        
Elapsed time: 0.35572s