1- name : CI
1+ name : Release
22
33env :
44 POETRY_VIRTUALENVS_CREATE : true
1111jobs :
1212 lint :
1313 runs-on : ubuntu-latest
14+ timeout-minutes : 15
1415 steps :
1516 - uses : actions/checkout@v4
1617 - uses : actions/setup-python@v5
@@ -27,19 +28,21 @@ jobs:
2728 - uses : abatilo/actions-poetry@v3
2829 with :
2930 poetry-version : 1.8.3
30- - name : Install deps
31- run : poetry install
31+ - name : Install deps with numpy
32+ timeout-minutes : 5
33+ run : poetry install -E numpy-backend
3234 - name : Lint
3335 run : poetry run flake8 src/ssspx
3436 - name : Docstring style
3537 run : poetry run pydocstyle src/ssspx
3638 - name : Docstring coverage
37- run : poetry run interrogate -q -c pyproject.toml
39+ run : poetry run docstr-coverage src/ssspx --fail-under 90
3840 - name : Type check
3941 run : poetry run mypy src/ssspx
4042 - name : Security scan
4143 run : poetry run bandit -r src/ssspx -c bandit.yaml --severity-level high
4244 - name : Dependency audit
45+ timeout-minutes : 3
4346 run : poetry run pip-audit --ignore-vuln PYSEC-2022-42969
4447 - name : Deprecations up-to-date
4548 run : poetry run python tools/check_deprecations.py
4952 unit :
5053 needs : lint
5154 runs-on : ${{ matrix.os }}
55+ timeout-minutes : 10
5256 strategy :
5357 fail-fast : false
5458 matrix :
@@ -76,12 +80,15 @@ jobs:
7680 with :
7781 poetry-version : 1.8.3
7882 - name : Install deps
83+ timeout-minutes : 3
7984 run : poetry install
80- - name : Unit tests
81- run : poetry run pytest -q --maxfail=1 --disable-warnings --cov=ssspx --cov-report=term-missing -m "not integration"
85+ - name : Unit tests (safe subset)
86+ timeout-minutes : 5
87+ run : poetry run pytest -q --maxfail=3 --disable-warnings --tb=short -m "not integration and not stress" -k "not random and not cli"
8288
8389 integration :
8490 runs-on : ubuntu-latest
91+ timeout-minutes : 15
8592 needs : [lint, unit]
8693 steps :
8794 - uses : actions/checkout@v4
@@ -100,12 +107,15 @@ jobs:
100107 with :
101108 poetry-version : 1.8.3
102109 - name : Install deps
110+ timeout-minutes : 5
103111 run : poetry install
104112 - name : Integration tests
105- run : poetry run pytest -q -m integration
113+ timeout-minutes : 5
114+ run : poetry run pytest -q -m integration --tb=short
106115
107116 docs :
108117 runs-on : ubuntu-latest
118+ timeout-minutes : 10
109119 needs : [lint, unit]
110120 steps :
111121 - uses : actions/checkout@v4
@@ -124,12 +134,14 @@ jobs:
124134 with :
125135 poetry-version : 1.8.3
126136 - name : Install deps
137+ timeout-minutes : 5
127138 run : poetry install
128139 - name : Build docs
129140 run : poetry run mkdocs build --strict
130141
131142 release :
132143 runs-on : ubuntu-latest
144+ timeout-minutes : 15
133145 needs : [integration, docs]
134146 if : github.ref == 'refs/heads/main' && github.event_name == 'push'
135147 steps :
@@ -149,6 +161,7 @@ jobs:
149161 with :
150162 poetry-version : 1.8.3
151163 - name : Install deps
164+ timeout-minutes : 5
152165 run : poetry install
153166 - name : Build distributions
154167 run : poetry build
@@ -164,6 +177,7 @@ jobs:
164177
165178 extras :
166179 runs-on : ubuntu-latest
180+ timeout-minutes : 10
167181 needs : lint
168182 steps :
169183 - uses : actions/checkout@v4
@@ -182,6 +196,8 @@ jobs:
182196 with :
183197 poetry-version : 1.8.3
184198 - name : Install with extras
199+ timeout-minutes : 3
185200 run : poetry install -E numpy-backend
186- - name : Unit tests with extras
187- run : poetry run pytest -q --maxfail=1 --disable-warnings -m "not integration"
201+ - name : Unit tests with extras (safe subset)
202+ timeout-minutes : 3
203+ run : poetry run pytest -q --maxfail=3 --disable-warnings --tb=short -m "not integration and not stress" -k "not random and not cli"
0 commit comments