Skip to content

Commit

Permalink
Merge pull request #991 from ae-utbm/uv
Browse files Browse the repository at this point in the history
Switch from poetry to uv
  • Loading branch information
klmp200 authored Jan 6, 2025
2 parents 429df81 + 771cbdb commit 134f8a7
Show file tree
Hide file tree
Showing 23 changed files with 1,967 additions and 2,985 deletions.
14 changes: 3 additions & 11 deletions .envrc
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
if [[ ! -f pyproject.toml ]]; then
log_error 'No pyproject.toml found. Use `poetry new` or `poetry init` to create one first.'
if [[ ! -d .venv ]]; then
log_error 'No .venv folder found. Use `uv sync` to create one first.'
exit 2
fi

local VENV=$(poetry env list --full-path | cut -d' ' -f1)
if [[ -z $VENV || ! -d $VENV/bin ]]; then
log_error 'No poetry virtual environment found. Use `poetry install` to create one first.'
exit 2
fi

export VIRTUAL_ENV=$VENV
export POETRY_ACTIVE=1
PATH_add "$VENV/bin"
. .venv/bin/activate
8 changes: 0 additions & 8 deletions .github/actions/compile_messages/action.yml

This file was deleted.

49 changes: 22 additions & 27 deletions .github/actions/setup_project/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,43 +9,38 @@ runs:
packages: gettext
version: 1.0 # increment to reset cache

- name: Set up python
uses: actions/setup-python@v5
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
python-version: "3.12"
version: "0.5.14"
enable-cache: true
cache-dependency-glob: "uv.lock"

- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v3
- name: "Set up Python"
uses: actions/setup-python@v5
with:
path: ~/.local
key: poetry-3 # increment to reset cache

- name: Install Poetry
if: steps.cached-poetry.outputs.cache-hit != 'true'
shell: bash
run: curl -sSL https://install.python-poetry.org | python3 - --version 1.8.5
python-version-file: ".python-version"

- name: Check pyproject.toml syntax
shell: bash
run: poetry check

- name: Load cached dependencies
uses: actions/cache@v3
- name: Restore cached virtualenv
uses: actions/cache/restore@v4
with:
path: ~/.cache/pypoetry
key: ${{ runner.os }}-poetry-${{ hashFiles('**/poetry.lock') }}
restore-keys: |
${{ runner.os }}-poetry-
key: venv-${{ runner.os }}-${{ hashFiles('.python-version') }}-${{ hashFiles('pyproject.toml') }}-${{ env.CACHE_SUFFIX }}
path: .venv

- name: Install dependencies
run: poetry install --with docs,tests
run: uv sync
shell: bash

- name: Install xapian
run: poetry run ./manage.py install_xapian
- name: Install Xapian
run: uv run ./manage.py install_xapian
shell: bash

- name: Save cached virtualenv
uses: actions/cache/save@v4
with:
key: venv-${{ runner.os }}-${{ hashFiles('.python-version') }}-${{ hashFiles('pyproject.toml') }}-${{ env.CACHE_SUFFIX }}
path: .venv

- name: Compile gettext messages
run: poetry run ./manage.py compilemessages
run: uv run ./manage.py compilemessages
shell: bash
10 changes: 0 additions & 10 deletions .github/actions/setup_xapian/action.yml

This file was deleted.

