Skip to content

Commit 6f308c9

Browse files
committed
1 parent bbd4ab0 commit 6f308c9

15 files changed

Lines changed: 168 additions & 129 deletions

File tree

.copier-answers.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Changes here will be overwritten by Copier
2-
_commit: 4.3.0-1-g2aa1177
2+
_commit: 5.0.0a1
33
_src_path: https://github.com/DiamondLightSource/python-copier-template.git
44
author_email: tom.cobb@diamond.ac.uk
55
author_name: Tom Cobb

.devcontainer/devcontainer.json

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,20 @@
77
},
88
"remoteEnv": {
99
// Allow X11 apps to run inside the container
10-
"DISPLAY": "${localEnv:DISPLAY}"
10+
"DISPLAY": "${localEnv:DISPLAY}",
11+
// We put venv on a different volume to cache so have to copy
12+
"UV_LINK_MODE": "copy",
13+
// Do the equivalent of "activate" the venv so we don't have to "uv run" everything
14+
"PATH": "/workspaces/${localWorkspaceFolderBasename}/.venv/bin:${containerEnv:PATH}"
1115
},
1216
"customizations": {
1317
"vscode": {
1418
// Set *default* container specific settings.json values on container create.
1519
"settings": {
16-
"python.defaultInterpreterPath": "/venv/bin/python"
20+
"python.defaultInterpreterPath": "/workspaces/${localWorkspaceFolderBasename}/.venv/bin/python",
21+
"python.terminal.activateEnvInCurrentTerminal": false,
22+
"python.terminal.activateEnvironment": false,
23+
"remote.autoForwardPorts": false
1724
},
1825
// Add the IDs of extensions you want installed when the container is created.
1926
"extensions": [
@@ -27,20 +34,35 @@
2734
]
2835
}
2936
},
30-
"features": {
31-
// add in eternal history and other bash features
32-
"ghcr.io/diamondlightsource/devcontainer-features/bash-config:1": {}
33-
},
34-
// Create the config folder for the bash-config feature
35-
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/bash-config",
37+
// Create the config folder for the bash-config feature and uv cache
38+
"initializeCommand": "mkdir -p ${localEnv:HOME}/.config/terminal-config ${localEnv:HOME}/.cache/uv",
3639
"runArgs": [
3740
// Allow the container to access the host X11 display and EPICS CA
3841
"--net=host",
3942
// Make sure SELinux does not disable with access to host filesystems like tmp
4043
"--security-opt=label=disable"
4144
],
45+
"mounts": [
46+
// Mount in the user terminal config folder so it can be edited
47+
{
48+
"source": "${localEnv:HOME}/.config/terminal-config",
49+
"target": "/user-terminal-config",
50+
"type": "bind"
51+
},
52+
// Keep a persistent cross container cache for uv
53+
{
54+
"source": "${localEnv:HOME}/.cache/uv",
55+
"target": "/root/.cache/uv",
56+
"type": "bind"
57+
},
58+
// Use a volume mount for the uv venv so it is local to the container
59+
{
60+
"target": "/workspaces/${localWorkspaceFolderBasename}/.venv",
61+
"type": "volume"
62+
}
63+
],
4264
// Mount the parent as /workspaces so we can pip install peers as editable
4365
"workspaceMount": "source=${localWorkspaceFolder}/..,target=/workspaces,type=bind",
4466
// After the container is created, install the python project in editable form
45-
"postCreateCommand": "pip install $([ -f dev-requirements.txt ] && echo '-c dev-requirements.txt') -e '.[dev]' && pre-commit install"
67+
"postCreateCommand": "uv sync && uv run pre-commit install --install-hooks"
4668
}

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@ It is recommended that developers use a [vscode devcontainer](https://code.visua
2424

2525
This project was created using the [Diamond Light Source Copier Template](https://github.com/DiamondLightSource/python-copier-template) for Python projects.
2626

27-
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/4.3.0/how-to.html).
27+
For more information on common tasks like setting up a developer environment, running the tests, and setting a pre-commit hook, see the template's [How-to guides](https://diamondlightsource.github.io/python-copier-template/5.0.0a1/how-to.html).

.github/actions/install_requirements/action.yml

Lines changed: 0 additions & 35 deletions
This file was deleted.

.github/workflows/_dist.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ jobs:
1212
# Need this to get version number from last tag
1313
fetch-depth: 0
1414

15+
- name: Install uv
16+
uses: astral-sh/setup-uv@v6
17+
1518
- name: Build sdist and wheel
1619
run: >
1720
export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct) &&
18-
pipx run build
21+
uvx --from build pyproject-build
1922
2023
- name: Upload sdist and wheel as artifacts
2124
uses: actions/upload-artifact@v4
@@ -24,12 +27,10 @@ jobs:
2427
path: dist
2528

