diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index b3fdb6e..bccfb59 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -88,10 +88,9 @@ body: - PyPI - Arch User Repository (AUR) - FreshPorts - - Docker + - I used the AppImage - I have compiled the package from source - - I have run Kosmorro with Pipenv - - other + - Other (explain in the description) - type: textarea id: description diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 58cb624..62333dc 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -19,8 +19,8 @@ jobs: sudo gem install ronn wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool sudo chmod +x /usr/local/bin/appimagetool - pip install -U pip pipenv Babel wheel appimage-builder - pipenv install --dev + pip install -U pip poetry appimage-builder + poetry install - name: Build wheel run: | @@ -41,3 +41,8 @@ jobs: with: name: kosmorro.AppImage.zsync path: dist/kosmorro-latest-x86_64.AppImage.zsync + + - name: Run basic command + run: | + chmod +x dist/kosmorro-latest-x86_64.AppImage + ./dist/kosmorro-latest-x86_64.AppImage diff --git a/.github/workflows/dockerfile.yml b/.github/workflows/dockerfile.yml deleted file mode 100644 index 32d6d30..0000000 --- a/.github/workflows/dockerfile.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Docker image - -on: - push: - branches: [master, features] - pull_request: - branches: [master, features] - -jobs: - build-image: - runs-on: ubuntu-latest - - name: Test building Docker image - steps: - - uses: actions/checkout@v1 - - - name: Set up Docker - uses: docker-practice/actions-setup-docker@v1 - - - name: Create image - run: | - docker build -t kosmorro . - - - name: Execute image - run: | - docker run kosmorro kosmorro diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index 76d042e..b4d39f4 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -18,21 +18,20 @@ jobs: python-version: '3.x' - name: Install dependencies run: | - pip install --upgrade pip pipenv - pipenv sync -d + pip install --upgrade pip poetry + poetry install - name: Check i18n run: | - pipenv run pybabel extract --output=/tmp/kosmorro-messages.pot _kosmorro + poetry run pybabel extract --output=/tmp/kosmorro-messages.pot kosmorro echo - - diff=$(diff _kosmorro/locales/messages.pot /tmp/kosmorro-messages.pot | grep '^>') + diff=$(diff kosmorro/locales/messages.pot /tmp/kosmorro-messages.pot | grep '^>') n=$(echo "$diff" | grep -v '> "POT-Creation-Date: ' | wc -l) if [ "$(echo "$diff" | grep -E '^"Generated-By: Babel' | wc -l)" -eq "1" ]; then - echo "❌ You dependencies may be out of date!" + echo "❌ Your dependencies may be out of date!" echo " Please run the following command to fix this:" echo - echo " pipenv sync --dev" + echo " poetry install" echo echo " Then update the messages file:" echo diff --git a/.github/workflows/manpage.yml b/.github/workflows/manpage.yml new file mode 100644 index 0000000..9183a00 --- /dev/null +++ b/.github/workflows/manpage.yml @@ -0,0 +1,28 @@ +name: Man pages + +on: + push: + branches: [master, features] + pull_request: + branches: [master, features] + +jobs: + e2e-tests: + runs-on: ubuntu-latest + name: Check + + steps: + - uses: actions/checkout@v2 + + - name: Compile man pages + run: | + sudo gem install ronn + make manpage + + - name: manpage (section 1) + run: | + man -P $(which cat) manpage/kosmorro.1 + + - name: manpage (section 7) + run: | + man -P $(which cat) manpage/kosmorro.7 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ba6fa4c..b2eab1b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,19 +27,17 @@ jobs: name: Python ${{ matrix.python-version }} on ${{ matrix.os }} steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Prepare tests run: | - sudo gem install ronn - pip install -U pip pipenv - pipenv sync --dev - make manpage + pip install -U pip poetry + poetry install - name: E2E tests run: | @@ -55,11 +53,3 @@ jobs: TEXLIVE_INSTALLED: 1 run: | make tests - - - name: manpage (section 1) - run: | - man -P $(which cat) manpage/kosmorro.1 - - - name: manpage (section 7) - run: | - man -P $(which cat) manpage/kosmorro.7 diff --git a/.gitpod.yml b/.gitpod.yml index 1ddfc91..01df18e 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -10,5 +10,5 @@ vscode: tasks: - before: sudo apt update && sudo apt install -y texlive texlive-latex-extra - - before: pip install -U pip pipenv - init: pipenv sync --dev --pre + - before: pip install -U pip poetry + init: poetry install diff --git a/AppImageBuilder.yml b/AppImageBuilder.yml index 05fbe3c..244017e 100644 --- a/AppImageBuilder.yml +++ b/AppImageBuilder.yml @@ -3,7 +3,7 @@ version: 1 script: | mkdir -p build/AppDir build/AppDir/usr/share/icons/hicolor/scalable/apps - cp _kosmorro/assets/svg/kosmorro-icon.svg build/AppDir/usr/share/icons/hicolor/scalable/apps/kosmorro.svg + cp kosmorro/assets/svg/kosmorro-icon.svg build/AppDir/usr/share/icons/hicolor/scalable/apps/kosmorro.svg pip3 install --isolated --root="./build/AppDir" ./dist/kosmorro-*.whl AppDir: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 832d0eb..4d1b849 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,7 @@ If you speak another language than English, another nice way to enhance Kosmorro [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/Kosmorro/kosmorro) -First of all, if you are fixing an opened issue, check that nobody is already working on it — if someone seems to be but their Pull Request seems stuck, please ask them first if you can continue the development. If you retake the code they produced, **don't change the author of the commits**. +First, if you are fixing an opened issue, check that nobody is already working on it — if someone seems to be but their Pull Request seems stuck, please ask them first if you can continue the development. If you retake the code they produced, **don't change the author of the commits**. Before writing the code, first create a fork of the repository and clone it. You may also want to add the original repository (`Kosmorro/kosmorro`), so you can update your fork with the last upstream commits. @@ -50,7 +50,7 @@ When you add a new string that will be displayed to the end user, please pass it print('Note: All the hours are given in UTC.') # Do: -from kosmorrolib.i18n import _ +from kosmorro.i18n import _ print(_('Note: All the hours are given in UTC.')) ``` @@ -58,45 +58,37 @@ This will allow Python's internationalization tool to translate the string in an Once you have done your work, please remember to tell [Babel](http://babel.pocoo.org) to extract the new strings: -```console -$ make messages +```bash +make messages ``` -> If the `setup.py` script tells you that the `extract_messages` command does not exist, then run `pipenv sync` to ensure all the dev dependencies are installed and try again. - Note that if you forget to update the messages file, the CI will fail. ### Matching the coding standards -Kosmorro's source code follows the major coding standards of Python (PEPs). Before marking your Pull Request as ready for review, don't forget to check that the code respects the coding standards with PyLint (it is run on the CI, but feel free to run it on your local machine too). Your PR must have a global note of 10/10 to be elligible to merge. - -### Testing the code - -There are two kinds of tests on this project: **unit tests** and **end-to-end tests** (sometimes abbreviated to _E2E tests_). - -#### Unit tests - -[Unit tests](https://en.wikipedia.org/wiki/Unit_testing) check that every little piece of code (any _unit_) does exactly what it is supposed to do. They have several advantages, like proving that new things in the codebase works exactly as they should, and making sure that future changes done later won't break them. - -Kosmorro's unit tests use Python's official `unittest` module. They live in the `/test` folder of the repository. Whenever you write a new feature or a bug fix, please write the unit tests that will make sure it works. -You can also run them by invoking the following command: +Kosmorro's source code follows the major coding standards of Python (PEPs). +Before marking your Pull Request as ready for review, don't forget to check that the code respects the coding standards with Black: -```shell -make test +```bash +make black ``` -Note: there are currently some memory leaks in the unit tests, making the result quite difficult to read. I am working to fix this. -If you have troubles reading them, feel free to ask. +### Testing the code -#### End-to-end tests +The tests are located in the `/tests` folder. +Their principle is pretty simple: -If unit tests are really good at checking that every individual parts of code work well, they fail at checking that so does the _whole_ program as a finished product. That is the job of end-to-end tests. +1. First, we run a Kosmorro command as we would in command line application. We use the [Aurornis](https://pypi.org/project/aurornis/) package to do this. +2. Then, we test the return of the command against what we expected. We use [PyTest](https://pypi.org/project/pytest/) to do this. -The goal here is to make sure that if you install Kosmorro from scratch, it will work without any problem. If a mandatory dependency has not been installed, or if something goes wrong in the main program (which is not possible to unit test), the E2E tests will fail. +To run the tests, invoke the following command: -Kosmorro's 2E2 tests are a Bash script living in the `/.scripts/tests-e2e.sh` file. You should only add tests here if you add new ways to interact with Kosmorro itself (e.g. adding a new argument in the command line). +```bash +make tests -Fore security purpose, it is not recommended running E2E tests locally, because some tests need the root privilege to pass (e.g. installing optional dependencies). They are run on the CI. +# Or, if you have TeXLive installed on your machine (Linux only): +make TEXLIVE_INSTALLED=1 tests +``` ### Commiting @@ -112,11 +104,7 @@ Once your PR is ready to review, please squash your commits so it contains only > To ensure your commits follow this convention, you can use [glint](https://github.com/brigand/glint). -The commit messages are then used to generate the changelog using [`conventional-changelog`](https://github.com/conventional-changelog/conventional-changelog): - -```bash -conventional-changelog -p angular -i CHANGELOG.md -s -``` +The commit messages are then used to generate the changelog using [`conventional-changelog`](https://github.com/conventional-changelog/conventional-changelog). ## Licensing and Copyright Attribution diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 0765773..0000000 --- a/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM python:3.9-slim - -RUN useradd --create-home --shell /bin/bash kosmorro - -WORKDIR /home/kosmorro - -ENV PATH="/home/kosmorro:${PATH}" - -# Prepare environment -RUN python -m pip install --upgrade pip -RUN pip install pipenv -COPY Pipfile.lock . -RUN pipenv sync && pipenv run pip freeze > requirements.txt - -# Add files -RUN pip install -r requirements.txt -COPY _kosmorro/ _kosmorro/ -COPY kosmorro . - -# Compile the translations -COPY setup.py setup.py -COPY setup.cfg setup.cfg -COPY README.md README.md -RUN python setup.py compile_catalog - -# Clean the image -RUN rm setup.py setup.cfg README.md && \ - rm _kosmorro/locales/messages.pot _kosmorro/locales/*/LC_MESSAGES/messages.po && \ - pip uninstall --yes pipenv - -USER kosmorro - -CMD ["bash"] diff --git a/Makefile b/Makefile index 24c3637..c371814 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,13 @@ black: - pipenv run black kosmorro _kosmorro tests setup.py + poetry run black kosmorro tests setup.py .PHONY: tests tests: - @if [ "$${TEXLIVE_INSTALLED}" == "" ]; then \ - echo "If you are running the tests locally and TeXLive is installed on your machine, you will need to set the TEXLIVE_INSTALLED environment variable."; \ - echo; \ - fi - - LANG=C pipenv run python3 -m pytest tests/*.py + LANG=C python3 -m poetry run pytest tests/*.py .PHONY: build build: manpage - python3 setup.py sdist bdist_wheel + poetry build .PHONY: manpage manpage: @@ -20,10 +15,10 @@ manpage: ronn --roff manpage/kosmorro.7.md messages: - pipenv run pybabel extract --output=_kosmorro/locales/messages.pot _kosmorro + poetry run pybabel extract --output=kosmorro/locales/messages.pot kosmorro i18n: - pipenv run pybabel compile --directory=_kosmorro/locales + poetry run pybabel compile --directory=kosmorro/locales changelog: conventional-changelog -p angular -i CHANGELOG.md -s diff --git a/Pipfile b/Pipfile deleted file mode 100644 index 5f4d225..0000000 --- a/Pipfile +++ /dev/null @@ -1,22 +0,0 @@ -[[source]] -name = "pypi" -url = "https://pypi.org/simple" -verify_ssl = true - -[dev-packages] -black = "*" -pytest = "*" -aurornis = "*" - -[packages] -tabulate = "*" -termcolor = "*" -kosmorrolib = ">=1.0.0,<2.0.0" -python-dateutil = "*" -babel = ">=2.9.0,<3.0.0" - -[requires] -python_version = "3" - -[pipenv] -allow_prereleases = true diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index e157a56..0000000 --- a/Pipfile.lock +++ /dev/null @@ -1,293 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "7c87215e821ad4c88dadc31960030f52957e2eaa41d451bfa3a53feb91b8d856" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "babel": { - "hashes": [ - "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9", - "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0" - ], - "index": "pypi", - "version": "==2.9.1" - }, - "certifi": { - "hashes": [ - "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872", - "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569" - ], - "version": "==2021.10.8" - }, - "jplephem": { - "hashes": [ - "sha256:e1c6e5565c4d00485f1063241b4d1eff044585c22b8e97fad0ff2f6efb8aaa27" - ], - "version": "==2.17" - }, - "kosmorrolib": { - "hashes": [ - "sha256:8c77f40b346d183147cb3e927b3ea5c7d4d7067ce7e49edb73821566f74d5e51", - "sha256:9ffbbaa8666c1222bf8a25d543afa72a0a80249017d342a6667bcae8657effc0" - ], - "index": "pypi", - "version": "==1.0.6" - }, - "numpy": { - "hashes": [ - "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676", - "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4", - "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce", - "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123", - "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1", - "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e", - "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5", - "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d", - "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a", - "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab", - "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75", - "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168", - "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4", - "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f", - "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18", - "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62", - "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe", - "sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430", - "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802", - "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa" - ], - "markers": "python_version >= '3.8'", - "version": "==1.22.3" - }, - "python-dateutil": { - "hashes": [ - "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", - "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" - ], - "index": "pypi", - "version": "==2.8.2" - }, - "pytz": { - "hashes": [ - "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c", - "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326" - ], - "version": "==2021.3" - }, - "sgp4": { - "hashes": [ - "sha256:05f22b4fd91861ee2e0e03a528c1aef11a8b263a60ab5f723d32cdb65dac3eaa", - "sha256:06586caf071e3427bc4e5a5c84a806045532040dc2c35ca0ff12f34cab2ecb5c", - "sha256:1af727dfe02ef32babd124644e96b8cc109b22142efb44e37d0e3aaf4c38a1ab", - "sha256:1d3b5abc07266203f4b453e7c1ca8403ef2d7b8d1779c14c9a4177e4b1558ba5", - "sha256:24477da85936b864fd765911f808a4d113c81189c2a0ecd5992bcdf9aecbf5ef", - "sha256:2a89fc1debacfa10cf55ae1d40472037a57687b1ae3b66e7196e5af53fb96a56", - "sha256:2b449e6cab15748608c6083f86b0059d26093f76fa227010df09d8f0954b3bbd", - "sha256:3e3eb29c308d30d010316832606af184d243d5aab8ccc5d589f3cb85d74471f7", - "sha256:43c2c6d464144bb80987b2e66f3992add58c65e095abe2b9d567650fdb877a9d", - "sha256:4d5eb2aff4f645f5020ac869ec453dcd807836b3eb8b459d569eda40c358cd76", - "sha256:642bae76c6e55b72feda3c5ca3721e837f2702816a120805349b06e40f85faea", - "sha256:67f99f534fdc5650d8efe516e77dd9b43e4cb8ab9b38f2b66484085c0ff75077", - "sha256:6c906973dc2966cba8065f359c3eaa18505280be8f625b54ebb98f5ddeb8d205", - "sha256:7d848698ae2bf5bb9ea2082640b0417175a6b2e6e8d580114ebe04265cd1bfb4", - "sha256:80f9b2f1c2ac53c7b8cbf1a08e5a39a56c1b7c18d3e0de922078758a784b0b20", - "sha256:876b82d41a859c9ff65d3bdb7f6a3cecfc63bea529b4dc751b06eefbd6c3f1e0", - "sha256:8c2f4f99ab360a93768bf88ad6a9fdf83edfa6292e0a0ac8924c85fde11b2055", - "sha256:9fde328872f484eb644dabe32122ba617570ff61b548b7200a9d63629ac3097c", - "sha256:b2169cd536355fc67e3870acea34c4fc22b2ccecab2c0bf45a01edfe646fe3d0", - "sha256:cf4d5ac32b5e84c7b420109a09ea3c3741844fa92776f79d1c852cc67e2c1364", - "sha256:d42a3dcdfd394c5059b99bbf8b35311e03e87d21fbfb6ba2d5c5d2dfad15d4d7", - "sha256:dbfffe1ff2c223804e2ebdeb568baad46f40342943c4a74169fd75dc5dddda57", - "sha256:dfc5214b65ad8229c499f0da3f5042a18239f12f4318e90d892a79dcbf27282f", - "sha256:e73680b3b7b8b977766ae91eadd92988a0c3e36248dcac5d8263a957bec34a04", - "sha256:e8ecc01fdffe81f11ca94bb255024379e62c92f73e2baec2bdf5a3c3108221ff", - "sha256:ea37423d4317ec5351a4e3b6a3947a6053978e5290549d77ba375459527f7ccb", - "sha256:ee329571c1a25ce4f1e2b01d6f923791d16c5a7a3a75219317073bc50a7d25fe", - "sha256:ee3688ae409a201107927b24be10db2a61efdd5a919737b4900c57ee8b3a22d6", - "sha256:f5d2830f2896cecc4af0729cd328994ae823f277f481d4fc992383eb79f3742a" - ], - "version": "==2.20" - }, - "six": { - "hashes": [ - "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", - "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.16.0" - }, - "skyfield": { - "hashes": [ - "sha256:3447fd3a9a9dabc2080e6a4efb56d9883decf261ad78e6c9b3f187c4fc761ace" - ], - "version": "==1.42" - }, - "skyfield-data": { - "hashes": [ - "sha256:128d407e43a04be66c44b03914f9147b5e65b96078db776e6a4f5538ab0b74bf", - "sha256:bd81bf9032d4833a766f4127e868d62674083ca2ccaea07e6d025e132c9c574e" - ], - "markers": "python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' and python_version < '4'", - "version": "==4.0.0" - }, - "tabulate": { - "hashes": [ - "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4", - "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7" - ], - "index": "pypi", - "version": "==0.8.9" - }, - "termcolor": { - "hashes": [ - "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b" - ], - "index": "pypi", - "version": "==1.1.0" - } - }, - "develop": { - "attrs": { - "hashes": [ - "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", - "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==21.4.0" - }, - "aurornis": { - "hashes": [ - "sha256:660b57e9d1701d88fb7cc4af3118c927e9e001d2ab39cb145695eb8470f4642a", - "sha256:bc68845be5cdf2d69d26c677214f7435365967b4a65dc3772ab05353b2136d95" - ], - "index": "pypi", - "version": "==1.2.0" - }, - "black": { - "hashes": [ - "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2", - "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71", - "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6", - "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5", - "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912", - "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866", - "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d", - "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0", - "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321", - "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8", - "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd", - "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3", - "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba", - "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0", - "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5", - "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a", - "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28", - "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c", - "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1", - "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab", - "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f", - "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61", - "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3" - ], - "index": "pypi", - "version": "==22.1.0" - }, - "click": { - "hashes": [ - "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1", - "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb" - ], - "markers": "python_version >= '3.6'", - "version": "==8.0.4" - }, - "iniconfig": { - "hashes": [ - "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3", - "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32" - ], - "version": "==1.1.1" - }, - "mypy-extensions": { - "hashes": [ - "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d", - "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8" - ], - "version": "==0.4.3" - }, - "packaging": { - "hashes": [ - "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", - "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" - ], - "markers": "python_version >= '3.6'", - "version": "==21.3" - }, - "pathspec": { - "hashes": [ - "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a", - "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1" - ], - "version": "==0.9.0" - }, - "platformdirs": { - "hashes": [ - "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d", - "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227" - ], - "markers": "python_version >= '3.7'", - "version": "==2.5.1" - }, - "pluggy": { - "hashes": [ - "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159", - "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3" - ], - "markers": "python_version >= '3.6'", - "version": "==1.0.0" - }, - "py": { - "hashes": [ - "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", - "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378" - ], - "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", - "version": "==1.11.0" - }, - "pyparsing": { - "hashes": [ - "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea", - "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484" - ], - "markers": "python_version >= '3.6'", - "version": "==3.0.7" - }, - "pytest": { - "hashes": [ - "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63", - "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea" - ], - "index": "pypi", - "version": "==7.1.1" - }, - "tomli": { - "hashes": [ - "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", - "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" - ], - "markers": "python_version >= '3.7'", - "version": "==2.0.1" - } - } -} diff --git a/README.md b/README.md index 2b51ec3..2169665 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # ![Kosmorro](https://raw.githubusercontent.com/Kosmorro/logos/main/png/kosmorro-logo-grey.png) -[![Coverage Status](https://coveralls.io/repos/github/Kosmorro/kosmorro/badge.svg?branch=master)](https://coveralls.io/github/Kosmorro/kosmorro?branch=master) [![Version on PyPI](https://img.shields.io/pypi/v/kosmorro)](https://pypi.org/project/kosmorro) [![Packaging status](https://repology.org/badge/tiny-repos/kosmorro.svg)](https://repology.org/project/kosmorro/versions) [![Docker Pulls](https://img.shields.io/docker/pulls/kosmorro/kosmorro)](https://hub.docker.com/r/kosmorro/kosmorro) [![Help translating Kosmorro!](https://hosted.weblate.org/widgets/kosmorro/-/cli/svg-badge.svg)](https://hosted.weblate.org/engage/kosmorro/) +[![Coverage Status](https://coveralls.io/repos/github/Kosmorro/kosmorro/badge.svg?branch=master)](https://coveralls.io/github/Kosmorro/kosmorro?branch=master) [![Version on PyPI](https://img.shields.io/pypi/v/kosmorro)](https://pypi.org/project/kosmorro) [![Packaging status](https://repology.org/badge/tiny-repos/kosmorro.svg)](https://repology.org/project/kosmorro/versions) [![Help translating Kosmorro!](https://hosted.weblate.org/widgets/kosmorro/-/cli/svg-badge.svg)](https://hosted.weblate.org/engage/kosmorro/) A program that calculates your astronomical ephemerides! @@ -17,12 +17,12 @@ Before you run Kosmorro in your development environment, check you have installe - Python ≥ 3.7.0 (needed run Kosmorro) - PIP3 (needed for package management, usually installed among with Python 3) -- [Pipenv](https://pypi.org/project/pipenv/) (needed to manage the virtual environment) +- [Poetry](https://python-poetry.org/) (needed to manage the virtual environment) -Clone this repository and run `pipenv sync` to install all the dependencies. -Then, run Kosmorro by invoking `pipenv run python kosmorro`. +Clone this repository and run `poetry install` to install all the dependencies. +Then, run Kosmorro by invoking `poetry run python kosmorro`. -For comfort, you may want to invoke `pipenv shell` first and then just `python kosmoro`. +For comfort, you may want to invoke `poetry shell` first and then just `python kosmoro`. ## Using Kosmorro diff --git a/kosmorro b/kosmorro deleted file mode 100755 index f6b2a01..0000000 --- a/kosmorro +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python3 - -# Kosmorro - Compute The Next Ephemerides -# Copyright (C) 2019 Jérôme Deuchnord -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -import sys -from _kosmorro.main import main - -if __name__ == "__main__": - try: - sys.exit(main()) - except KeyboardInterrupt: - sys.exit(1) diff --git a/_kosmorro/__init__.py b/kosmorro/__init__.py similarity index 100% rename from _kosmorro/__init__.py rename to kosmorro/__init__.py diff --git a/_kosmorro/main.py b/kosmorro/__main__.py similarity index 99% rename from _kosmorro/main.py rename to kosmorro/__main__.py index 18bd52f..70ed03b 100644 --- a/_kosmorro/main.py +++ b/kosmorro/__main__.py @@ -30,10 +30,10 @@ from .date import parse_date from .utils import colored, set_colors_activated from .__version__ import __version__ as kosmorro_version from .exceptions import UnavailableFeatureError, OutOfRangeDateError as DateRangeError -from _kosmorro.i18n.utils import _, SHORT_DATE_FORMAT +from kosmorro.i18n.utils import _ -def main(): +def run(): env_vars = environment.get_env_vars() output_formats = get_dumpers() args = get_args(list(output_formats.keys())) @@ -312,3 +312,7 @@ def get_args(output_formats: [str]): ) return parser.parse_args() + + +def main(): + sys.exit(run()) diff --git a/_kosmorro/__version__.py b/kosmorro/__version__.py similarity index 100% rename from _kosmorro/__version__.py rename to kosmorro/__version__.py diff --git a/_kosmorro/assets/moonphases/png/first-quarter.png b/kosmorro/assets/moonphases/png/first-quarter.png similarity index 100% rename from _kosmorro/assets/moonphases/png/first-quarter.png rename to kosmorro/assets/moonphases/png/first-quarter.png diff --git a/_kosmorro/assets/moonphases/png/full-moon.png b/kosmorro/assets/moonphases/png/full-moon.png similarity index 100% rename from _kosmorro/assets/moonphases/png/full-moon.png rename to kosmorro/assets/moonphases/png/full-moon.png diff --git a/_kosmorro/assets/moonphases/png/last-quarter.png b/kosmorro/assets/moonphases/png/last-quarter.png similarity index 100% rename from _kosmorro/assets/moonphases/png/last-quarter.png rename to kosmorro/assets/moonphases/png/last-quarter.png diff --git a/_kosmorro/assets/moonphases/png/new-moon.png b/kosmorro/assets/moonphases/png/new-moon.png similarity index 100% rename from _kosmorro/assets/moonphases/png/new-moon.png rename to kosmorro/assets/moonphases/png/new-moon.png diff --git a/_kosmorro/assets/moonphases/png/unknown.png b/kosmorro/assets/moonphases/png/unknown.png similarity index 100% rename from _kosmorro/assets/moonphases/png/unknown.png rename to kosmorro/assets/moonphases/png/unknown.png diff --git a/_kosmorro/assets/moonphases/png/waning-crescent.png b/kosmorro/assets/moonphases/png/waning-crescent.png similarity index 100% rename from _kosmorro/assets/moonphases/png/waning-crescent.png rename to kosmorro/assets/moonphases/png/waning-crescent.png diff --git a/_kosmorro/assets/moonphases/png/waning-gibbous.png b/kosmorro/assets/moonphases/png/waning-gibbous.png similarity index 100% rename from _kosmorro/assets/moonphases/png/waning-gibbous.png rename to kosmorro/assets/moonphases/png/waning-gibbous.png diff --git a/_kosmorro/assets/moonphases/png/waxing-crescent.png b/kosmorro/assets/moonphases/png/waxing-crescent.png similarity index 100% rename from _kosmorro/assets/moonphases/png/waxing-crescent.png rename to kosmorro/assets/moonphases/png/waxing-crescent.png diff --git a/_kosmorro/assets/moonphases/png/waxing-gibbous.png b/kosmorro/assets/moonphases/png/waxing-gibbous.png similarity index 100% rename from _kosmorro/assets/moonphases/png/waxing-gibbous.png rename to kosmorro/assets/moonphases/png/waxing-gibbous.png diff --git a/_kosmorro/assets/moonphases/svg/first-quarter.svg b/kosmorro/assets/moonphases/svg/first-quarter.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/first-quarter.svg rename to kosmorro/assets/moonphases/svg/first-quarter.svg diff --git a/_kosmorro/assets/moonphases/svg/full-moon.svg b/kosmorro/assets/moonphases/svg/full-moon.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/full-moon.svg rename to kosmorro/assets/moonphases/svg/full-moon.svg diff --git a/_kosmorro/assets/moonphases/svg/last-quarter.svg b/kosmorro/assets/moonphases/svg/last-quarter.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/last-quarter.svg rename to kosmorro/assets/moonphases/svg/last-quarter.svg diff --git a/_kosmorro/assets/moonphases/svg/new-moon.svg b/kosmorro/assets/moonphases/svg/new-moon.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/new-moon.svg rename to kosmorro/assets/moonphases/svg/new-moon.svg diff --git a/_kosmorro/assets/moonphases/svg/unknown.svg b/kosmorro/assets/moonphases/svg/unknown.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/unknown.svg rename to kosmorro/assets/moonphases/svg/unknown.svg diff --git a/_kosmorro/assets/moonphases/svg/waning-crescent.svg b/kosmorro/assets/moonphases/svg/waning-crescent.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/waning-crescent.svg rename to kosmorro/assets/moonphases/svg/waning-crescent.svg diff --git a/_kosmorro/assets/moonphases/svg/waning-gibbous.svg b/kosmorro/assets/moonphases/svg/waning-gibbous.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/waning-gibbous.svg rename to kosmorro/assets/moonphases/svg/waning-gibbous.svg diff --git a/_kosmorro/assets/moonphases/svg/waxing-crescent.svg b/kosmorro/assets/moonphases/svg/waxing-crescent.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/waxing-crescent.svg rename to kosmorro/assets/moonphases/svg/waxing-crescent.svg diff --git a/_kosmorro/assets/moonphases/svg/waxing-gibbous.svg b/kosmorro/assets/moonphases/svg/waxing-gibbous.svg similarity index 100% rename from _kosmorro/assets/moonphases/svg/waxing-gibbous.svg rename to kosmorro/assets/moonphases/svg/waxing-gibbous.svg diff --git a/_kosmorro/assets/pdf/kosmorro.sty b/kosmorro/assets/pdf/kosmorro.sty similarity index 100% rename from _kosmorro/assets/pdf/kosmorro.sty rename to kosmorro/assets/pdf/kosmorro.sty diff --git a/_kosmorro/assets/pdf/template.tex b/kosmorro/assets/pdf/template.tex similarity index 100% rename from _kosmorro/assets/pdf/template.tex rename to kosmorro/assets/pdf/template.tex diff --git a/_kosmorro/assets/png/kosmorro-icon-white.png b/kosmorro/assets/png/kosmorro-icon-white.png similarity index 100% rename from _kosmorro/assets/png/kosmorro-icon-white.png rename to kosmorro/assets/png/kosmorro-icon-white.png diff --git a/_kosmorro/assets/png/kosmorro-icon.png b/kosmorro/assets/png/kosmorro-icon.png similarity index 100% rename from _kosmorro/assets/png/kosmorro-icon.png rename to kosmorro/assets/png/kosmorro-icon.png diff --git a/_kosmorro/assets/png/kosmorro-logo-white.png b/kosmorro/assets/png/kosmorro-logo-white.png similarity index 100% rename from _kosmorro/assets/png/kosmorro-logo-white.png rename to kosmorro/assets/png/kosmorro-logo-white.png diff --git a/_kosmorro/assets/png/kosmorro-logo.png b/kosmorro/assets/png/kosmorro-logo.png similarity index 100% rename from _kosmorro/assets/png/kosmorro-logo.png rename to kosmorro/assets/png/kosmorro-logo.png diff --git a/_kosmorro/assets/svg/kosmorro-icon-white.svg b/kosmorro/assets/svg/kosmorro-icon-white.svg similarity index 100% rename from _kosmorro/assets/svg/kosmorro-icon-white.svg rename to kosmorro/assets/svg/kosmorro-icon-white.svg diff --git a/_kosmorro/assets/svg/kosmorro-icon.svg b/kosmorro/assets/svg/kosmorro-icon.svg similarity index 100% rename from _kosmorro/assets/svg/kosmorro-icon.svg rename to kosmorro/assets/svg/kosmorro-icon.svg diff --git a/_kosmorro/assets/svg/kosmorro-logo-white.svg b/kosmorro/assets/svg/kosmorro-logo-white.svg similarity index 100% rename from _kosmorro/assets/svg/kosmorro-logo-white.svg rename to kosmorro/assets/svg/kosmorro-logo-white.svg diff --git a/_kosmorro/assets/svg/kosmorro-logo.svg b/kosmorro/assets/svg/kosmorro-logo.svg similarity index 100% rename from _kosmorro/assets/svg/kosmorro-logo.svg rename to kosmorro/assets/svg/kosmorro-logo.svg diff --git a/_kosmorro/date.py b/kosmorro/date.py similarity index 97% rename from _kosmorro/date.py rename to kosmorro/date.py index 5d25a71..3018fb6 100644 --- a/_kosmorro/date.py +++ b/kosmorro/date.py @@ -5,7 +5,7 @@ import re from dateutil.relativedelta import relativedelta from datetime import date -from _kosmorro.i18n.utils import _ +from kosmorro.i18n.utils import _ def parse_date(date_arg: str) -> date: diff --git a/_kosmorro/debug.py b/kosmorro/debug.py similarity index 100% rename from _kosmorro/debug.py rename to kosmorro/debug.py diff --git a/_kosmorro/dumper.py b/kosmorro/dumper.py similarity index 100% rename from _kosmorro/dumper.py rename to kosmorro/dumper.py diff --git a/_kosmorro/environment.py b/kosmorro/environment.py similarity index 100% rename from _kosmorro/environment.py rename to kosmorro/environment.py diff --git a/_kosmorro/exceptions.py b/kosmorro/exceptions.py similarity index 96% rename from _kosmorro/exceptions.py rename to kosmorro/exceptions.py index 25b82b8..b16b94a 100644 --- a/_kosmorro/exceptions.py +++ b/kosmorro/exceptions.py @@ -18,7 +18,7 @@ from datetime import date from babel.dates import format_date -from _kosmorro.i18n.utils import _, SHORT_DATE_FORMAT +from kosmorro.i18n.utils import _, SHORT_DATE_FORMAT class UnavailableFeatureError(RuntimeError): diff --git a/_kosmorro/i18n/__init__.py b/kosmorro/i18n/__init__.py similarity index 100% rename from _kosmorro/i18n/__init__.py rename to kosmorro/i18n/__init__.py diff --git a/_kosmorro/i18n/strings.py b/kosmorro/i18n/strings.py similarity index 100% rename from _kosmorro/i18n/strings.py rename to kosmorro/i18n/strings.py diff --git a/_kosmorro/i18n/utils.py b/kosmorro/i18n/utils.py similarity index 100% rename from _kosmorro/i18n/utils.py rename to kosmorro/i18n/utils.py diff --git a/_kosmorro/locales/de/LC_MESSAGES/messages.po b/kosmorro/locales/de/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/de/LC_MESSAGES/messages.po rename to kosmorro/locales/de/LC_MESSAGES/messages.po diff --git a/kosmorro/locales/en_XA/LC_MESSAGES/messages.po b/kosmorro/locales/en_XA/LC_MESSAGES/messages.po new file mode 100644 index 0000000..e69de29 diff --git a/_kosmorro/locales/es/LC_MESSAGES/messages.po b/kosmorro/locales/es/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/es/LC_MESSAGES/messages.po rename to kosmorro/locales/es/LC_MESSAGES/messages.po diff --git a/_kosmorro/locales/fr/LC_MESSAGES/messages.po b/kosmorro/locales/fr/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/fr/LC_MESSAGES/messages.po rename to kosmorro/locales/fr/LC_MESSAGES/messages.po diff --git a/_kosmorro/locales/messages.pot b/kosmorro/locales/messages.pot similarity index 71% rename from _kosmorro/locales/messages.pot rename to kosmorro/locales/messages.pot index b40fd9b..bf05028 100644 --- a/_kosmorro/locales/messages.pot +++ b/kosmorro/locales/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2022-03-07 16:45+0100\n" +"POT-Creation-Date: 2022-03-19 13:28+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,315 +17,315 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.9.1\n" -#: _kosmorro/date.py:17 -msgid "The date {date} is not valid: {error}" +#: kosmorro/__main__.py:63 +msgid "" +"Save the planet and paper!\n" +"Consider printing your PDF document only if really necessary, and use the" +" other side of the sheet." msgstr "" -#: _kosmorro/date.py:39 +#: kosmorro/__main__.py:72 msgid "" -"The date {date} does not match the required YYYY-MM-DD format or the " -"offset format." +"PDF output will not contain the ephemerides, because you didn't provide " +"the observation coordinates." msgstr "" -#: _kosmorro/dumper.py:137 -msgid "Expected events:" +#: kosmorro/__main__.py:117 +msgid "The file could not be saved in \"{path}\": {error}" msgstr "" -#: _kosmorro/dumper.py:144 -msgid "Note: All the hours are given in UTC." +#: kosmorro/__main__.py:131 +msgid "Please provide a file path to export in this format (--output)." msgstr "" -#: _kosmorro/dumper.py:151 -msgid "Note: All the hours are given in the UTC{offset} timezone." +#: kosmorro/__main__.py:164 +msgid "Moon phase can only be computed between {min_date} and {max_date}" msgstr "" -#: _kosmorro/dumper.py:205 _kosmorro/dumper.py:333 -msgid "Object" +#: kosmorro/__main__.py:203 +msgid "Running on Python {python_version} with Kosmorrolib v{kosmorrolib_version}" msgstr "" -#: _kosmorro/dumper.py:206 _kosmorro/dumper.py:334 -msgid "Rise time" +#: kosmorro/__main__.py:216 +msgid "" +"Compute the ephemerides and the events for a given date and a given " +"position on Earth." msgstr "" -#: _kosmorro/dumper.py:207 _kosmorro/dumper.py:336 -msgid "Culmination time" +#: kosmorro/__main__.py:219 +msgid "" +"By default, only the events will be computed for today.\n" +"To compute also the ephemerides, latitude and longitude arguments are " +"needed." msgstr "" -#: _kosmorro/dumper.py:208 _kosmorro/dumper.py:338 -msgid "Set time" +#: kosmorro/__main__.py:232 +msgid "Show the program version" msgstr "" -#: _kosmorro/dumper.py:234 -msgid "Moon phase is unavailable for this date." +#: kosmorro/__main__.py:240 +msgid "The format to output the information to" msgstr "" -#: _kosmorro/dumper.py:238 _kosmorro/dumper.py:342 -msgid "Moon phase:" +#: kosmorro/__main__.py:247 +msgid "" +"The observer's latitude on Earth. Can also be set in the " +"KOSMORRO_LATITUDE environment variable." msgstr "" -#: _kosmorro/dumper.py:242 -msgid "{next_moon_phase} on {next_moon_phase_date} at {next_moon_phase_time}" +#: kosmorro/__main__.py:257 +msgid "" +"The observer's longitude on Earth. Can also be set in the " +"KOSMORRO_LONGITUDE environment variable." msgstr "" -#: _kosmorro/dumper.py:306 -msgid "Overview of your sky" +#: kosmorro/__main__.py:267 +msgid "" +"The date for which the ephemerides must be calculated. Can be in the " +"YYYY-MM-DD format or an interval in the \"[+-]YyMmDd\" format (with Y, M," +" and D numbers). Defaults to current date." msgstr "" -#: _kosmorro/dumper.py:314 +#: kosmorro/__main__.py:278 msgid "" -"This document summarizes the ephemerides and the events of {date}. It " -"aims to help you to prepare your observation session. All the hours are " -"given in {timezone}." +"The timezone to display the hours in (e.g. 2 for UTC+2 or -3 for UTC-3). " +"Can also be set in the KOSMORRO_TIMEZONE environment variable." msgstr "" -#: _kosmorro/dumper.py:324 -msgid "" -"Don't forget to check the weather forecast before you go out with your " -"equipment." +#: kosmorro/__main__.py:287 +msgid "Disable the colors in the console." msgstr "" -#: _kosmorro/dumper.py:331 -msgid "Ephemerides of the day" +#: kosmorro/__main__.py:294 +msgid "" +"A file to export the output to. If not given, the standard output is " +"used. This argument is needed for PDF format." msgstr "" -#: _kosmorro/dumper.py:340 -msgid "hours" +#: kosmorro/__main__.py:303 +msgid "" +"Do not generate a graph to represent the rise and set times in the PDF " +"format." msgstr "" -#: _kosmorro/dumper.py:347 -msgid "Expected events" +#: kosmorro/__main__.py:311 +msgid "Show debugging messages" msgstr "" -#: _kosmorro/dumper.py:487 -msgid "" -"Building PDF was not possible, because some dependencies are not " -"installed.\n" -"Please look at the documentation at https://kosmorro.space/cli/generate-" -"pdf/ for more information." +#: kosmorro/date.py:17 +msgid "The date {date} is not valid: {error}" msgstr "" -#: _kosmorro/dumper.py:540 -#, python-format +#: kosmorro/date.py:39 msgid "" -"An error occurred during the compilation of the PDF.\n" -"Please open an issue at https://github.com/Kosmorro/kosmorro/issues and " -"share the content of the log file at /tmp/kosmorro-%s.log" +"The date {date} does not match the required YYYY-MM-DD format or the " +"offset format." msgstr "" -#: _kosmorro/exceptions.py:35 -msgid "The date must be between {minimum_date} and {maximum_date}" +#: kosmorro/dumper.py:137 +msgid "Expected events:" msgstr "" -#: _kosmorro/main.py:63 -msgid "" -"Save the planet and paper!\n" -"Consider printing your PDF document only if really necessary, and use the" -" other side of the sheet." +#: kosmorro/dumper.py:144 +msgid "Note: All the hours are given in UTC." msgstr "" -#: _kosmorro/main.py:72 -msgid "" -"PDF output will not contain the ephemerides, because you didn't provide " -"the observation coordinates." +#: kosmorro/dumper.py:151 +msgid "Note: All the hours are given in the UTC{offset} timezone." msgstr "" -#: _kosmorro/main.py:117 -msgid "The file could not be saved in \"{path}\": {error}" +#: kosmorro/dumper.py:205 kosmorro/dumper.py:333 +msgid "Object" msgstr "" -#: _kosmorro/main.py:131 -msgid "Please provide a file path to export in this format (--output)." +#: kosmorro/dumper.py:206 kosmorro/dumper.py:334 +msgid "Rise time" msgstr "" -#: _kosmorro/main.py:164 -msgid "Moon phase can only be computed between {min_date} and {max_date}" +#: kosmorro/dumper.py:207 kosmorro/dumper.py:336 +msgid "Culmination time" msgstr "" -#: _kosmorro/main.py:203 -msgid "Running on Python {python_version} with Kosmorrolib v{kosmorrolib_version}" +#: kosmorro/dumper.py:208 kosmorro/dumper.py:338 +msgid "Set time" msgstr "" -#: _kosmorro/main.py:216 -msgid "" -"Compute the ephemerides and the events for a given date and a given " -"position on Earth." +#: kosmorro/dumper.py:234 +msgid "Moon phase is unavailable for this date." msgstr "" -#: _kosmorro/main.py:219 -msgid "" -"By default, only the events will be computed for today.\n" -"To compute also the ephemerides, latitude and longitude arguments are " -"needed." +#: kosmorro/dumper.py:238 kosmorro/dumper.py:342 +msgid "Moon phase:" msgstr "" -#: _kosmorro/main.py:232 -msgid "Show the program version" +#: kosmorro/dumper.py:242 +msgid "{next_moon_phase} on {next_moon_phase_date} at {next_moon_phase_time}" msgstr "" -#: _kosmorro/main.py:240 -msgid "The format to output the information to" +#: kosmorro/dumper.py:306 +msgid "Overview of your sky" msgstr "" -#: _kosmorro/main.py:247 +#: kosmorro/dumper.py:314 msgid "" -"The observer's latitude on Earth. Can also be set in the " -"KOSMORRO_LATITUDE environment variable." +"This document summarizes the ephemerides and the events of {date}. It " +"aims to help you to prepare your observation session. All the hours are " +"given in {timezone}." msgstr "" -#: _kosmorro/main.py:257 +#: kosmorro/dumper.py:324 msgid "" -"The observer's longitude on Earth. Can also be set in the " -"KOSMORRO_LONGITUDE environment variable." +"Don't forget to check the weather forecast before you go out with your " +"equipment." msgstr "" -#: _kosmorro/main.py:267 -msgid "" -"The date for which the ephemerides must be calculated. Can be in the " -"YYYY-MM-DD format or an interval in the \"[+-]YyMmDd\" format (with Y, M," -" and D numbers). Defaults to current date." +#: kosmorro/dumper.py:331 +msgid "Ephemerides of the day" msgstr "" -#: _kosmorro/main.py:278 -msgid "" -"The timezone to display the hours in (e.g. 2 for UTC+2 or -3 for UTC-3). " -"Can also be set in the KOSMORRO_TIMEZONE environment variable." +#: kosmorro/dumper.py:340 +msgid "hours" msgstr "" -#: _kosmorro/main.py:287 -msgid "Disable the colors in the console." +#: kosmorro/dumper.py:347 +msgid "Expected events" msgstr "" -#: _kosmorro/main.py:294 +#: kosmorro/dumper.py:487 msgid "" -"A file to export the output to. If not given, the standard output is " -"used. This argument is needed for PDF format." +"Building PDF was not possible, because some dependencies are not " +"installed.\n" +"Please look at the documentation at https://kosmorro.space/cli/generate-" +"pdf/ for more information." msgstr "" -#: _kosmorro/main.py:303 +#: kosmorro/dumper.py:540 +#, python-format msgid "" -"Do not generate a graph to represent the rise and set times in the PDF " -"format." +"An error occurred during the compilation of the PDF.\n" +"Please open an issue at https://github.com/Kosmorro/kosmorro/issues and " +"share the content of the log file at /tmp/kosmorro-%s.log" msgstr "" -#: _kosmorro/main.py:311 -msgid "Show debugging messages" +#: kosmorro/exceptions.py:35 +msgid "The date must be between {minimum_date} and {maximum_date}" msgstr "" -#: _kosmorro/i18n/strings.py:11 +#: kosmorro/i18n/strings.py:11 #, python-format msgid "%s is in opposition" msgstr "" -#: _kosmorro/i18n/strings.py:12 +#: kosmorro/i18n/strings.py:12 #, python-format msgid "%s and %s are in conjunction" msgstr "" -#: _kosmorro/i18n/strings.py:13 +#: kosmorro/i18n/strings.py:13 #, python-format msgid "%s occults %s" msgstr "" -#: _kosmorro/i18n/strings.py:15 +#: kosmorro/i18n/strings.py:15 #, python-format msgid "Elongation of %s is maximal" msgstr "" -#: _kosmorro/i18n/strings.py:18 +#: kosmorro/i18n/strings.py:18 #, python-format msgid "%s is at its perigee" msgstr "" -#: _kosmorro/i18n/strings.py:19 +#: kosmorro/i18n/strings.py:19 #, python-format msgid "%s is at its apogee" msgstr "" -#: _kosmorro/i18n/strings.py:35 +#: kosmorro/i18n/strings.py:35 msgid "New Moon" msgstr "" -#: _kosmorro/i18n/strings.py:36 +#: kosmorro/i18n/strings.py:36 msgid "Waxing Crescent" msgstr "" -#: _kosmorro/i18n/strings.py:37 +#: kosmorro/i18n/strings.py:37 msgid "First Quarter" msgstr "" -#: _kosmorro/i18n/strings.py:38 +#: kosmorro/i18n/strings.py:38 msgid "Waxing Gibbous" msgstr "" -#: _kosmorro/i18n/strings.py:39 +#: kosmorro/i18n/strings.py:39 msgid "Full Moon" msgstr "" -#: _kosmorro/i18n/strings.py:40 +#: kosmorro/i18n/strings.py:40 msgid "Waning Gibbous" msgstr "" -#: _kosmorro/i18n/strings.py:41 +#: kosmorro/i18n/strings.py:41 msgid "Last Quarter" msgstr "" -#: _kosmorro/i18n/strings.py:42 +#: kosmorro/i18n/strings.py:42 msgid "Waning Crescent" msgstr "" -#: _kosmorro/i18n/strings.py:53 +#: kosmorro/i18n/strings.py:53 msgid "Sun" msgstr "" -#: _kosmorro/i18n/strings.py:54 +#: kosmorro/i18n/strings.py:54 msgid "Moon" msgstr "" -#: _kosmorro/i18n/strings.py:55 +#: kosmorro/i18n/strings.py:55 msgid "Mercury" msgstr "" -#: _kosmorro/i18n/strings.py:56 +#: kosmorro/i18n/strings.py:56 msgid "Venus" msgstr "" -#: _kosmorro/i18n/strings.py:57 +#: kosmorro/i18n/strings.py:57 msgid "Mars" msgstr "" -#: _kosmorro/i18n/strings.py:58 +#: kosmorro/i18n/strings.py:58 msgid "Jupiter" msgstr "" -#: _kosmorro/i18n/strings.py:59 +#: kosmorro/i18n/strings.py:59 msgid "Saturn" msgstr "" -#: _kosmorro/i18n/strings.py:60 +#: kosmorro/i18n/strings.py:60 msgid "Uranus" msgstr "" -#: _kosmorro/i18n/strings.py:61 +#: kosmorro/i18n/strings.py:61 msgid "Neptune" msgstr "" -#: _kosmorro/i18n/strings.py:62 +#: kosmorro/i18n/strings.py:62 msgid "Pluto" msgstr "" -#: _kosmorro/i18n/utils.py:27 +#: kosmorro/i18n/utils.py:27 msgid "{day_of_week} {month} {day_number}, {year}" msgstr "" -#: _kosmorro/i18n/utils.py:30 +#: kosmorro/i18n/utils.py:30 msgid "{month} {day_number}, {hours}:{minutes}" msgstr "" -#: _kosmorro/i18n/utils.py:33 +#: kosmorro/i18n/utils.py:33 msgid "{month} {day_number}, {year}" msgstr "" -#: _kosmorro/i18n/utils.py:36 +#: kosmorro/i18n/utils.py:36 msgid "{hours}:{minutes}" msgstr "" diff --git a/_kosmorro/locales/nb_NO/LC_MESSAGES/messages.po b/kosmorro/locales/nb_NO/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/nb_NO/LC_MESSAGES/messages.po rename to kosmorro/locales/nb_NO/LC_MESSAGES/messages.po diff --git a/_kosmorro/locales/nl/LC_MESSAGES/messages.po b/kosmorro/locales/nl/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/nl/LC_MESSAGES/messages.po rename to kosmorro/locales/nl/LC_MESSAGES/messages.po diff --git a/_kosmorro/locales/ru/LC_MESSAGES/messages.po b/kosmorro/locales/ru/LC_MESSAGES/messages.po similarity index 100% rename from _kosmorro/locales/ru/LC_MESSAGES/messages.po rename to kosmorro/locales/ru/LC_MESSAGES/messages.po diff --git a/_kosmorro/utils.py b/kosmorro/utils.py similarity index 100% rename from _kosmorro/utils.py rename to kosmorro/utils.py diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..9f4b9c6 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,576 @@ +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "aurornis" +version = "1.2.0" +description = "The Command Line Program Test Helper" +category = "dev" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "babel" +version = "2.9.1" +description = "Internationalization utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +name = "black" +version = "21.12b0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +click = ">=7.1.2" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0,<1" +platformdirs = ">=2" +tomli = ">=0.2.6,<2.0.0" +typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +typing-extensions = [ + {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}, + {version = "!=3.10.0.1", markers = "python_version >= \"3.10\""}, +] + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +python2 = ["typed-ast (>=1.4.3)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "click" +version = "8.0.4" +description = "Composable command line interface toolkit" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] +name = "colorama" +version = "0.4.4" +description = "Cross-platform colored terminal text." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "importlib-metadata" +version = "4.11.3" +description = "Read metadata from Python packages" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "jplephem" +version = "2.17" +description = "Use a JPL ephemeris to predict planet positions." +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +numpy = "*" + +[[package]] +name = "kosmorrolib" +version = "1.0.6" +description = "A library to computes the ephemerides." +category = "main" +optional = false +python-versions = ">=3.7,<3.11" + +[package.dependencies] +python-dateutil = ">=2.8,<3.0" +skyfield = ">=1.21,<2.0" +skyfield-data = ">=3,<5" + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "numpy" +version = "1.21.5" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.7,<3.11" + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "platformdirs" +version = "2.5.1" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pyparsing" +version = "3.0.7" +description = "Python parsing module" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "pytest" +version = "7.1.1" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2021.3" +description = "World timezone definitions, modern and historical" +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "sgp4" +version = "2.20" +description = "Track Earth satellites given TLE data, using up-to-date 2020 SGP4 routines." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "skyfield" +version = "1.42" +description = "Elegant astronomy for Python" +category = "main" +optional = false +python-versions = "*" + +[package.dependencies] +certifi = ">=2017.4.17" +jplephem = ">=2.13" +numpy = "*" +sgp4 = ">=2.2" + +[[package]] +name = "skyfield-data" +version = "4.0.0" +description = "Data package for Skyfield" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" + +[package.extras] +dev = ["jplephem", "numpy", "tox", "colorama", "termcolor"] +tests = ["pytest", "skyfield", "mock"] + +[[package]] +name = "tabulate" +version = "0.8.9" +description = "Pretty-print tabular data" +category = "main" +optional = false +python-versions = "*" + +[package.extras] +widechars = ["wcwidth"] + +[[package]] +name = "termcolor" +version = "1.1.0" +description = "ANSII Color formatting for output in terminal." +category = "main" +optional = false +python-versions = "*" + +[[package]] +name = "tomli" +version = "1.2.3" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typed-ast" +version = "1.5.2" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "4.1.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "zipp" +version = "3.7.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"] + +[metadata] +lock-version = "1.1" +python-versions = ">=3.7,<3.11" +content-hash = "4c2045cb19d088e3205728efd723e8255ded94f211f21ca7f64aea90c05fe3ad" + +[metadata.files] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +aurornis = [ + {file = "aurornis-1.2.0-py3-none-any.whl", hash = "sha256:660b57e9d1701d88fb7cc4af3118c927e9e001d2ab39cb145695eb8470f4642a"}, + {file = "aurornis-1.2.0.tar.gz", hash = "sha256:bc68845be5cdf2d69d26c677214f7435365967b4a65dc3772ab05353b2136d95"}, +] +babel = [ + {file = "Babel-2.9.1-py2.py3-none-any.whl", hash = "sha256:ab49e12b91d937cd11f0b67cb259a57ab4ad2b59ac7a3b41d6c06c0ac5b0def9"}, + {file = "Babel-2.9.1.tar.gz", hash = "sha256:bc0c176f9f6a994582230df350aa6e05ba2ebe4b3ac317eab29d9be5d2768da0"}, +] +black = [ + {file = "black-21.12b0-py3-none-any.whl", hash = "sha256:a615e69ae185e08fdd73e4715e260e2479c861b5740057fde6e8b4e3b7dd589f"}, + {file = "black-21.12b0.tar.gz", hash = "sha256:77b80f693a569e2e527958459634f18df9b0ba2625ba4e0c2d5da5be42e6f2b3"}, +] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +click = [ + {file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"}, + {file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"}, +] +colorama = [ + {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, + {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, +] +importlib-metadata = [ + {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, + {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, +] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +jplephem = [ + {file = "jplephem-2.17.tar.gz", hash = "sha256:e1c6e5565c4d00485f1063241b4d1eff044585c22b8e97fad0ff2f6efb8aaa27"}, +] +kosmorrolib = [ + {file = "kosmorrolib-1.0.6-py3-none-any.whl", hash = "sha256:9ffbbaa8666c1222bf8a25d543afa72a0a80249017d342a6667bcae8657effc0"}, + {file = "kosmorrolib-1.0.6.tar.gz", hash = "sha256:8c77f40b346d183147cb3e927b3ea5c7d4d7067ce7e49edb73821566f74d5e51"}, +] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +numpy = [ + {file = "numpy-1.21.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:301e408a052fdcda5cdcf03021ebafc3c6ea093021bf9d1aa47c54d48bdad166"}, + {file = "numpy-1.21.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7e8f6216f180f3fd4efb73de5d1eaefb5f5a1ee5b645c67333033e39440e63a"}, + {file = "numpy-1.21.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc7a7d7b0ed72589fd8b8486b9b42a564f10b8762be8bd4d9df94b807af4a089"}, + {file = "numpy-1.21.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58ca1d7c8aef6e996112d0ce873ac9dfa1eaf4a1196b4ff7ff73880a09923ba7"}, + {file = "numpy-1.21.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4b2fb01f1b4ddbe2453468ea0719f4dbb1f5caa712c8b21bb3dd1480cd30d9"}, + {file = "numpy-1.21.5-cp310-cp310-win_amd64.whl", hash = "sha256:cc1b30205d138d1005adb52087ff45708febbef0e420386f58664f984ef56954"}, + {file = "numpy-1.21.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:08de8472d9f7571f9d51b27b75e827f5296295fa78817032e84464be8bb905bc"}, + {file = "numpy-1.21.5-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4fe6a006557b87b352c04596a6e3f12a57d6e5f401d804947bd3188e6b0e0e76"}, + {file = "numpy-1.21.5-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3d893b0871322eaa2f8c7072cdb552d8e2b27645b7875a70833c31e9274d4611"}, + {file = "numpy-1.21.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:341dddcfe3b7b6427a28a27baa59af5ad51baa59bfec3264f1ab287aa3b30b13"}, + {file = "numpy-1.21.5-cp37-cp37m-win32.whl", hash = "sha256:ca9c23848292c6fe0a19d212790e62f398fd9609aaa838859be8459bfbe558aa"}, + {file = "numpy-1.21.5-cp37-cp37m-win_amd64.whl", hash = "sha256:025b497014bc33fc23897859350f284323f32a2fff7654697f5a5fc2a19e9939"}, + {file = "numpy-1.21.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a5098df115340fb17fc93867317a947e1dcd978c3888c5ddb118366095851f8"}, + {file = "numpy-1.21.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:311283acf880cfcc20369201bd75da907909afc4666966c7895cbed6f9d2c640"}, + {file = "numpy-1.21.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b545ebadaa2b878c8630e5bcdb97fc4096e779f335fc0f943547c1c91540c815"}, + {file = "numpy-1.21.5-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c5562bcc1a9b61960fc8950ade44d00e3de28f891af0acc96307c73613d18f6e"}, + {file = "numpy-1.21.5-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:eed2afaa97ec33b4411995be12f8bdb95c87984eaa28d76cf628970c8a2d689a"}, + {file = "numpy-1.21.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:61bada43d494515d5b122f4532af226fdb5ee08fe5b5918b111279843dc6836a"}, + {file = "numpy-1.21.5-cp38-cp38-win32.whl", hash = "sha256:7b9d6b14fc9a4864b08d1ba57d732b248f0e482c7b2ff55c313137e3ed4d8449"}, + {file = "numpy-1.21.5-cp38-cp38-win_amd64.whl", hash = "sha256:dbce7adeb66b895c6aaa1fad796aaefc299ced597f6fbd9ceddb0dd735245354"}, + {file = "numpy-1.21.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:507c05c7a37b3683eb08a3ff993bd1ee1e6c752f77c2f275260533b265ecdb6c"}, + {file = "numpy-1.21.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:00c9fa73a6989895b8815d98300a20ac993c49ac36c8277e8ffeaa3631c0dbbb"}, + {file = "numpy-1.21.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69a5a8d71c308d7ef33ef72371c2388a90e3495dbb7993430e674006f94797d5"}, + {file = "numpy-1.21.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2d8adfca843bc46ac199a4645233f13abf2011a0b2f4affc5c37cd552626f27b"}, + {file = "numpy-1.21.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c293d3c0321996cd8ffe84215ffe5d269fd9d1d12c6f4ffe2b597a7c30d3e593"}, + {file = "numpy-1.21.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c978544be9e04ed12016dd295a74283773149b48f507d69b36f91aa90a643e5"}, + {file = "numpy-1.21.5-cp39-cp39-win32.whl", hash = "sha256:2a9add27d7fc0fdb572abc3b2486eb3b1395da71e0254c5552b2aad2a18b5441"}, + {file = "numpy-1.21.5-cp39-cp39-win_amd64.whl", hash = "sha256:1964db2d4a00348b7a60ee9d013c8cb0c566644a589eaa80995126eac3b99ced"}, + {file = "numpy-1.21.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a7c4b701ca418cd39e28ec3b496e6388fe06de83f5f0cb74794fa31cfa384c02"}, + {file = "numpy-1.21.5.zip", hash = "sha256:6a5928bc6241264dce5ed509e66f33676fc97f464e7a919edc672fb5532221ee"}, +] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] +platformdirs = [ + {file = "platformdirs-2.5.1-py3-none-any.whl", hash = "sha256:bcae7cab893c2d310a711b70b24efb93334febe65f8de776ee320b517471e227"}, + {file = "platformdirs-2.5.1.tar.gz", hash = "sha256:7535e70dfa32e84d4b34996ea99c5e432fa29a708d0f4e394bbcb2a8faa4f16d"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pyparsing = [ + {file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"}, + {file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"}, +] +pytest = [ + {file = "pytest-7.1.1-py3-none-any.whl", hash = "sha256:92f723789a8fdd7180b6b06483874feca4c48a5c76968e03bb3e7f806a1869ea"}, + {file = "pytest-7.1.1.tar.gz", hash = "sha256:841132caef6b1ad17a9afde46dc4f6cfa59a05f9555aae5151f73bdf2820ca63"}, +] +python-dateutil = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] +pytz = [ + {file = "pytz-2021.3-py2.py3-none-any.whl", hash = "sha256:3672058bc3453457b622aab7a1c3bfd5ab0bdae451512f6cf25f64ed37f5b87c"}, + {file = "pytz-2021.3.tar.gz", hash = "sha256:acad2d8b20a1af07d4e4c9d2e9285c5ed9104354062f275f3fcd88dcef4f1326"}, +] +sgp4 = [ + {file = "sgp4-2.20-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b2169cd536355fc67e3870acea34c4fc22b2ccecab2c0bf45a01edfe646fe3d0"}, + {file = "sgp4-2.20-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:7d848698ae2bf5bb9ea2082640b0417175a6b2e6e8d580114ebe04265cd1bfb4"}, + {file = "sgp4-2.20-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1d3b5abc07266203f4b453e7c1ca8403ef2d7b8d1779c14c9a4177e4b1558ba5"}, + {file = "sgp4-2.20-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:6c906973dc2966cba8065f359c3eaa18505280be8f625b54ebb98f5ddeb8d205"}, + {file = "sgp4-2.20-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:3e3eb29c308d30d010316832606af184d243d5aab8ccc5d589f3cb85d74471f7"}, + {file = "sgp4-2.20-cp36-cp36m-win32.whl", hash = "sha256:e73680b3b7b8b977766ae91eadd92988a0c3e36248dcac5d8263a957bec34a04"}, + {file = "sgp4-2.20-cp36-cp36m-win_amd64.whl", hash = "sha256:cf4d5ac32b5e84c7b420109a09ea3c3741844fa92776f79d1c852cc67e2c1364"}, + {file = "sgp4-2.20-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2a89fc1debacfa10cf55ae1d40472037a57687b1ae3b66e7196e5af53fb96a56"}, + {file = "sgp4-2.20-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:4d5eb2aff4f645f5020ac869ec453dcd807836b3eb8b459d569eda40c358cd76"}, + {file = "sgp4-2.20-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2b449e6cab15748608c6083f86b0059d26093f76fa227010df09d8f0954b3bbd"}, + {file = "sgp4-2.20-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:8c2f4f99ab360a93768bf88ad6a9fdf83edfa6292e0a0ac8924c85fde11b2055"}, + {file = "sgp4-2.20-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:ee3688ae409a201107927b24be10db2a61efdd5a919737b4900c57ee8b3a22d6"}, + {file = "sgp4-2.20-cp37-cp37m-win32.whl", hash = "sha256:24477da85936b864fd765911f808a4d113c81189c2a0ecd5992bcdf9aecbf5ef"}, + {file = "sgp4-2.20-cp37-cp37m-win_amd64.whl", hash = "sha256:ee329571c1a25ce4f1e2b01d6f923791d16c5a7a3a75219317073bc50a7d25fe"}, + {file = "sgp4-2.20-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1af727dfe02ef32babd124644e96b8cc109b22142efb44e37d0e3aaf4c38a1ab"}, + {file = "sgp4-2.20-cp38-cp38-manylinux1_i686.whl", hash = "sha256:43c2c6d464144bb80987b2e66f3992add58c65e095abe2b9d567650fdb877a9d"}, + {file = "sgp4-2.20-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:67f99f534fdc5650d8efe516e77dd9b43e4cb8ab9b38f2b66484085c0ff75077"}, + {file = "sgp4-2.20-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:dfc5214b65ad8229c499f0da3f5042a18239f12f4318e90d892a79dcbf27282f"}, + {file = "sgp4-2.20-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:e8ecc01fdffe81f11ca94bb255024379e62c92f73e2baec2bdf5a3c3108221ff"}, + {file = "sgp4-2.20-cp38-cp38-win32.whl", hash = "sha256:06586caf071e3427bc4e5a5c84a806045532040dc2c35ca0ff12f34cab2ecb5c"}, + {file = "sgp4-2.20-cp38-cp38-win_amd64.whl", hash = "sha256:642bae76c6e55b72feda3c5ca3721e837f2702816a120805349b06e40f85faea"}, + {file = "sgp4-2.20-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbfffe1ff2c223804e2ebdeb568baad46f40342943c4a74169fd75dc5dddda57"}, + {file = "sgp4-2.20-cp39-cp39-manylinux1_i686.whl", hash = "sha256:05f22b4fd91861ee2e0e03a528c1aef11a8b263a60ab5f723d32cdb65dac3eaa"}, + {file = "sgp4-2.20-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:80f9b2f1c2ac53c7b8cbf1a08e5a39a56c1b7c18d3e0de922078758a784b0b20"}, + {file = "sgp4-2.20-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:f5d2830f2896cecc4af0729cd328994ae823f277f481d4fc992383eb79f3742a"}, + {file = "sgp4-2.20-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ea37423d4317ec5351a4e3b6a3947a6053978e5290549d77ba375459527f7ccb"}, + {file = "sgp4-2.20-cp39-cp39-win32.whl", hash = "sha256:d42a3dcdfd394c5059b99bbf8b35311e03e87d21fbfb6ba2d5c5d2dfad15d4d7"}, + {file = "sgp4-2.20-cp39-cp39-win_amd64.whl", hash = "sha256:876b82d41a859c9ff65d3bdb7f6a3cecfc63bea529b4dc751b06eefbd6c3f1e0"}, + {file = "sgp4-2.20.tar.gz", hash = "sha256:9fde328872f484eb644dabe32122ba617570ff61b548b7200a9d63629ac3097c"}, +] +six = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] +skyfield = [ + {file = "skyfield-1.42.tar.gz", hash = "sha256:3447fd3a9a9dabc2080e6a4efb56d9883decf261ad78e6c9b3f187c4fc761ace"}, +] +skyfield-data = [ + {file = "skyfield-data-4.0.0.tar.gz", hash = "sha256:128d407e43a04be66c44b03914f9147b5e65b96078db776e6a4f5538ab0b74bf"}, + {file = "skyfield_data-4.0.0-py2.py3-none-any.whl", hash = "sha256:bd81bf9032d4833a766f4127e868d62674083ca2ccaea07e6d025e132c9c574e"}, +] +tabulate = [ + {file = "tabulate-0.8.9-py3-none-any.whl", hash = "sha256:d7c013fe7abbc5e491394e10fa845f8f32fe54f8dc60c6622c6cf482d25d47e4"}, + {file = "tabulate-0.8.9.tar.gz", hash = "sha256:eb1d13f25760052e8931f2ef80aaf6045a6cceb47514db8beab24cded16f13a7"}, +] +termcolor = [ + {file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"}, +] +tomli = [ + {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"}, + {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"}, +] +typed-ast = [ + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, +] +typing-extensions = [ + {file = "typing_extensions-4.1.1-py3-none-any.whl", hash = "sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2"}, + {file = "typing_extensions-4.1.1.tar.gz", hash = "sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42"}, +] +zipp = [ + {file = "zipp-3.7.0-py3-none-any.whl", hash = "sha256:b47250dd24f92b7dd6a0a8fc5244da14608f3ca90a5efcd37a3b1642fac9a375"}, + {file = "zipp-3.7.0.tar.gz", hash = "sha256:9f50f446828eb9d45b267433fd3e9da8d801f614129124863f9c51ebceafb87d"}, +] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..da5f284 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,32 @@ +[tool.poetry] +name = "kosmorro" +version = "0.10.9" +description = "A program to compute the ephemerides." +authors = ["Jérôme Deuchnord "] +license = "AGPL-3.0-or-later" + +include = [ + "CHANGELOG.md", + "kosmorro/locales/*/LC_MESSAGES/*.mo", + "kosmorro/assets", +] + +[tool.poetry.scripts] +kosmorro = 'kosmorro.__main__:main' + +[tool.poetry.dependencies] +python = ">=3.7,<3.11" +tabulate = "^0.8" +termcolor = "^1.1" +kosmorrolib = "^1.0" +python-dateutil = "^2.8" +Babel = "^2.9" + +[tool.poetry.dev-dependencies] +black = "^21.12b0" +pytest = "^7.0" +aurornis = "^1.2" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/setup.cfg b/setup.cfg index 089fb4b..2a8fe64 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,11 +2,11 @@ charset = utf-8 keywords = _ ngettext width = 120 -output_file = _kosmorro/locales/messages.pot +output_file = kosmorro/locales/messages.pot omit_header = true copyright_holder = Jérôme Deuchnord -input_paths=kosmorro,_kosmorro +input_paths=kosmorro [compile_catalog] domain = messages -directory = _kosmorro/locales +directory = kosmorro/locales diff --git a/setup.py b/setup.py deleted file mode 100644 index 8cafe4f..0000000 --- a/setup.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python3 - -# Kosmorro - Compute The Next Ephemerides -# Copyright (C) 2019 Jérôme Deuchnord -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -import pathlib -from setuptools import setup, find_packages - -from _kosmorro.__version__ import __version__ - -HERE = pathlib.Path(__file__).parent -README = (HERE / "README.md").read_text() - -setup( - name="kosmorro", - version=__version__, - author="Jérôme Deuchnord", - author_email="jerome@deuchnord.fr", - url="http://kosmorro.space", - license="AGPL-3.0", - description="A program that computes the ephemerides.", - long_description=README, - long_description_content_type="text/markdown", - keywords="kosmorro astronomy ephemerides ephemeris", - packages=find_packages(), - scripts=["kosmorro"], - include_package_data=True, - data_files=[ - ("man/man1", ["manpage/kosmorro.1"]), - ("man/man7", ["manpage/kosmorro.7"]), - ], - install_requires=[ - "kosmorrolib", - "tabulate", - "termcolor", - "python-dateutil", - "babel", - ], - classifiers=[ - "Development Status :: 3 - Alpha", - "Operating System :: POSIX :: Linux", - "Operating System :: MacOS :: MacOS X", - "Environment :: Console", - "Topic :: Scientific/Engineering :: Astronomy", - ], - python_requires=">=3.7", -) diff --git a/tests/utils.py b/tests/utils.py index f33bd73..d9eb5d7 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -7,7 +7,7 @@ from os import environ from typing import Union DEFAULT_ENVIRONMENT = {"PATH": environ["PATH"]} -KOSMORRO = ["./kosmorro", "--no-color"] +KOSMORRO = ["kosmorro", "--no-color"] CURRENT_MOON_PHASE_PATTERN = re.compile( r"^Moon phase: ("