13 changes: 8 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version-file: ".python-version"
- uses: pre-commit/[email protected]
with:
extra_args: --all-files
Expand All @@ -29,14 +31,15 @@ jobs:
- name: Check out repository
uses: actions/checkout@v4
- uses: ./.github/actions/setup_project
- uses: ./.github/actions/setup_xapian
- uses: ./.github/actions/compile_messages
env:
# To avoid race conditions on environment cache
CACHE_SUFFIX: ${{ matrix.pytest-mark }}
- name: Run tests
run: poetry run coverage run -m pytest -m "${{ matrix.pytest-mark }}"
run: uv run coverage run -m pytest -m "${{ matrix.pytest-mark }}"
- name: Generate coverage report
run: |
poetry run coverage report
poetry run coverage html
uv run coverage report
uv run coverage html
- name: Archive code coverage results
uses: actions/upload-artifact@v3
with:
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ jobs:
git fetch
git reset --hard origin/master
poetry install --with prod --without docs,tests
uv sync --group prod
npm install
poetry run ./manage.py install_xapian
poetry run ./manage.py migrate
poetry run ./manage.py collectstatic --clear --noinput
poetry run ./manage.py compilemessages
uv run ./manage.py install_xapian
uv run ./manage.py migrate
uv run ./manage.py collectstatic --clear --noinput
uv run ./manage.py compilemessages
sudo systemctl restart uwsgi
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ jobs:
path: .cache
restore-keys: |
mkdocs-material-
- run: poetry run mkdocs gh-deploy --force
- run: uv run mkdocs gh-deploy --force
10 changes: 5 additions & 5 deletions .github/workflows/taiste.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ jobs:
git fetch
git reset --hard origin/taiste
poetry install --with prod --without docs,tests
uv sync --group prod
npm install
poetry run ./manage.py install_xapian
poetry run ./manage.py migrate
poetry run ./manage.py collectstatic --clear --noinput
poetry run ./manage.py compilemessages
uv run ./manage.py install_xapian
uv run ./manage.py migrate
uv run ./manage.py collectstatic --clear --noinput
uv run ./manage.py compilemessages
sudo systemctl restart uwsgi
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pyrightconfig.json
dist/
.vscode/
.idea/
env/
.venv/
doc/html
data/
galaxy/test_galaxy_state.json
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
2 changes: 1 addition & 1 deletion counter/management/commands/dump_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def _dump_accounts(accounts: set[Customer]):

# dumps and sales are linked to the same customers
# and or both ordered with the same key, so zipping them is valid
for dump, sale in zip(pending_dumps, sales):
for dump, sale in zip(pending_dumps, sales, strict=False):
dump.dump_operation = sale
AccountDump.objects.bulk_update(pending_dumps, ["dump_operation"])

Expand Down
4 changes: 2 additions & 2 deletions counter/tests/test_counter.py
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ def test_top_barmen(self):
"nickname": user.nick_name,
"perm_sum": perm_time,
}
for user, perm_time in zip(users, perm_times)
for user, perm_time in zip(users, perm_times, strict=False)
]

def test_top_customer(self):
Expand All @@ -741,7 +741,7 @@ def test_top_customer(self):
"nickname": user.nick_name,
"selling_sum": sale_amount,
}
for user, sale_amount in zip(users, sale_amounts)
for user, sale_amount in zip(users, sale_amounts, strict=False)
]


Expand Down
2 changes: 1 addition & 1 deletion counter/tests/test_customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,6 @@ def test_update_balance():
# put everything at zero to be sure the amounts were wrong beforehand
customers_qs.update(amount=0)
customers_qs.update_amount()
for customer, amount in zip(customers, [40, 10, 20, 40, 0]):
for customer, amount in zip(customers, [40, 10, 20, 40, 0], strict=False):
customer.refresh_from_db()
assert customer.amount == amount
17 changes: 11 additions & 6 deletions docs/explanation/technos.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,16 +311,16 @@ pour savoir tout ce qui ne fonctionne pas,
et surtout pour récolter toutes les informations
nécessaires à la réparation des bugs.

### Poetry
### UV

