| @@ -1,66 +1,30 @@ | |||
| name: Release Application | |||
| on: | |||
| push: | |||
| tags: ['v*'] | |||
| - release | |||
| jobs: | |||
| release: | |||
| name: Create release | |||
| runs-on: ubuntu-latest | |||
| steps: | |||
| - name: Checkout code | |||
| uses: actions/checkout@v2 | |||
| - name: Setup | |||
| run: | | |||
| sudo apt update | |||
| sudo apt install ruby | |||
| sudo gem install ronn | |||
| - name: Prepare release | |||
| id: prepare_release | |||
| run: | | |||
| changelog="$(git diff $(git describe --abbrev=0 --tags $(git describe --abbrev=0 --tags)^) -- CHANGELOG.md | grep -E '\+[#*]' | sed 's/^+/\n/')" | |||
| echo "::set-output name=changelog::$changelog" | |||
| - name: Create release | |||
| id: create_release | |||
| uses: actions/create-release@v1 | |||
| env: | |||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |||
| with: | |||
| tag_name: ${{ github.ref }} | |||
| release_name: Version ${{ github.ref }} | |||
| draft: true | |||
| prerelease: false | |||
| body: | | |||
| ${{ steps.prepare_release.outputs.changelog }} | |||
| pip: | |||
| name: Release to PyPI | |||
| pipy: | |||
| name: Build and release to PyPI | |||
| runs-on: ubuntu-latest | |||
| steps: | |||
| - uses: actions/checkout@v1 | |||
| - name: Set up Python | |||
| uses: actions/setup-python@v1 | |||
| with: | |||
| python-version: '3.7' | |||
| python-version: '3.x' | |||
| - name: Setup environment | |||
| run: | | |||
| sudo apt update | |||
| python -m pip install --upgrade pip poetry | |||
| sudo apt install ruby | |||
| sudo gem install ronn | |||
| - name: Install dependencies | |||
| - name: Build package | |||
| run: | | |||
| python -m pip install --upgrade pip pipenv twine wheel | |||
| pipenv lock --pre | |||
| pipenv sync | |||
| pipenv run pip freeze > requirements.txt | |||
| pip install -r requirements.txt | |||
| - name: Build and publish | |||
| poetry install | |||
| poetry build | |||
| - name: Publish package | |||
| env: | |||
| TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} | |||
| TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} | |||
| POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_PASSWORD }} | |||
| run: | | |||
| make build | |||
| twine upload dist/* | |||
| poetry publish | |||
| @@ -14,11 +14,9 @@ jobs: | |||
| fail-fast: false | |||
| matrix: | |||
| os: | |||
| - ubuntu-18.04 | |||
| - ubuntu-20.04 | |||
| - macos-10.15 | |||
| - ubuntu-latest | |||
| - macos-11.0 | |||
| - windows-2019 | |||
| - windows-latest | |||
| python_version: | |||
| - '3.7' | |||
| - '3.8' | |||
| @@ -34,37 +32,23 @@ jobs: | |||
| python-version: ${{ matrix.python_version }} | |||
| architecture: x64 | |||
| - name: Prepare environment (non-Windows systems) | |||
| if: ${{ matrix.os != 'windows-2019' }} | |||
| - name: Prepare environment | |||
| run: | | |||
| pip install --upgrade pip pipenv | |||
| python3 -m pip install --upgrade pip poetry | |||
| - name: Prepare environment (Windows) | |||
| if: ${{ matrix.os == 'windows-2019' }} | |||
| run: | | |||
| python -mpip install --upgrade pip pipenv | |||
| - name: Install dependencies (all systems) | |||
| - name: Install dependencies | |||
| env: | |||
| PIP_PREFER_BINARY: 1 | |||
| run: | | |||
| pipenv lock --pre | |||
| pipenv sync --dev | |||
| pipenv install --dev | |||
| - name: Install dependencies (Windows) | |||
| if: ${{ matrix.os == 'windows-2019' }} | |||
| run: | | |||
| pipenv lock -r > requirements.txt | |||
| python -mpip install -r requirements.txt | |||
| python3 -m poetry install | |||
| - name: Run doc tests (with coverage) | |||
| if: ${{ matrix.os == 'ubuntu-20.04' && matrix.python_version == '3.10' }} | |||
| if: ${{ matrix.os == 'ubuntu-latest' && matrix.python_version == '3.10' }} | |||
| run: | | |||
| make coverage-doctests | |||
| - name: Run doc tests (without coverage) | |||
| if: ${{ matrix.os != 'ubuntu-20.04' || matrix.python_version != '3.10' }} | |||
| if: ${{ matrix.os != 'ubuntu-latest' || matrix.python_version != '3.10' }} | |||
| run: | | |||
| make doctests | |||
| @@ -72,6 +56,6 @@ jobs: | |||
| env: | |||
| COVERALLS_PRO_TOKEN: ${{ secrets.COVERALLS_TOKEN }} | |||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |||
| if: ${{ matrix.os == 'ubuntu-20.04' && matrix.python_version == '3.10' }} | |||
| if: ${{ matrix.os == 'ubuntu-latest' && matrix.python_version == '3.10' }} | |||
| run: | | |||
| pipenv run coveralls --service=github | |||
| python3 -m poetry run coveralls --service=github | |||
| @@ -7,3 +7,4 @@ Pipfile.lock | |||
| # Gitpod-specific: | |||
| /.vscode/** | |||
| poetry.lock | |||
| @@ -8,5 +8,5 @@ vscode: | |||
| - editorconfig.editorconfig | |||
| tasks: | |||
| - before: pip install -U pip pipenv | |||
| init: pipenv lock --pre && pipenv sync --dev --pre | |||
| - before: pip install -U pip poetry | |||
| init: poetry install | |||
| @@ -1,42 +1,19 @@ | |||
| black: | |||
| pipenv run black kosmorrolib setup.py | |||
| poetry run black kosmorrolib setup.py | |||
| .PHONY: tests | |||
| tests: doctests | |||
| coverage-doctests: | |||
| pipenv run python3 -m coverage run tests.py | |||
| python3 -m poetry run coverage run tests.py | |||
| coverage-report: | |||
| pipenv run python3 -m coverage report | |||
| python3 -m poetry run coverage report | |||
| doctests: | |||
| pipenv run python3 tests.py | |||
| .PHONY: build | |||
| build: | |||
| python3 setup.py sdist bdist_wheel | |||
| env: | |||
| @if [[ "$$RELEASE_NUMBER" == "" ]]; \ | |||
| then echo "Missing environment variable: RELEASE_NUMBER."; \ | |||
| echo 'Example: export RELEASE_NUMBER="1.0.0" (without the leading "v")'; \ | |||
| exit 1; \ | |||
| fi | |||
| python3 -m poetry run python tests.py | |||
| changelog: | |||
| conventional-changelog -p angular -i CHANGELOG.md -s | |||
| @echo -e "\e[32m✔\e[33m Changelog generated. Don't forget to update the version number before committing.\e[0m" | |||
| @echo -e " When everything is good, finish the release with 'make tag'." | |||
| tag: env | |||
| git add CHANGELOG.md kosmorrolib/__version__.py | |||
| git commit -m "build: bump version $$RELEASE_NUMBER" | |||
| git tag "v$$RELEASE_NUMBER" | |||
| git checkout features | |||
| git merge main | |||
| git checkout main | |||
| @echo | |||
| @echo -e "\e[1mVersion \e[36m$$RELEASE_NUMBER\e[39m successfully tagged!" | |||
| @echo -e "Invoke \e[33mgit push origin master features v$$RELEASE_NUMBER\e[39m to finish." | |||
| @@ -1,19 +0,0 @@ | |||
| [[source]] | |||
| name = "pypi" | |||
| url = "https://pypi.org/simple" | |||
| verify_ssl = true | |||
| [dev-packages] | |||
| coveralls = "*" | |||
| parameterized = "*" | |||
| black = "*" | |||
| coverage = "*" | |||
| [packages] | |||
| skyfield = ">=1.32.0,<2.0.0" | |||
| numpy = ">=1.17.0,<2.0.0" | |||
| python-dateutil = ">=2.8.0,<3.0.0" | |||
| skyfield-data = ">=3.0.0,<4.0.0" | |||
| [requires] | |||
| python_version = "3" | |||
| @@ -18,9 +18,9 @@ Kosmorrolib is available [on PyPI](https://pypi.org/project/kosmorrolib/). To us | |||
| ### Development environment | |||
| First, install [Pipenv](https://pypi.org/project/pipenv/). | |||
| To contribute to Kosmorrolib, you will need [Poetry](https://python-poetry.org), a software to manage the project from development to publishing. | |||
| Clone this repository and run `pipenv sync` to install all the dependencies. | |||
| Clone this repository and run `poetry install` to install the dependencies. | |||
| And that's all, your development environment is ready for the fight! 👏 | |||
| ## Documentation | |||
| @@ -1,26 +0,0 @@ | |||
| #!/usr/bin/env python3 | |||
| # Kosmorrolib - The Library To Compute Your Ephemerides | |||
| # Copyright (C) 2021 Jérôme Deuchnord <jerome@deuchnord.fr> | |||
| # | |||
| # 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 <https://www.gnu.org/licenses/>. | |||
| __title__ = "kosmorrolib" | |||
| __description__ = "A library to compute your ephemerides" | |||
| __url__ = "http://kosmorro.space/lib" | |||
| __version__ = "1.0.1" | |||
| __author__ = "Jérôme Deuchnord" | |||
| __author_email__ = "jerome@deuchnord.fr" | |||
| __license__ = "AGPL-v3" | |||
| __copyright__ = "2021 - Jérôme Deuchnord" | |||
| @@ -0,0 +1,37 @@ | |||
| [tool.poetry] | |||
| name = "kosmorrolib" | |||
| version = "1.0.1" | |||
| authors = ["Jérôme Deuchnord <jerome@deuchnord.fr>"] | |||
| homepage = "https://kosmorro.space/lib" | |||
| repository = "https://github.com/Kosmorro/lib" | |||
| documentation = "https://kosmorro.space/lib/doc" | |||
| keywords = ["kosmorro", "astronomy", "ephemerides", "ephemeris"] | |||
| license = "AGPL-3.0-or-later" | |||
| description = "A library to computes the ephemerides." | |||
| readme = "README.md" | |||
| include = ["CHANGELOG.md"] | |||
| classifiers = [ | |||
| "Development Status :: 5 - Production/Stable", | |||
| "Topic :: Scientific/Engineering :: Astronomy", | |||
| "Topic :: Software Development :: Libraries :: Python Modules", | |||
| "Intended Audience :: Developers", | |||
| "Intended Audience :: Education", | |||
| ] | |||
| [tool.poetry.dependencies] | |||
| python = "^3.7" | |||
| skyfield = "^1.21" | |||
| skyfield-data = "^3.0" | |||
| numpy = "^1.17" | |||
| python-dateutil = "^2.8" | |||
| [tool.poetry.dev-dependencies] | |||
| black = "^21.11b1" | |||
| parameterized = "^0.8.1" | |||
| coverage = "^6.1.2" | |||
| coveralls = "^3.3.1" | |||
| [build-system] | |||
| requires = ["poetry-core>=1.0.0"] | |||
| build-backend = "poetry.core.masonry.api" | |||
| @@ -1,57 +0,0 @@ | |||
| #!/usr/bin/env python3 | |||
| # Kosmorrolib - The Library To Compute Your Ephemerides | |||
| # Copyright (C) 2021 Jérôme Deuchnord <jerome@deuchnord.fr> | |||
| # | |||
| # 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 <https://www.gnu.org/licenses/>. | |||
| import pathlib | |||
| from setuptools import setup, find_packages | |||
| from kosmorrolib.__version__ import __version__ | |||
| HERE = pathlib.Path(__file__).parent | |||
| README = (HERE / "README.md").read_text() | |||
| setup( | |||
| name="kosmorrolib", | |||
| version=__version__, | |||
| author="Jérôme Deuchnord", | |||
| author_email="jerome@deuchnord.fr", | |||
| url="http://kosmorro.space/lib", | |||
| license="AGPL-v3", | |||
| description="A library to computes the ephemerides.", | |||
| long_description=README, | |||
| long_description_content_type="text/markdown", | |||
| keywords=["kosmorro", "astronomy", "ephemerides", "ephemeris"], | |||
| packages=["kosmorrolib"], | |||
| install_requires=[ | |||
| "skyfield>=1.21.0,<2.0.0", | |||
| "skyfield-data>=3.0.0,<4.0.0", | |||
| "numpy>=1.17.0,<2.0.0", | |||
| "python-dateutil", | |||
| ], | |||
| classifiers=[ | |||
| "Development Status :: 5 - Production/Stable", | |||
| "Intended Audience :: Developers", | |||
| "Intended Audience :: Education", | |||
| "License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)", | |||
| "Topic :: Software Development :: Libraries :: Python Modules", | |||
| "Programming Language :: Python :: 3.7", | |||
| "Programming Language :: Python :: 3.8", | |||
| "Programming Language :: Python :: 3.9", | |||
| "Topic :: Scientific/Engineering :: Astronomy", | |||
| ], | |||
| python_requires=">=3.7", | |||
| ) | |||