Skip to content

Commit 2f30ecc

Browse files
authored
Merge pull request #342 from xcp-ng/gln/config-import-enhancements-wwmm
2 parents 095a1b9 + 26db764 commit 2f30ecc

File tree

11 files changed

+181
-111
lines changed

11 files changed

+181
-111
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Setup UV and Sync
2+
description: 'Install uv and sync the dependencies'
3+
inputs:
4+
sync:
5+
description: 'Whether to run `uv sync` after setting up.'
6+
required: false
7+
default: 'true'
8+
type: boolean
9+
dev:
10+
description: 'Whether to use `--no-dev` with `uv sync`.'
11+
required: false
12+
default: 'true'
13+
type: boolean
14+
activate-environment:
15+
description: 'Wether to activate the virtual env or not'
16+
required: false
17+
default: true
18+
type: boolean
19+
runs:
20+
using: 'composite'
21+
steps:
22+
- uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
23+
with:
24+
version: "0.7.x"
25+
activate-environment: ${{ inputs.activate-environment }}
26+
- if: inputs.sync == 'true' && inputs.dev == 'false'
27+
run: uv sync --frozen --no-dev
28+
shell: bash
29+
env:
30+
FORCE_COLOR: "1"
31+
- if: inputs.sync == 'true' && inputs.dev == 'true'
32+
run: uv sync --frozen
33+
shell: bash
34+
env:
35+
FORCE_COLOR: "1"

.github/workflows/code-checkers.yml

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,49 @@ name: Static code checkers
22

33
on: [push]
44

5+
permissions: {}
6+
57
jobs:
68
mypy:
79
runs-on: ubuntu-latest
810
steps:
9-
- uses: actions/checkout@v2
10-
- name: Install uv
11-
uses: astral-sh/setup-uv@v6
12-
with:
13-
version: "0.7.x"
14-
- name: Install dependencies
15-
run: uv sync --frozen
16-
- name: Create a dummy data.py
17-
run: cp data.py-dist data.py
18-
- name: Install additional typing data and check with mypy
19-
run: uv run mypy --install-types --non-interactive lib/ conftest.py pkgfixtures.py tests/
11+
- uses: actions/checkout@v4
12+
with:
13+
persist-credentials: false
14+
- uses: ./.github/actions/uv-setup
15+
- name: Create a dummy data.py
16+
run: cp data.py-dist data.py
17+
- run: mypy --install-types --non-interactive lib/ conftest.py pkgfixtures.py tests/
2018

2119
pyright:
2220
runs-on: ubuntu-latest
2321
steps:
24-
- uses: actions/checkout@v2
25-
- name: Install uv
26-
uses: astral-sh/setup-uv@v6
27-
with:
28-
version: "0.7.x"
29-
- name: Install dependencies
30-
run: uv sync --frozen
31-
- name: Create a dummy data.py
32-
run: cp data.py-dist data.py
33-
- name: Check with pyright
34-
run: uv run pyright lib/ conftest.py pkgfixtures.py # tests/
22+
- uses: actions/checkout@v4
23+
with:
24+
persist-credentials: false
25+
- uses: ./.github/actions/uv-setup/
26+
- name: Create a dummy data.py
27+
run: cp data.py-dist data.py
28+
- run: pyright lib/ conftest.py pkgfixtures.py # tests/
3529

3630
ruff:
31+
runs-on: ubuntu-latest
32+
env:
33+
FORCE_COLOR: "1"
34+
steps:
35+
- uses: actions/checkout@v4
36+
with:
37+
persist-credentials: false
38+
- uses: ./.github/actions/uv-setup/
39+
- name: Create a dummy data.py
40+
run: cp data.py-dist data.py
41+
- run: ruff check lib/ tests/
42+
43+
flake8:
3744
runs-on: ubuntu-latest
3845
steps:
39-
- uses: actions/checkout@v2
40-
- name: Install uv
41-
uses: astral-sh/setup-uv@v6
42-
with:
43-
version: "0.7.x"
44-
- name: Install dependencies
45-
run: uv sync --frozen
46-
- name: Create a dummy data.py
47-
run: cp data.py-dist data.py
48-
- name: Check with ruff
49-
run: uv run ruff check lib/ tests/
46+
- uses: actions/checkout@v4
47+
with:
48+
persist-credentials: false
49+
- uses: ./.github/actions/uv-setup/
50+
- run: flake8

.github/workflows/format.yml

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

.github/workflows/jobs-check.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ name: Check jobs consistency
22

33
on: [push]
44

5+
permissions: {}
6+
57
jobs:
68
jobs-check:
79
runs-on: ubuntu-latest
810
steps:
9-
- uses: actions/checkout@v2
10-
- name: Install uv
11-
uses: astral-sh/setup-uv@v6
12-
with:
13-
version: "0.7.x"
14-
- name: Install dependencies
15-
run: uv sync --frozen
16-
- name: Create a dummy data.py
17-
run: cp data.py-dist data.py
18-
- name: jobs-check
19-
run: uv run ./jobs.py check
11+
- uses: actions/checkout@v4
12+
with:
13+
persist-credentials: false
14+
- uses: ./.github/actions/uv-setup/
15+
with:
16+
dev: false
17+
- name: Create a dummy data.py
18+
run: cp data.py-dist data.py
19+
- run: ./jobs.py check

.github/workflows/requirements-check.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,17 @@ name: Check requirements file consistency
22

33
on: [push]
44

