Skip to content
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
2 changes: 1 addition & 1 deletion .copier-answers.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Changes here will be overwritten by Copier
_commit: v0.0.55
_commit: v0.0.57
_src_path: gh:LabAutomationAndScreening/copier-base-template.git
description: Copier template for creating Python libraries and executables
python_ci_versions:
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,5 @@
"initializeCommand": "sh .devcontainer/initialize-command.sh",
"onCreateCommand": "sh .devcontainer/on-create-command.sh",
"postStartCommand": "sh .devcontainer/post-start-command.sh"
// Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 6ebb97a5 # spellchecker:disable-line
// Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 01ec0f62 # spellchecker:disable-line
}
2 changes: 1 addition & 1 deletion .devcontainer/install-ci-tooling.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from pathlib import Path

UV_VERSION = "0.7.12"
PNPM_VERSION = "10.12.1"
PNPM_VERSION = "10.13.1"
COPIER_VERSION = "9.7.1"
COPIER_TEMPLATES_EXTENSION_VERSION = "0.3.1"
PRE_COMMIT_VERSION = "4.2.0"
Expand Down
3 changes: 3 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ updates:
time: "16:00"
open-pull-requests-limit: 5
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-patch" # we don't want to be bothered with patch updates for anything except security updates
Comment on lines +12 to +14
Copy link

Copilot AI Jul 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The wildcard dependency-name pattern "*" is overly broad and may prevent important security patches from being automatically updated. Consider being more specific about which dependencies should ignore patch updates.

Suggested change
- dependency-name: "*"
update-types:
- "version-update:semver-patch" # we don't want to be bothered with patch updates for anything except security updates
- dependency-name: "example-lib1" # Replace "*" with specific dependencies to ignore
update-types:
- "version-update:semver-patch" # we don't want to be bothered with patch updates for anything except security updates
- dependency-name: "example-lib2" # Add other specific dependencies as needed
update-types:
- "version-update:semver-patch"

Copilot uses AI. Check for mistakes.
- dependency-name: "boto3" # boto3 gets patch updates way too frequently and they're usually not important
update-types:
- "version-update:semver-patch"
Expand Down
24 changes: 21 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,16 @@ repos:

# Reformatting (should generally come before any file format or other checks, because reformatting can change things)
- repo: https://github.com/crate-ci/typos
rev: 0f0ccba9ed1df83948f0c15026e4f5ccfce46109 # frozen: v1.32.0
rev: 392b78fe18a52790c53f42456e46124f77346842 # frozen: v1.34.0
hooks:
- id: typos
exclude:
|
(?x)^(
.*\.min.js|
.*\.min.css|
.*\.umd.js|
)$
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # frozen: v5.0.0
hooks:
Expand Down Expand Up @@ -77,17 +84,21 @@ repos:
.*devcontainer.json|
.*pyrightconfig.json|
.*tsconfig.json|
.*biome.jsonc|
.*/vendor_files/.*|
)$
args: [--autofix, --no-sort-keys]

- repo: https://github.com/biomejs/pre-commit
rev: 748e40d32e076a6aaaf3353a2564c8fe43764f79 # frozen: v2.0.0-beta.1
rev: a450e9c04887b1305951c298db5999cd30155f74 # frozen: v2.1.1
hooks:
- id: biome-check
# exclude generated files from codegen and strawberry
exclude: |
(?x)^(
.*generated/graphql.ts|
.*/schema.graphql|
.*pyrightconfig\.json|
)$

- repo: https://github.com/pre-commit/mirrors-prettier # TODO: switch to a different approach...this was archived in 2024
Expand All @@ -102,10 +113,17 @@ repos:
.*devcontainer.json|
.*pyrightconfig.json|
.*tsconfig.json|
.*/__snapshots__/.*|
.*.min.js|
.*.min.css|
.*.umd.js|
.*.yaml|
.*.yml|
.*.md|
.*.jsonc|
.*/vendor_files/.*|
.*/schema.graphql|
.*generated/graphql.ts|
)$
files: (.*.json)|(.*.ts)|(.*.jsx)|(.*.tsx)|(.*.yaml)|(.*.yml)|(.*.md)|(.*.html)|(.*.css)|(.*.scss)|(.*.less)|(.*.vue)|(.*.graphql)|(.*.gql)

Expand Down Expand Up @@ -204,7 +222,7 @@ repos:
description: Runs hadolint to lint Dockerfiles

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 24e02b24b8ab2b7c76225602d13fa60e12d114e6 # frozen: v0.11.9
rev: 3d44372123ca5e8617fdb65d9f11facd159b9e95 # frozen: v0.12.3
hooks:
- id: ruff
name: ruff-src
Expand Down
8 changes: 0 additions & 8 deletions biome.json

This file was deleted.

16 changes: 16 additions & 0 deletions biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"formatter": {
"enabled": false,
},
"linter": {
"enabled": false,
},
"files": {
"includes": [
"**",
"!template/template/biome.jsonc",
"!template/biome.jsonc",
"!**/*.css", // still too many false positives, so we exclude CSS files
],
},
}
14 changes: 7 additions & 7 deletions extensions/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@ class ContextUpdater(ContextHook):
@override
def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["uv_version"] = "0.7.12"
context["pnpm_version"] = "10.12.1"
context["pnpm_version"] = "10.13.1"
context["pre_commit_version"] = "4.2.0"
context["pyright_version"] = "1.1.402"
context["pyright_version"] = "1.1.403"
context["pytest_version"] = "8.4.0"
context["pytest_randomly_version"] = "3.16.0"
context["pytest_cov_version"] = "6.2.1"
context["copier_version"] = "9.7.1"
context["copier_templates_extension_version"] = "0.3.1"
context["sphinx_version"] = "8.1.3"
context["pulumi_version"] = "3.177.0"
context["pulumi_version"] = "3.181.0"
context["pulumi_aws_version"] = "6.83.0"
context["pulumi_aws_native_version"] = "1.30.0"
context["pulumi_command_version"] = "1.1.0"
context["pulumi_github_version"] = "6.7.2"
context["pulumi_okta_version"] = "4.20.0"
context["boto3_version"] = "1.38.38"
context["ephemeral_pulumi_deploy_version"] = "0.0.4"
context["pydantic_version"] = "2.11.5"
context["pydantic_version"] = "2.11.7"
context["pyinstaller_version"] = "6.13.0"
context["setuptools_version"] = "80.7.1"
context["strawberry_graphql_version"] = "0.270.4"
context["fastapi_version"] = "0.115.12"
context["uvicorn_version"] = "0.34.2"
context["lab_auto_pulumi_version"] = "0.1.14"
context["fastapi_version"] = "0.115.14"
context["uvicorn_version"] = "0.35.0"
context["lab_auto_pulumi_version"] = "0.1.15"

context["nuxt_ui_version"] = "^3.1.2"
context["nuxt_version"] = "^3.17.3"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ dependencies = [
"pytest>=8.4.0",
"pytest-cov>=6.2.1",
"pytest-randomly>=3.16.0",
"pyright[nodejs]>=1.1.402",
"pyright[nodejs]>=1.1.403",
"copier>=9.7.1",
"copier-templates-extensions>=0.3.1"

Expand Down
1 change: 1 addition & 0 deletions ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ ignore = [
"TD002", # Adding author names to TODOs erodes shared ownership of codebase. Git history provides information about who originally created the TODO if that information is vitally needed
"TD003", # Up to the author's judgement whether a TODO requires a link to an issue or not
"TID252", # Sometimes it makes sense to use relative imports, that's a judgement call for us, not ruff
"TC006", # Adding quotes around classes unnecessarily confuses the IDE for automatic refactoring
]

# Allow fix for all enabled rules (when `--fix`) is provided.
Expand Down
46 changes: 42 additions & 4 deletions template/.github/workflows/publish.yaml.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -152,19 +152,38 @@ jobs:
install-from-staging:
name: Install package from staging registry
needs: [ publish-to-staging, get-values ]
runs-on: {% endraw %}{{ gha_linux_runner }}{% raw %}
strategy:
matrix:
os:
- "{% endraw %}{{ gha_linux_runner }}{% raw %}"
{% endraw %}{% if use_windows_in_ci %} - {{ gha_windows_runner }}{% endif %}{% raw %}
python-version:
{% endraw %}{% for item in python_ci_versions %}
- {{ item }}
{% endfor %}{% raw %}
include:
- os: "{% endraw %}{{ gha_linux_runner }}{% raw %}"
python-version: "{% endraw %}{{ python_ci_versions[0] }}{% raw %}"
JOB_MATCHING_DEV_ENV: true

runs-on: ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@{% endraw %}{{ gha_checkout }}{% raw %}
- name: Setup python
uses: actions/setup-python@{% endraw %}{{ gha_setup_python }}{% raw %}
with:
python-version: {% endraw %}{{ python_version }}{% raw %}
python-version: ${{ matrix.python-version }}
{% endraw %}{% if python_package_registry == "PyPI" %}{% raw %}
- name: Sleep to allow PyPI Index to update before proceeding to the next step
uses: juliangruber/sleep-action@{% endraw %}{{ gha_sleep }}{% raw %}
with:
time: 60s{% endraw %}{% endif %}{% raw %}
- name: Install from staging registry
run: pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://www.pypi.org/simple {% endraw %}{{ package_name | replace('_', '-') }}{% raw %}==${{ needs.get-values.outputs.package-version }}
- name: Display dependencies
run: pip list
- name: Confirm library can be imported successfully
run: python -c "import {% endraw %}{{ package_name | replace('-', '_') }}{% raw %}"

Expand Down Expand Up @@ -224,18 +243,37 @@ jobs:
name: Install package from primary registry
if: ${{ github.event.inputs.publish_to_primary }}
needs: [ publish-to-primary, get-values ]
runs-on: {% endraw %}{{ gha_linux_runner }}{% raw %}
strategy:
matrix:
os:
- "{% endraw %}{{ gha_linux_runner }}{% raw %}"
{% endraw %}{% if use_windows_in_ci %} - {{ gha_windows_runner }}{% endif %}{% raw %}
python-version:
{% endraw %}{% for item in python_ci_versions %}
- {{ item }}
{% endfor %}{% raw %}
include:
- os: "{% endraw %}{{ gha_linux_runner }}{% raw %}"
python-version: "{% endraw %}{{ python_ci_versions[0] }}{% raw %}"
JOB_MATCHING_DEV_ENV: true

runs-on: ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@{% endraw %}{{ gha_checkout }}{% raw %}
- name: Setup python
uses: actions/setup-python@{% endraw %}{{ gha_setup_python }}{% raw %}
with:
python-version: {% endraw %}{{ python_version }}{% raw %}
python-version: ${{ matrix.python-version }}
{% endraw %}{% if python_package_registry == "PyPI" %}{% raw %}
- name: Sleep to allow PyPI Index to update before proceeding to the next step
uses: juliangruber/sleep-action@{% endraw %}{{ gha_sleep }}{% raw %}
with:
time: 60s{% endraw %}{% endif %}{% raw %}
- name: Install from primary registry
run: pip install {% endraw %}{{ package_name | replace('_', '-') }}{% raw %}==${{ needs.get-values.outputs.package-version }}
- name: Display dependencies
run: pip list
- name: Confirm library can be imported successfully
run: python -c "import {% endraw %}{{ package_name | replace('-', '_') }}{% raw %}"{% endraw %}
24 changes: 21 additions & 3 deletions template/.pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,16 @@ repos:

# Reformatting (should generally come before any file format or other checks, because reformatting can change things)
- repo: https://github.com/crate-ci/typos
rev: 0f0ccba9ed1df83948f0c15026e4f5ccfce46109 # frozen: v1.32.0
rev: 392b78fe18a52790c53f42456e46124f77346842 # frozen: v1.34.0
hooks:
- id: typos
exclude:
|
(?x)^(
.*\.min.js|
.*\.min.css|
.*\.umd.js|
)$
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # frozen: v5.0.0
hooks:
Expand Down Expand Up @@ -77,17 +84,21 @@ repos:
.*devcontainer.json|
.*pyrightconfig.json|
.*tsconfig.json|
.*biome.jsonc|
.*/vendor_files/.*|
)$
args: [--autofix, --no-sort-keys]

