Komorebi-AI / python-template

A template for Python repositories using Docker
3 stars 0 forks source link

chore: actualiza a la nueva versión de uv #47

Closed albertotb closed 1 week ago

albertotb commented 3 weeks ago

uv ha añadido soporte para gestionar proyectos. Se prueba en esta PR

Relacionado: https://astral.sh/blog/uv-unified-python-packaging

EDIT:

De esos últimos hilos, probablemente queremos añadir el --frozen y el --no-locals cuando lo implementen.

Closes #43 Closes #48 Closes #49

codecov[bot] commented 3 weeks ago

Codecov Report

Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 56.52%. Comparing base (8349e19) to head (0208bb6).

Files with missing lines Patch % Lines
template/api.py 0.00% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #47 +/- ## ======================================= Coverage 56.52% 56.52% ======================================= Files 4 4 Lines 46 46 ======================================= Hits 26 26 Misses 20 20 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

albertotb commented 3 weeks ago

Esto está todavía en fase experimental. Sobre el -e, si ejecutas las cosas con uv run no es problema porque regenera el fichero uv.lock e instala todo automáticamente, con lo que siempre tienes la última versión. No tengo claro que pasa si ejecutas sin uv run, activando el entorno manualmente.

albertotb commented 3 weeks ago

@davidggphy Parece que uv sync instala la la librería de root, a la que hace referencia pyproject.toml en formato editable por defecto. Se puede comprobar con el siguiente experimento:

En la siguiente sesión entre el primer y segundo import se editó el fichero main.py añadiendo la string TEST y no se ejecutá ningún comando de uv (ni sync, ni run ni lock):

image

davidggphy commented 3 weeks ago

@davidggphy Parece que uv sync instala la la librería de root, a la que hace referencia pyproject.toml en formato editable por defecto.

Perfecto, estaba pensando en el modo de desarrollo con notebooks y autoreload en el que vas editando algún módulo a la vez. Que para que funcione cuando tienes el proyecto como librería, debe estar en modo editable

albertotb commented 3 weeks ago

@davidggphy Parece que uv sync instala la la librería de root, a la que hace referencia pyproject.toml en formato editable por defecto.

Perfecto, estaba pensando en el modo de desarrollo con notebooks y autoreload en el que vas editando algún módulo a la vez. Que para que funcione cuando tienes el proyecto como librería, debe estar en modo editable

Para notebooks solo hace falta añadir ipykernel, normalmente a las dependencias de desarrollo y VSCode detecta el kernel del venv automáticamente. Lo único que no funciona es intalar ipykernel con el prompt de VSCode, hay que hacerlo con la terminal.

albertotb commented 3 weeks ago

Para solucionar #48 se usa la flag "system" en el hook de mypy en pre-commit. Eso quiere decir que hay que intalarlo explicitamente en la Action. Sin embargo, tiene pinta que ahora mismo en la Action uv está instalando las dependencias en un entorno virtual en lugar de en el Python del sistema, por lo que pre-commit no encuentra mypy.

Posible parche mientras aqui: https://github.com/astral-sh/uv/issues/5964