5+
permissions: {}
6+
57
jobs:
68
requirements-check:
79
runs-on: ubuntu-latest
810
steps:
9-
- uses: actions/checkout@v2
10-
- name: Install uv
11-
uses: astral-sh/setup-uv@v6
12-
with:
13-
version: "0.7.x"
14-
- name: Install dependencies
15-
run: uv sync --frozen
16-
- run: uv run ./requirements/update_requirements.py
17-
- run: git diff --exit-code
11+
- uses: actions/checkout@v4
12+
with:
13+
persist-credentials: false
14+
- uses: ./.github/actions/uv-setup/
15+
with:
16+
dev: false
17+
- run: ./requirements/update_requirements.py
18+
- run: git diff --exit-code

.github/workflows/test-sequences.yml

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,26 @@ name: Check test-sequences consistency
22

33
on: [push]
44

5+
permissions: {}
6+
57
jobs:
68
jobs-check:
79
runs-on: ubuntu-latest
810
steps:
9-
- uses: actions/checkout@v2
10-
- name: Install uv
11-
uses: astral-sh/setup-uv@v6
12-
with:
13-
version: "0.7.x"
14-
- name: Install dependencies
15-
run: uv sync --frozen
16-
- name: Create a dummy data.py
17-
run: cp data.py-dist data.py
18-
- name: jobs-check
19-
run: |
20-
FAILURES=""
21-
for seq in $(find -name "*.lst"); do
22-
if ! uv run pytest @$seq --collect-only --quiet; then
23-
FAILURES="$FAILURES $seq"
24-
fi
25-
done
26-
[ -z "$FAILURES" ] || { echo >&2 "ERROR: test sequences failed consistency check: $FAILURES"; exit 1; }
11+
- uses: actions/checkout@v4
12+
with:
13+
persist-credentials: false
14+
- uses: ./.github/actions/uv-setup/
15+
with:
16+
dev: false
17+
- name: Create a dummy data.py
18+
run: cp data.py-dist data.py
19+
- name: jobs-check
20+
run: |
21+
FAILURES=""
22+
for seq in $(find -name "*.lst"); do
23+
if ! pytest @$seq --collect-only --quiet; then
24+
FAILURES="$FAILURES $seq"
25+
fi
26+
done
27+
[ -z "$FAILURES" ] || { echo >&2 "ERROR: test sequences failed consistency check: $FAILURES"; exit 1; }

.github/workflows/zizmor.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
name: GitHub Actions Security Analysis with zizmor 🌈
2+
3+
on: [push]
4+
5+
permissions: {}
6+
7+
jobs:
8+
zizmor:
9+
name: zizmor latest
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
with:
14+
persist-credentials: false
15+
- uses: ./.github/actions/uv-setup/
16+
with:
17+
sync: false
18+
- run: uvx zizmor --color=always .
19+
env:
20+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

pyproject.toml

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "xcp-ng-tests"
33
version = "0.1.0"
44
description = "Testing scripts for XCP-ng"
55
readme = "README.md"
6-
requires-python = "~=3.11"
6+
requires-python = ">=3.11"
77
dependencies = [
88
"cryptography>=3.3.1",
99
"gitpython",
@@ -21,6 +21,7 @@ dev = [
2121
"bs4>=0.0.1",
2222
"mypy",
2323
"flake8",
24+
"flake8-pyproject",
2425
"pydocstyle",
2526
"pyright",
2627
"pyyaml>=6.0",
@@ -42,17 +43,38 @@ quote-style = "preserve"
4243

4344
[tool.ruff.lint]
4445
select = [
46+
"D", # pydocstyle
4547
"F", # Pyflakes
4648
"I", # isort
4749
"SLF", # flake8-self
4850
"SIM", # flake8-simplify
4951
]
50-
# don't use some of the SIM rules
52+
# don't use some of the default D and SIM rules
5153
ignore = [
54+
"D100", # undocumented-public-module
55+
"D101", # undocumented-public-class
56+
"D102", # undocumented-public-method
57+
"D103", # undocumented-public-function
58+
"D104", # undocumented-public-package
59+
"D105", # undocumented-magic-method
60+
"D106", # undocumented-public-nested-class
61+
"D107", # undocumented-public-init
62+
"D200", # unnecessary-multiline-docstring
63+
"D203", # incorrect-blank-line-before-class
64+
"D204", # incorrect-blank-line-after-class
65+
"D205", # missing-blank-line-after-summary
66+
"D210", # surrounding-whitespace
67+
"D212", # incorrect-blank-line-before-class
68+
"D400", # missing-trailing-period
69+
"D401", # non-imperative-mood
70+
"D403", # first-word-uncapitalized
5271
"SIM105", # suppressible-exception
5372
"SIM108", # if-else-block-instead-of-if-exp
5473
]
5574

75+
# restrict to the PEP 257 rules
76+
pydocstyle.convention = "pep257"
77+
5678
[tool.ruff.lint.extend-per-file-ignores]
5779
# pytest requires some import and function arguments to match, but
5880
# the linter doesn't know that
@@ -76,3 +98,16 @@ section-order = [
7698
"local-folder",
7799
"typing",
78100
]
101+
102+
# ruff doesn't provide all the pycodestyle rules, and pycodestyle is not well
103+
# supported by some IDEs, so we use flake8 for that
104+
[tool.flake8]
105+
max-line-length = 120
106+
ignore = [
107+
"E261", # At least two spaces before inline comment
108+
"E302", # Expected 2 blank lines, found 0
109+
"E305", # Expected 2 blank lines after end of function or class
110+
"W503", # Line break occurred before a binary operator
111+
"F", # already done by ruff
112+
]
113+
exclude=[".git", ".venv", "data.py", "vm_data.py"]

requirements/dev.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ansible>=5.0.1
33
bs4>=0.0.1
44
mypy
55
flake8
6+
flake8-pyproject
67
pydocstyle
78
pyright
89
pyyaml>=6.0

setup.cfg

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

0 commit comments

Comments
 (0)