- repo: https://github.com/biomejs/pre-commit
rev: 748e40d32e076a6aaaf3353a2564c8fe43764f79 # frozen: v2.0.0-beta.1
rev: a450e9c04887b1305951c298db5999cd30155f74 # frozen: v2.1.1
hooks:
- id: biome-check
# exclude generated files from codegen and strawberry
exclude: |
(?x)^(
.*generated/graphql.ts|
.*/schema.graphql|
.*pyrightconfig\.json|
)$

- repo: https://github.com/pre-commit/mirrors-prettier # TODO: switch to a different approach...this was archived in 2024
Expand All @@ -102,10 +113,17 @@ repos:
.*devcontainer.json|
.*pyrightconfig.json|
.*tsconfig.json|
.*/__snapshots__/.*|
.*.min.js|
.*.min.css|
.*.umd.js|
.*.yaml|
Comment on lines +116 to 120
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Regex typo – .*.min.js will not behave as intended

.*.min.js (note the un-escaped dot before min) matches any char, not a literal dot, so files such as fooXmin.js will also be skipped.
Use the same, correctly-escaped pattern you applied in the typos hook (.*\.min\.js, etc.) for consistency and precision.

-              .*.min.js|
-              .*.min.css|
-              .*.umd.js|
+              .*\.min\.js|
+              .*\.min\.css|
+              .*\.umd\.js|
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
.*/__snapshots__/.*|
.*.min.js|
.*.min.css|
.*.umd.js|
.*.yaml|
.*/__snapshots__/.*|
.*\.min\.js|
.*\.min\.css|
.*\.umd\.js|
.*.yaml|
🤖 Prompt for AI Agents
In template/.pre-commit-config.yaml around lines 116 to 120, the regex patterns
like `.*.min.js` are incorrect because the dot before "min" is not escaped,
causing unintended matches. Fix this by escaping the dots before "min" and the
file extensions, changing patterns to `.*\.min\.js`, `.*\.min\.css`, and
`.*\.umd\.js` for accurate matching and consistency with other hooks.

.*.yml|
.*.md|
.*.jsonc|
.*/vendor_files/.*|
.*/schema.graphql|
.*generated/graphql.ts|
)$
files: (.*.json)|(.*.ts)|(.*.jsx)|(.*.tsx)|(.*.yaml)|(.*.yml)|(.*.md)|(.*.html)|(.*.css)|(.*.scss)|(.*.less)|(.*.vue)|(.*.graphql)|(.*.gql)

Expand Down Expand Up @@ -204,7 +222,7 @@ repos:
description: Runs hadolint to lint Dockerfiles

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 24e02b24b8ab2b7c76225602d13fa60e12d114e6 # frozen: v0.11.9
rev: 3d44372123ca5e8617fdb65d9f11facd159b9e95 # frozen: v0.12.3
hooks:
- id: ruff
name: ruff-src
Expand Down
8 changes: 0 additions & 8 deletions template/biome.json

This file was deleted.

16 changes: 16 additions & 0 deletions template/biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"formatter": {
"enabled": false,
},
"linter": {
"enabled": false,
},
"files": {
"includes": [
"**",
"!template/template/biome.jsonc",
"!template/biome.jsonc",
"!**/*.css", // still too many false positives, so we exclude CSS files
],
},
}
1 change: 1 addition & 0 deletions template/ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ ignore = [
"TD002", # Adding author names to TODOs erodes shared ownership of codebase. Git history provides information about who originally created the TODO if that information is vitally needed
"TD003", # Up to the author's judgement whether a TODO requires a link to an issue or not
"TID252", # Sometimes it makes sense to use relative imports, that's a judgement call for us, not ruff
"TC006", # Adding quotes around classes unnecessarily confuses the IDE for automatic refactoring
]

# Allow fix for all enabled rules (when `--fix`) is provided.
Expand Down
8 changes: 4 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.