Skip to content

Update to latest repo-template and uv #236

@rebkwok

Description

@rebkwok

Refer to https://github.com/opensafely-core/repo-template

Note: you probably want to commit with --no-verify until the justfile is updated and committed; otherwise pre-commit hooks will use old justfile commands and fail confusingly.

  • Update dependabot.yml for github actions to include 7 day cooldown
  • Move dependencies from requirements.prod.in into pyproject.toml [project]
  • Copy tool.uv section from repo-template and move dev dependencies from requirements.dev.in into pyproject.toml [dependency groups] (remove pip and pip-tools if they're in the dependencies)
  • Delete requirements.* files
  • Add a .python-version file (if there isn't one already)
  • Update justfile with repo-template recipes; note that devenv is not required for most recipes anymore (but recipes that require a .env file may need _dotenv setup). In addition to adding the new recipes/versions of recipes for uv, update any extra ones that do e.g. python ... to uv run python ...
  • Run just clean to remove any old venv
  • Run just devenv, just check/test/run to make sure things work and generate a uv.lock
  • Run just update-dependencies and check that works too, and the exclude-newer timestamp in pyproject.toml and uv.lock has been correctly updated to 7 days ago
  • Update pre-commit config if necessary (compare with repo-template)
  • Update Dockerfiles to use uv (following repo-template Dockerfile)
  • Ensure that .python-version and pyproject.toml are not ignored in the .dockerignore file
  • Run just docker/build to check it's working
  • Update DEVELOPERS.md to include sections from repo-template on using uv and updating dependencies
  • Update GHA workflows; any jobs that use setup-action will need to add:
    install-uv: true
    cache: uv
    But you can remove the python version unless you have anything in a workflow job that runs python without using uv.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions