Skip to content

Commit

Permalink
ci,pkg: poetry -> uv (#457)
Browse files Browse the repository at this point in the history
  • Loading branch information
tony committed Nov 25, 2024
1 parent f57314b commit b07ed77
Show file tree
Hide file tree
Showing 12 changed files with 1,544 additions and 1,704 deletions.
21 changes: 10 additions & 11 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,37 +28,36 @@ jobs:
python_files:
- 'vcspull/**'
- pyproject.toml
- poetry.lock
- uv.lock
- name: Should publish
if: steps.changes.outputs.docs == 'true' || steps.changes.outputs.root_docs == 'true' || steps.changes.outputs.python_files == 'true'
run: echo "PUBLISH=$(echo true)" >> $GITHUB_ENV

- name: Install poetry
- name: Install uv
uses: astral-sh/setup-uv@v3
if: env.PUBLISH == 'true'
run: pipx install "poetry==1.8.4"
with:
enable-cache: true

- name: Set up Python ${{ matrix.python-version }}
if: env.PUBLISH == 'true'
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'poetry'
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies [w/ docs]
- name: Install dependencies
if: env.PUBLISH == 'true'
run: poetry install --with=docs,lint
run: uv sync --all-extras --dev

- name: Print python versions
if: env.PUBLISH == 'true'
run: |
python -V
poetry run python -V
uv run python -V
- name: Build documentation
if: env.PUBLISH == 'true'
run: |
pushd docs; make SPHINXBUILD='poetry run sphinx-build' html; popd
pushd docs; make SPHINXBUILD='uv run sphinx-build' html; popd
- name: Push documentation to S3
if: env.PUBLISH == 'true'
Expand Down
39 changes: 20 additions & 19 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,33 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Install poetry
run: pipx install "poetry==1.8.4"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'poetry'
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
run: poetry install --with=docs,test,coverage,lint
run: uv sync --all-extras --dev

- name: Print python versions
run: |
python -V
poetry run python -V
uv run python -V
- name: Lint with ruff check
run: poetry run ruff check .
run: uv run ruff check .

- name: Format with ruff format
run: poetry run ruff format . --check
run: uv run ruff format . --check

- name: Lint with mypy
run: poetry run mypy .
run: uv run mypy .

- name: Test with pytest
run: poetry run py.test --cov=./ --cov-append --cov-report=xml
run: uv run py.test --cov=./ --cov-append --cov-report=xml
env:
COV_CORE_SOURCE: .
COV_CORE_CONFIG: pyproject.toml
Expand All @@ -62,18 +61,20 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Install poetry
run: pipx install "poetry==1.8.4"
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'poetry'
run: uv python install ${{ matrix.python-version }}

- name: Install dependencies
run: uv sync --all-extras --dev

- name: Build package
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
run: poetry build
run: uv build

- name: Publish package
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
Expand Down
2 changes: 2 additions & 0 deletions .tmuxp.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
session_name: vcspull
start_directory: ./ # load session relative to config location (project root).
shell_command_before:
- uv virtualenv --quiet > /dev/null 2>&1 && clear
windows:
- window_name: vcspull
focus: True
Expand Down
2 changes: 1 addition & 1 deletion .tool-versions
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
poetry 1.8.4
uv 0.5.4
python 3.13.0 3.12.7 3.11.10 3.10.15 3.9.20 3.8.20
10 changes: 10 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ $ pipx install --suffix=@next 'vcspull' --pip-args '\--pre' --force

<!-- Maintainers, insert changes / features for the next release here -->

_Maintenance only, no bug fixes, or new features_

### Development

#### Project and package management: poetry to uv (#457)

[uv] is the new package and project manager for the project, replacing Poetry.

[uv]: https://github.com/astral-sh/uv

#### libvcs 0.33.0 -> 0.34.0 (#456)

First libvcs release built with `uv` package and project manager. No changes to libvcs API itself.
Expand Down
14 changes: 7 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ entr_warn:
@echo "----------------------------------------------------------"

test:
poetry run py.test $(test)
uv run py.test $(test)

start:
$(MAKE) test; poetry run ptw .
$(MAKE) test; uv run ptw .

watch_test:
if command -v entr > /dev/null; then ${PY_FILES} | entr -c $(MAKE) test; else $(MAKE) test entr_warn; fi
Expand All @@ -30,16 +30,16 @@ design_docs:
$(MAKE) -C docs design

ruff_format:
poetry run ruff format .
uv run ruff format .

ruff:
poetry run ruff check .
uv run ruff check .

watch_ruff:
if command -v entr > /dev/null; then ${PY_FILES} | entr -c $(MAKE) ruff; else $(MAKE) ruff entr_warn; fi

mypy:
poetry run mypy `${PY_FILES}`
uv run mypy `${PY_FILES}`

watch_mypy:
if command -v entr > /dev/null; then ${PY_FILES} | entr -c $(MAKE) mypy; else $(MAKE) mypy entr_warn; fi
Expand All @@ -48,7 +48,7 @@ format_markdown:
prettier --parser=markdown -w *.md docs/*.md docs/**/*.md CHANGES

monkeytype_create:
poetry run monkeytype run `poetry run which py.test`
uv run monkeytype run `uv run which py.test`

monkeytype_apply:
poetry run monkeytype list-modules | xargs -n1 -I{} sh -c 'poetry run monkeytype apply {}'
uv run monkeytype list-modules | xargs -n1 -I{} sh -c 'uv run monkeytype apply {}'
4 changes: 2 additions & 2 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ dev:
$(MAKE) -j watch serve

start:
poetry run sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) --port ${HTTP_PORT} $(O)
uv run sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) --port ${HTTP_PORT} $(O)