[Utiliser Poetry](https://python-poetry.org/docs/basic-usage/)
[UV](https://docs.astral.sh/uv/)

Poetry est un utilitaire qui permet de créer et gérer
UV est un utilitaire qui permet de créer et gérer
des environnements Python de manière simple et intuitive.
Il permet également de gérer et mettre à jour
le fichier de dépendances.

L'avantage d'utiliser poetry
L'avantage d'utiliser uv
(et les environnements virtuels en général)
est de pouvoir gérer plusieurs projets différents
en parallèle puisqu'il permet d'avoir sur sa
Expand All @@ -329,7 +329,7 @@ donc plusieurs versions d'une même dépendance
dans plusieurs projets différents sans impacter
le système sur lequel le tout est installé.

Poetry possède également l'avantage par rapport à un simple venv
UV possède également l'avantage par rapport à un simple venv
que les versions exactes de toutes les dépendances,
y compris celles utilisées par d'autres dépendances,
sont consignées dans un fichier `.lock`.
Expand All @@ -338,10 +338,15 @@ configurés avec le même fichier lock utiliseront
exactement les mêmes versions des mêmes dépendances,
y compris si celles-ci ne sont pas indiquées explicitement.

Les dépendances utilisées par poetry sont déclarées
UV se charge même de télécharger la bonne version de Python
automatiquement !

Les dépendances utilisées par uv sont déclarées
dans le fichier `pyproject.toml`,
situé à la racine du projet.

Aussi, uv est rapide, genre TRÈS TRÈS rapide ⚡️

### Ruff

[Site officiel](https://astral.sh/ruff)
Expand Down
2 changes: 2 additions & 0 deletions docs/howto/translation.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ l'éditer et enfin le compiler au format binaire pour qu'il soit lu par le serve
./manage.py makemessages \
--locale=fr \
-e py,jinja \
--ignore=.venv \
--ignore=node_modules \
--add-location=file

Expand All @@ -49,6 +50,7 @@ l'éditer et enfin le compiler au format binaire pour qu'il soit lu par le serve
--locale=fr \
-d djangojs \
-e js,ts \
--ignore=.venv \
--ignore=node_modules \
--ignore=staticfiles/generated \
--add-location=file
Expand Down
10 changes: 5 additions & 5 deletions docs/tutorial/devtools.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,11 @@ Pour gérer ça plus simplement,
nous utilisons le logiciel python [pre-commit](https://pre-commit.com/)
qui permet de contrôller leur installation via un fichier yaml.

Le logiciel est installé par défaut par poetry.
Le logiciel est installé par défaut par uv.
Il suffit ensuite de lancer :

```bash
pre-commit install
uv run pre-commit install
```
Une fois que vous avez fait cette commande, pre-commit
tournera automatiquement chaque fois que vous ferez
Expand All @@ -65,7 +65,7 @@ un nouveau commit.
Il est également possible d'appeler soi-même les pre-commits :

```bash
pre-commit run --all-files
uv run pre-commit run --all-files
```


Expand All @@ -80,8 +80,8 @@ pre-commit run --all-files
Pour utiliser Ruff, placez-vous à la racine du projet et lancez la commande suivante :

```bash
ruff format # pour formatter le code
ruff check # pour linter le code
uv run ruff format # pour formatter le code
uv run ruff check # pour linter le code
```

Ruff va alors faire son travail sur l'ensemble du projet puis vous dire
Expand Down
8 changes: 4 additions & 4 deletions docs/tutorial/install-advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ Commencez par installer les dépendances système :
source ~/.zshrc
```

Puis, installez les dépendances poetry nécessaires en prod :
Puis, installez les dépendances nécessaires en prod :

```bash
poetry install --with prod
uv sync --group prod
```

!!! info
Expand Down Expand Up @@ -158,7 +158,7 @@ DATABASES = {
Enfin, créez vos données :

```bash
poetry run ./manage.py populate
uv run ./manage.py populate
```

!!! note
Expand Down Expand Up @@ -253,7 +253,7 @@ Enfin, démarrez le serveur Django :

```bash
cd /repertoire/du/projet
poetry run ./manage.py runserver 8001
uv run ./manage.py runserver 8001
```

Et c'est bon, votre reverse-proxy est prêt à tourner devant votre serveur.
Expand Down
Loading

0 comments on commit 134f8a7

Please sign in to comment.