# LuPNT
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/MacOS/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Windows/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Ubuntu/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Style/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Install/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Python/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Examples/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![Documentation Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Docs/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI Release](https://img.shields.io/pypi/v/pylupnt.svg)](https://pypi.org/project/pylupnt)
[![Python Versions](https://img.shields.io/pypi/pyversions/pylupnt)](https://pypi.org/project/pylupnt)
[![codecov](https://codecov.io/gh/Stanford-NavLab/LuPNT/branch/guillemc/graph/badge.svg)](https://codecov.io/gh/Stanford-NavLab/LuPNT)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Stanford-NavLab/LuPNT/development?labpath=examples%2Fpython%2Fnotebooks%2Fex_frozen_orbits.ipynb)
[![Open In Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1yhHImp3hB5P8dadLlv0CcYWQWLabNfuh)
<!-- [![Conda Release](https://img.shields.io/conda/v/conda-forge/pylupnt)](https://anaconda.org/conda-forge/pylupnt) -->
<p align="center">
<img src="https://github.com/Stanford-NavLab/LuPNT/blob/guillemc/docs/_static/LuPNT_background.png?raw=true" width="auto" />
</p>
`LuPNT` is an open-source C++/Python library for Lunar Positioning, Navigation, and Timing (PNT) Research. This project is a product of the [Stanford NAV Lab](https://navlab.stanford.edu/).
If using this project in your own work please cite the following:
```bibtex
@inproceedings{IiyamaCasadesus2023,
title = {LuPNT: Open-Souce Simulator for Lunar Positioning, Navigation, and Timing},
author={Iiyama, Keidai and Casadesus Vila, Guillem and Gao, Grace},
booktitle={Proceedings of the Institute of Navigation Gnss+ conference (ION Gnss+ 2023)},
institution = {Stanford University},
year = {2023},
url = {https://github.com/Stanford-NavLab/LuPNT},
}
```
## Features
- [Modern CMake practices](https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/)
- Clean separation of library and executable code
- Integrated test suite
- Continuous integration via [GitHub Actions](https://help.github.com/en/actions/)
- Code coverage via [codecov](https://codecov.io)
- Code formatting enforced by [clang-format](https://clang.llvm.org/docs/ClangFormat.html) and [cmake-format](https://github.com/cheshirekow/cmake_format) via [Format.cmake](https://github.com/Stanford-NavLab/Format.cmake)
- Reproducible dependency management via [CPM.cmake](https://github.com/Stanford-NavLab/CPM.cmake)
- Installable target with automatic versioning information and header generation via [PackageProject.cmake](https://github.com/Stanford-NavLab/PackageProject.cmake)
- Automatic [documentation](https://Stanford-NavLab.github.io/LuPNT) and deployment with [Doxygen](https://www.doxygen.nl) and [GitHub Pages](https://pages.github.com)
- Support for [sanitizer tools, and more](#additional-tools)
## Usage
To cleanly separate the library and subproject code, the outer `CMakeList.txt` only defines the library itself while the tests and other subprojects are self-contained in their own directories.
During development it is usually convenient to [build all subprojects at once](#build-everything-at-once).
### Dependencies
LuPNT requires [OpenMP](https://www.openmp.org) library for multiprocessing and a data directory.
The installation scripts for MacOS, Ubuntu, and Windows can be found under `scripts`.
Note that the data directory can be place anywhere as long as its path is correctly set.
Execute the scripts before building the library.
### Build and run the examples
Use the following command to build and run the executable target.
```bash
cmake -S examples/cpp -B build/examples
cmake --build build/examples -j4
./build_examples/examples/<example-name> --help
```
### Build and run test suite
Use the following commands from the project's root directory to run the test suite.
```bash
cmake -S test -B build/test
cmake --build build/test -j4
CTEST_OUTPUT_ON_FAILURE=1 cmake --build build/test --target test
# or simply call the executable:
./build/test/LuPNTTests
```
To collect code coverage information, run CMake with the `-DENABLE_TEST_COVERAGE=1` option.
### Run clang-format
Use the following commands from the project's root directory to check and fix C++ and CMake source style.
This requires _clang-format_, _cmake-format_ and _pyyaml_ to be installed on the current system.
```bash
cmake -S test -B build/test
# view changes
cmake --build build/test --target format
# apply changes
cmake --build build/test --target fix-format
```
See [Format.cmake](https://github.com/Stanford-NavLab/Format.cmake) for details.
These dependencies can be easily installed using pip.
```bash
pip install clang-format==14.0.6 cmake_format==0.6.11 pyyaml
```
### Build the documentation
The documentation is automatically built and [published](https://Stanford-NavLab.github.io/LuPNT) whenever a [GitHub Release](https://help.github.com/en/github/administering-a-repository/managing-releases-in-a-repository) is created.
To manually build documentation, call the following command.
```bash
cmake -S documentation -B build/doc
cmake --build build/doc --target GenerateDocs
# view the docs
open build/doc/doxygen/html/index.html
```
To build the documentation locally, you will need Doxygen, jinja2 and Pygments installed on your system.
### Build everything at once
The project also includes an `all` directory that allows building all targets at the same time.
This is useful during development, as it exposes all subprojects to your IDE and avoids redundant builds of the library.
```bash
cmake -S all -B build
cmake --build build -j4
# run tests
./build/test/LuPNTTests
# format code
cmake --build build --target fix-format
# run standalone
./build/standalone/LuPNT --help
# build docs
cmake --build build --target GenerateDocs
```
### Additional tools
The test and standalone subprojects include the [tools.cmake](cmake/tools.cmake) file which is used to import additional tools on-demand through CMake configuration arguments.
The following are currently supported.
#### Sanitizers
Sanitizers can be enabled by configuring CMake with `-DUSE_SANITIZER=<Address | Memory | MemoryWithOrigins | Undefined | Thread | Leak | 'Address;Undefined'>`.
#### Static Analyzers
Static Analyzers can be enabled by setting `-DUSE_STATIC_ANALYZER=<clang-tidy | iwyu | cppcheck>`, or a combination of those in quotation marks, separated by semicolons.
By default, analyzers will automatically find configuration files such as `.clang-format`.
Additional arguments can be passed to the analyzers by setting the `CLANG_TIDY_ARGS`, `IWYU_ARGS` or `CPPCHECK_ARGS` variables.
#### Ccache
Ccache can be enabled by configuring with `-DUSE_CCACHE=<ON | OFF>`.
Raw data
{
"_id": null,
"home_page": null,
"name": "pylupnt",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.10",
"maintainer_email": "\"Guillem Casadesus Vila, Keidai Iiyama\" <guillemc@stanford.edu;kiiyama@stanford.edu>",
"keywords": "pybind11, cibuildwheel, c++, pypi, numpy, simple, example, wheel, pypi, conda-forge",
"author": null,
"author_email": "\"Guillem Casadesus Vila, Keidai Iiyama\" <guillemc@stanford.edu;kiiyama@stanford.edu>",
"download_url": "https://files.pythonhosted.org/packages/e2/6d/f9ed2f4e4687812d710378839f259e1aa98ecdbec1e961647ee31b96194a/pylupnt-0.0.3.tar.gz",
"platform": null,
"description": "# LuPNT\n\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/MacOS/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Windows/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Ubuntu/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Style/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Install/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Python/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Actions Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Examples/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![Documentation Status](https://github.com/Stanford-NavLab/LuPNT/workflows/Docs/badge.svg)](https://github.com/Stanford-NavLab/LuPNT/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI Release](https://img.shields.io/pypi/v/pylupnt.svg)](https://pypi.org/project/pylupnt)\n[![Python Versions](https://img.shields.io/pypi/pyversions/pylupnt)](https://pypi.org/project/pylupnt)\n[![codecov](https://codecov.io/gh/Stanford-NavLab/LuPNT/branch/guillemc/graph/badge.svg)](https://codecov.io/gh/Stanford-NavLab/LuPNT)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/Stanford-NavLab/LuPNT/development?labpath=examples%2Fpython%2Fnotebooks%2Fex_frozen_orbits.ipynb)\n[![Open In Collab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1yhHImp3hB5P8dadLlv0CcYWQWLabNfuh)\n\n\n<!-- [![Conda Release](https://img.shields.io/conda/v/conda-forge/pylupnt)](https://anaconda.org/conda-forge/pylupnt) -->\n\n<p align=\"center\">\n <img src=\"https://github.com/Stanford-NavLab/LuPNT/blob/guillemc/docs/_static/LuPNT_background.png?raw=true\" width=\"auto\" />\n</p>\n\n`LuPNT` is an open-source C++/Python library for Lunar Positioning, Navigation, and Timing (PNT) Research. This project is a product of the [Stanford NAV Lab](https://navlab.stanford.edu/).\nIf using this project in your own work please cite the following:\n\n```bibtex\n@inproceedings{IiyamaCasadesus2023,\n title = {LuPNT: Open-Souce Simulator for Lunar Positioning, Navigation, and Timing},\n author={Iiyama, Keidai and Casadesus Vila, Guillem and Gao, Grace},\n booktitle={Proceedings of the Institute of Navigation Gnss+ conference (ION Gnss+ 2023)},\n institution = {Stanford University},\n year = {2023},\n url = {https://github.com/Stanford-NavLab/LuPNT},\n}\n```\n\n## Features\n\n- [Modern CMake practices](https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/)\n- Clean separation of library and executable code\n- Integrated test suite\n- Continuous integration via [GitHub Actions](https://help.github.com/en/actions/)\n- Code coverage via [codecov](https://codecov.io)\n- Code formatting enforced by [clang-format](https://clang.llvm.org/docs/ClangFormat.html) and [cmake-format](https://github.com/cheshirekow/cmake_format) via [Format.cmake](https://github.com/Stanford-NavLab/Format.cmake)\n- Reproducible dependency management via [CPM.cmake](https://github.com/Stanford-NavLab/CPM.cmake)\n- Installable target with automatic versioning information and header generation via [PackageProject.cmake](https://github.com/Stanford-NavLab/PackageProject.cmake)\n- Automatic [documentation](https://Stanford-NavLab.github.io/LuPNT) and deployment with [Doxygen](https://www.doxygen.nl) and [GitHub Pages](https://pages.github.com)\n- Support for [sanitizer tools, and more](#additional-tools)\n\n## Usage\n\nTo cleanly separate the library and subproject code, the outer `CMakeList.txt` only defines the library itself while the tests and other subprojects are self-contained in their own directories.\nDuring development it is usually convenient to [build all subprojects at once](#build-everything-at-once).\n\n### Dependencies\n\nLuPNT requires [OpenMP](https://www.openmp.org) library for multiprocessing and a data directory.\nThe installation scripts for MacOS, Ubuntu, and Windows can be found under `scripts`.\nNote that the data directory can be place anywhere as long as its path is correctly set.\nExecute the scripts before building the library.\n\n### Build and run the examples\n\nUse the following command to build and run the executable target.\n\n```bash\ncmake -S examples/cpp -B build/examples\ncmake --build build/examples -j4\n./build_examples/examples/<example-name> --help\n```\n\n### Build and run test suite\n\nUse the following commands from the project's root directory to run the test suite.\n\n```bash\ncmake -S test -B build/test\ncmake --build build/test -j4\nCTEST_OUTPUT_ON_FAILURE=1 cmake --build build/test --target test\n\n# or simply call the executable:\n./build/test/LuPNTTests\n```\n\nTo collect code coverage information, run CMake with the `-DENABLE_TEST_COVERAGE=1` option.\n\n### Run clang-format\n\nUse the following commands from the project's root directory to check and fix C++ and CMake source style.\nThis requires _clang-format_, _cmake-format_ and _pyyaml_ to be installed on the current system.\n\n```bash\ncmake -S test -B build/test\n\n# view changes\ncmake --build build/test --target format\n\n# apply changes\ncmake --build build/test --target fix-format\n```\n\nSee [Format.cmake](https://github.com/Stanford-NavLab/Format.cmake) for details.\nThese dependencies can be easily installed using pip.\n\n```bash\npip install clang-format==14.0.6 cmake_format==0.6.11 pyyaml\n```\n\n### Build the documentation\n\nThe documentation is automatically built and [published](https://Stanford-NavLab.github.io/LuPNT) whenever a [GitHub Release](https://help.github.com/en/github/administering-a-repository/managing-releases-in-a-repository) is created.\nTo manually build documentation, call the following command.\n\n```bash\ncmake -S documentation -B build/doc\ncmake --build build/doc --target GenerateDocs\n# view the docs\nopen build/doc/doxygen/html/index.html\n```\n\nTo build the documentation locally, you will need Doxygen, jinja2 and Pygments installed on your system.\n\n### Build everything at once\n\nThe project also includes an `all` directory that allows building all targets at the same time.\nThis is useful during development, as it exposes all subprojects to your IDE and avoids redundant builds of the library.\n\n```bash\ncmake -S all -B build\ncmake --build build -j4\n\n# run tests\n./build/test/LuPNTTests\n# format code\ncmake --build build --target fix-format\n# run standalone\n./build/standalone/LuPNT --help\n# build docs\ncmake --build build --target GenerateDocs\n```\n\n### Additional tools\n\nThe test and standalone subprojects include the [tools.cmake](cmake/tools.cmake) file which is used to import additional tools on-demand through CMake configuration arguments.\nThe following are currently supported.\n\n#### Sanitizers\n\nSanitizers can be enabled by configuring CMake with `-DUSE_SANITIZER=<Address | Memory | MemoryWithOrigins | Undefined | Thread | Leak | 'Address;Undefined'>`.\n\n#### Static Analyzers\n\nStatic Analyzers can be enabled by setting `-DUSE_STATIC_ANALYZER=<clang-tidy | iwyu | cppcheck>`, or a combination of those in quotation marks, separated by semicolons.\nBy default, analyzers will automatically find configuration files such as `.clang-format`.\nAdditional arguments can be passed to the analyzers by setting the `CLANG_TIDY_ARGS`, `IWYU_ARGS` or `CPPCHECK_ARGS` variables.\n\n#### Ccache\n\nCcache can be enabled by configuring with `-DUSE_CCACHE=<ON | OFF>`.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Lunar Positioning, Navigation, and Timing (PNT) library",
"version": "0.0.3",
"project_urls": {
"Documentation": "https://lupnt.readthedocs.io",
"Github": "https://github.com/Stanford-NavLab/LuPNT"
},
"split_keywords": [
"pybind11",
" cibuildwheel",
" c++",
" pypi",
" numpy",
" simple",
" example",
" wheel",
" pypi",
" conda-forge"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "569b1f4ecf355d10281e23ba273241d1511a95a6b7090a8bdd067ea7b233311a",
"md5": "d8f333d530ba859217f96a6dea9a3e21",
"sha256": "b097db1927eecc6ed49a0916565193cd5230b0e82d0a312cf0f57509fff6f3d3"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp310-cp310-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "d8f333d530ba859217f96a6dea9a3e21",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.10",
"size": 13873553,
"upload_time": "2024-09-09T22:03:33",
"upload_time_iso_8601": "2024-09-09T22:03:33.465880Z",
"url": "https://files.pythonhosted.org/packages/56/9b/1f4ecf355d10281e23ba273241d1511a95a6b7090a8bdd067ea7b233311a/pylupnt-0.0.3-cp310-cp310-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c78d4344f3dc48bf76e699f3ceaff02d414ebe6302e89a94ee40d4b62afd7c48",
"md5": "364fc77523dbdcb0df8718279a62cf09",
"sha256": "7a36a5981162cd02d65b3cb5c294a1cc50faf342dac2fd7148aa320c3a70c2fb"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "364fc77523dbdcb0df8718279a62cf09",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<3.13,>=3.10",
"size": 14188834,
"upload_time": "2024-09-09T22:03:36",
"upload_time_iso_8601": "2024-09-09T22:03:36.487341Z",
"url": "https://files.pythonhosted.org/packages/c7/8d/4344f3dc48bf76e699f3ceaff02d414ebe6302e89a94ee40d4b62afd7c48/pylupnt-0.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a66ee2889eac8599ca7e8f2c5a04e953fd65ac3faaf341e45094e72e6a77025",
"md5": "bd70c7ab63e7e272f40c788bfd418d84",
"sha256": "ebc49aeb565d34d846f9389e3384fcd6360dfe911bf4415b01e8e9df7025bba2"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp311-cp311-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "bd70c7ab63e7e272f40c788bfd418d84",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.10",
"size": 13874967,
"upload_time": "2024-09-09T22:03:39",
"upload_time_iso_8601": "2024-09-09T22:03:39.010911Z",
"url": "https://files.pythonhosted.org/packages/1a/66/ee2889eac8599ca7e8f2c5a04e953fd65ac3faaf341e45094e72e6a77025/pylupnt-0.0.3-cp311-cp311-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2c0d777bb269761c680c6eb3292be94bd160cc0f402fdfb915fd248bae7e9cb2",
"md5": "e572c0b80b14dddf6f03295dcd52a95a",
"sha256": "31e1ebdea2211a529dae23eb23fc1b06663020ef0abf479360ab61c8089f3a4d"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e572c0b80b14dddf6f03295dcd52a95a",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<3.13,>=3.10",
"size": 14189312,
"upload_time": "2024-09-09T22:03:41",
"upload_time_iso_8601": "2024-09-09T22:03:41.673958Z",
"url": "https://files.pythonhosted.org/packages/2c/0d/777bb269761c680c6eb3292be94bd160cc0f402fdfb915fd248bae7e9cb2/pylupnt-0.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9cf7e4c0135368c8967d6f424fb2c341b1d2cb26a79dc160b31fcae5890a6f2f",
"md5": "864e5f5d4498dd1b0035d3dcdc0ffff0",
"sha256": "8200e7b735460c1be0d3a9c5b8deded261e9330a5847face4d6d8649044c78f8"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp312-cp312-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "864e5f5d4498dd1b0035d3dcdc0ffff0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.10",
"size": 13879097,
"upload_time": "2024-09-09T22:03:44",
"upload_time_iso_8601": "2024-09-09T22:03:44.236657Z",
"url": "https://files.pythonhosted.org/packages/9c/f7/e4c0135368c8967d6f424fb2c341b1d2cb26a79dc160b31fcae5890a6f2f/pylupnt-0.0.3-cp312-cp312-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b9790cfdc1311f35aa1ec71dcc0f127e3cd82c724256b4e1d3ef001915742d42",
"md5": "780a62d3f270dab2a2c6667fc90b26a5",
"sha256": "affda2c909a5aa0583decfdad534b9001b3b0bb923a128a2e4da7442e615fc37"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "780a62d3f270dab2a2c6667fc90b26a5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<3.13,>=3.10",
"size": 14188140,
"upload_time": "2024-09-09T22:03:46",
"upload_time_iso_8601": "2024-09-09T22:03:46.393958Z",
"url": "https://files.pythonhosted.org/packages/b9/79/0cfdc1311f35aa1ec71dcc0f127e3cd82c724256b4e1d3ef001915742d42/pylupnt-0.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ffb19b498e6df5b5b0420cc37c12dfa8e1bca96a5de594fa54a4d390a2b78100",
"md5": "82405b1e05888612243f55e74775b973",
"sha256": "31c0b0eba1afcb426518b0cbe02e6c9767d427d4d0b835a9e79ab377d7983576"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-pp310-pypy310_pp73-macosx_14_0_arm64.whl",
"has_sig": false,
"md5_digest": "82405b1e05888612243f55e74775b973",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "<3.13,>=3.10",
"size": 13871015,
"upload_time": "2024-09-09T22:03:49",
"upload_time_iso_8601": "2024-09-09T22:03:49.142030Z",
"url": "https://files.pythonhosted.org/packages/ff/b1/9b498e6df5b5b0420cc37c12dfa8e1bca96a5de594fa54a4d390a2b78100/pylupnt-0.0.3-pp310-pypy310_pp73-macosx_14_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9154ab63b3d084e4dcdc6cc0d4b4619d2a104ae1c60d37263884ac845b933321",
"md5": "1515328698c368999a6c0df962073881",
"sha256": "6791dcb7da7643bc84c7027ca549d9a41d561ac24f6205e9f3490239d2257305"
},
"downloads": -1,
"filename": "pylupnt-0.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1515328698c368999a6c0df962073881",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": "<3.13,>=3.10",
"size": 14190651,
"upload_time": "2024-09-09T22:03:51",
"upload_time_iso_8601": "2024-09-09T22:03:51.550464Z",
"url": "https://files.pythonhosted.org/packages/91/54/ab63b3d084e4dcdc6cc0d4b4619d2a104ae1c60d37263884ac845b933321/pylupnt-0.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e26df9ed2f4e4687812d710378839f259e1aa98ecdbec1e961647ee31b96194a",
"md5": "f183451e58870b7445858e981a6d6012",
"sha256": "c245864077c7f3fb01a7cdd70525b306a3a13e0aa6c8369b090c97c3cd0fb729"
},
"downloads": -1,
"filename": "pylupnt-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "f183451e58870b7445858e981a6d6012",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.10",
"size": 38545343,
"upload_time": "2024-09-09T22:03:56",
"upload_time_iso_8601": "2024-09-09T22:03:56.313893Z",
"url": "https://files.pythonhosted.org/packages/e2/6d/f9ed2f4e4687812d710378839f259e1aa98ecdbec1e961647ee31b96194a/pylupnt-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-09 22:03:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Stanford-NavLab",
"github_project": "LuPNT",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pylupnt"
}