Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: use uv #209

Merged
merged 8 commits into from
Dec 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
dependencies:
- changed-files:
- any-glob-to-any-file: 'poetry.lock'
- any-glob-to-any-file: '**/*.lock'

docker:
- changed-files:
Expand Down
21 changes: 8 additions & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,17 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
python-version: "3.12"
enable-cache: true

- name: Install poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: Set up Python
run: uv python install

- name: Build
run: poetry build
- name: Build the project
run: uv build build

- name: Publish (PyPI)
if: ${{ matrix.environment=='pypi' }}
run: |
poetry config pypi-token.pypi ${{ secrets.PYPI_API_TOKEN }}
poetry build
poetry publish
run: uv publish --token ${{ secrets.PYPI_API_TOKEN }}
52 changes: 23 additions & 29 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,19 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
python-version: "3.12"
enable-cache: true

- name: Install poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: Set up Python
run: uv python install

- name: Install dependencies with Poetry
run: poetry install
- name: Install the project
run: uv sync --all-extras --dev

- name: Run tests
run: poetry run pytest --cov . --cov-report xml -n auto
run: uv run pytest --cov . --cov-report xml -n auto

- name: Upload coverage reports to Codecov
uses: codecov/[email protected]
Expand All @@ -43,21 +41,19 @@ jobs:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
python-version: "3.12"
enable-cache: true

- name: Install poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: Set up Python
run: uv python install

- name: Install dependencies
run: poetry install
- name: Install the project
run: uv sync --all-extras --dev

- name: Run pre-commit hooks
run: poetry run pre-commit run -a
run: uv run pre-commit run -a

sphinx:
runs-on: ubuntu-latest
Expand All @@ -66,18 +62,16 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
python-version: "3.12"
enable-cache: true

- name: Install poetry
uses: snok/install-poetry@v1
with:
version: 1.8.3
- name: Set up Python
run: uv python install

- name: Install dependencies
run: poetry install
- name: Install the project
run: uv sync --all-extras --dev

- name: Generate html docs
run: make docs.sphinx.html
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ instance/
.scrapy

# Sphinx documentation
docs/_build/
docs/build/

# PyBuilder
.pybuilder/
Expand Down
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
15 changes: 7 additions & 8 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
# Based on https://docs.readthedocs.io/en/stable/build-customization.html#install-dependencies-with-poetry
# Based on https://docs.readthedocs.io/en/stable/build-customization.html#install-dependencies-with-uv

version: 2

build:
os: "ubuntu-22.04"
tools:
python: "3.12"
jobs:
post_create_environment:
- pip install poetry
post_install:
# VIRTUAL_ENV needs to be set manually for now.
# See https://github.com/readthedocs/readthedocs.org/pull/11152/
- VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install
commands:
- asdf plugin add uv
- asdf install uv latest
- asdf global uv latest
- uv sync --extra docs --frozen
- uv run -m sphinx -T -b html -d docs/build/doctrees -D language=en docs/source $READTHEDOCS_OUTPUT/html

sphinx:
configuration: docs/source/conf.py
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@ docs.sphinx.html:
# This deletes everything from the /docs/build directory, using the
# sphinx Makefile in /docs. It is only really useful for local builds,
# given that the /docs/build directory is in .gitignore.
poetry run make -C docs clean
uv run make -C docs clean

@echo "Generating source files with sphinx-apidoc"
# This uses sphinx-apidoc to automatically generate rst files in
# /docs/source for each public module in the pyoda_time package
# recursively. Those files will contain directives (e.g. :automodule:)
# which can later be handled by the autodoc extension.
poetry run sphinx-apidoc --no-toc --no-headings --force -d 1 -o docs/source pyoda_time
uv run sphinx-apidoc --no-toc --no-headings --force -d 1 -o docs/source pyoda_time

@echo "Building html docs with sphinx-autodoc"
# Uses the sphinx Makefile in /docs to build the documentation.
# The autodoc extension is enabled in /docs/conf.py.
# That extensions interprets the directives in the files which were
# generated by sphinx-apidoc in the previous command, allowing
# us to turn that into html documentation.
poetry run make -C docs SPHINXOPTS=-W html
uv run -m sphinx -T -b html docs/source docs/build/html
77 changes: 77 additions & 0 deletions my-key.asc
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
qpYu47GYbXTTl1ca9JUZBwig
=HTzW
-----END PGP PUBLIC KEY BLOCK-----
Loading
Loading