2629
- name: Check for packaging errors
27-
run: pipx run twine check --strict dist/*
30+
run: uvx twine check --strict dist/*
2831

2932
- name: Install produced wheel
30-
uses: ./.github/actions/install_requirements
31-
with:
32-
pip-install: dist/*.whl
33+
run: python -m pip install dist/*.whl
3334

3435
- name: Test module --version works using the installed wheel
3536
# If more than one module in src/ replace with module name to test

.github/workflows/_docs.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ jobs:
2020
- name: Install system packages
2121
run: sudo apt-get install graphviz
2222

23-
- name: Install python packages
24-
uses: ./.github/actions/install_requirements
23+
- name: Install uv
24+
uses: astral-sh/setup-uv@v5
2525

2626
- name: Build docs
27-
run: tox -e docs
27+
run: uv run --locked tox -e docs
2828

2929
- name: Remove environment.pickle
3030
run: rm build/html/.doctrees/environment.pickle

.github/workflows/_test.yml

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ on:
33
inputs:
44
python-version:
55
type: string
6-
description: The version of python to install
7-
required: true
6+
description: The version of python to install, default is from .python-version file
7+
default: ""
88
runs-on:
99
type: string
1010
description: The runner to run this job on
@@ -16,6 +16,7 @@ on:
1616
env:
1717
# https://github.com/pytest-dev/pytest/issues/2042
1818
PY_IGNORE_IMPORTMISMATCH: "1"
19+
UV_PYTHON: ${{ inputs.python-version }}
1920

2021
jobs:
2122
run:
@@ -28,30 +29,11 @@ jobs:
2829
# Need this to get version number from last tag
2930
fetch-depth: 0
3031

31-
- if: inputs.python-version == 'dev'
32-
name: Install dev versions of python packages
33-
uses: ./.github/actions/install_requirements
34-
35-
- if: inputs.python-version == 'dev'
36-
name: Write the requirements as an artifact
37-
run: pip freeze --exclude-editable > /tmp/dev-requirements.txt
38-
39-
- if: inputs.python-version == 'dev'
40-
name: Upload dev-requirements.txt
41-
uses: actions/upload-artifact@v4
42-
with:
43-
name: dev-requirements
44-
path: /tmp/dev-requirements.txt
45-
46-
- if: inputs.python-version != 'dev'
47-
name: Install latest versions of python packages
48-
uses: ./.github/actions/install_requirements
49-
with:
50-
python-version: ${{ inputs.python-version }}
51-
pip-install: ".[dev]"
32+
- name: Install uv
33+
uses: astral-sh/setup-uv@v5
5234

5335
- name: Run tests
54-
run: tox -e tests
36+
run: uv run --locked tox -e tests
5537

5638
- name: Upload coverage to Codecov
5739
uses: codecov/codecov-action@v5

.github/workflows/_tox.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
- name: Checkout
1616
uses: actions/checkout@v4
1717

18-
- name: Install python packages
19-
uses: ./.github/actions/install_requirements
18+
- name: Install uv
19+
uses: astral-sh/setup-uv@v5
2020

2121
- name: Run tox
22-
run: tox -e ${{ inputs.tox }}
22+
run: uv run --locked tox -e ${{ inputs.tox }}

.github/workflows/ci.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ jobs:
2020
matrix:
2121
runs-on: ["ubuntu-latest"] # can add windows-latest, macos-latest
2222
python-version: ["3.11", "3.12", "3.13"]
23-
include:
24-
# Include one that runs in the dev environment
25-
- runs-on: "ubuntu-latest"
26-
python-version: "dev"
2723
fail-fast: false
2824
uses: ./.github/workflows/_test.yml
2925
with:

.github/workflows/periodic.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ jobs:
1010
linkcheck:
1111
uses: ./.github/workflows/_tox.yml
1212
with:
13-
tox: docs build -- -b linkcheck
13+
tox: docs -- -b linkcheck

0 commit comments

Comments
 (0)