design:
# This adds additional watch directories (for _static file changes) and disable incremental builds
poetry run sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) --port ${HTTP_PORT} --watch "." -a $(O)
uv run sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) --port ${HTTP_PORT} --watch "." -a $(O)
37 changes: 19 additions & 18 deletions docs/developing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ structure and workflow. At a later point these will refer to that website for do

## Bootstrap the project

Install and [git] and [poetry]
Install and [git] and [uv]

Clone:

Expand All @@ -22,10 +22,10 @@ $ cd vcspull
Install packages:

```console
$ poetry install -E "docs test coverage lint"
$ uv sync --all-extras --dev
```

[installation documentation]: https://python-poetry.org/docs/#installation
[installation documentation]: https://docs.astral.sh/uv/getting-started/installation/
[git]: https://git-scm.com/

## Development loop
Expand Down Expand Up @@ -55,7 +55,7 @@ $ make watch_test
#### Manual (just the command, please)

```console
$ poetry run py.test
$ uv run py.test
```

or:
Expand Down Expand Up @@ -169,16 +169,16 @@ The project uses [ruff] to handle formatting, sorting imports and linting.

````{tab} Command
poetry:
uv:
```console
$ poetry run ruff
$ uv run ruff check .
```
If you setup manually:
```console
$ ruff .
$ ruff check .
```
````
Expand All @@ -203,16 +203,16 @@ requires [`entr(1)`].

````{tab} Fix files
poetry:
uv:
```console
$ poetry run ruff . --fix
$ uv run ruff check . --fix
```
If you setup manually:
```console
$ ruff . --fix
$ ruff check . --fix
```
````
Expand All @@ -223,10 +223,10 @@ $ ruff . --fix

````{tab} Command
poetry:
uv:
```console
$ poetry run ruff format .
$ uv run ruff format .
```
If you setup manually:
Expand All @@ -251,10 +251,10 @@ $ make ruff_format

````{tab} Command
poetry:
uv:
```console
$ poetry run mypy .
$ uv run mypy .
```
If you setup manually:
Expand Down Expand Up @@ -297,7 +297,7 @@ See `[tool.mypy]` in pyproject.toml.

## Publishing to PyPI

[poetry] handles virtualenv creation, package requirements, versioning,
[uv] handles virtualenv creation, package requirements, versioning,
building, and publishing. Therefore there is no setup.py or requirements files.

Update `__version__` in `__about__.py` and `pyproject.toml`::
Expand All @@ -306,10 +306,11 @@ Update `__version__` in `__about__.py` and `pyproject.toml`::
git tag v0.1.1
git push
git push --tags
poetry build
poetry publish

[poetry]: https://python-poetry.org/
GitHub Actions will detect the new git tag, and in its own workflow run `uv
build` and push to PyPI.

[uv]: https://github.com/astral-sh/uv
[entr(1)]: http://eradman.com/entrproject/
[`entr(1)`]: http://eradman.com/entrproject/
[ruff format]: https://docs.astral.sh/ruff/formatter/
Expand Down
Loading

0 comments on commit b07ed77

Please sign in to comment.