Skip to content

ci,pkg: poetry -> uv #457

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

Merged
merged 1 commit into from
Nov 23, 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
18 changes: 7 additions & 11 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,20 +34,16 @@ jobs:
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
if: env.PUBLISH == 'true'
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 }}
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]
if: env.PUBLISH == 'true'
run: poetry install --with=docs,lint
- name: Install dependencies
run: uv sync --all-extras --dev

- name: Print python versions
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 shell --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