Skip to content

Commit 4bad4ae

Browse files
scverse-botZethson
andauthored
Update template to v0.6.0 (#90)
* Automated template update to v0.5.0 * Automated template update to v0.6.0 * prek Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net> * delete vscode config Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net> * readd Quentin Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net> * revert Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net> --------- Signed-off-by: Lukas Heumos <lukas.heumos@posteo.net> Co-authored-by: Lukas Heumos <lukas.heumos@posteo.net>
1 parent fd866d6 commit 4bad4ae

16 files changed

Lines changed: 601 additions & 349 deletions

File tree

.cruft.json

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"template": "https://github.com/scverse/cookiecutter-scverse",
3-
"commit": "87a407a65408d75a949c0b54b19fd287475a56f8",
4-
"checkout": null,
3+
"commit": "d383d94fadff9e4e6fdb59d77c68cb900d7cedec",
4+
"checkout": "v0.6.0",
55
"context": {
66
"cookiecutter": {
77
"project_name": "pytometry",
@@ -10,19 +10,33 @@
1010
"author_full_name": "Maren Büttner",
1111
"author_email": "maren.buettner@tum.de",
1212
"github_user": "scverse",
13-
"project_repo": "https://github.com/scverse/pytometry",
13+
"github_repo": "pytometry",
1414
"license": "Apache License Version 2.0",
15+
"ide_integration": true,
1516
"_copy_without_render": [
1617
".github/workflows/build.yaml",
1718
".github/workflows/test.yaml",
1819
"docs/_templates/autosummary/**.rst"
1920
],
21+
"_exclude_on_template_update": [
22+
"CHANGELOG.md",
23+
"LICENSE",
24+
"README.md",
25+
"docs/api.md",
26+
"docs/index.md",
27+
"docs/notebooks/example.ipynb",
28+
"docs/references.bib",
29+
"docs/references.md",
30+
"src/**",
31+
"tests/**"
32+
],
2033
"_render_devdocs": false,
2134
"_jinja2_env_vars": {
2235
"lstrip_blocks": true,
2336
"trim_blocks": true
2437
},
25-
"_template": "https://github.com/scverse/cookiecutter-scverse"
38+
"_template": "https://github.com/scverse/cookiecutter-scverse",
39+
"_commit": "d383d94fadff9e4e6fdb59d77c68cb900d7cedec"
2640
}
2741
},
2842
"directory": null

.editorconfig

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,7 @@ charset = utf-8
88
trim_trailing_whitespace = true
99
insert_final_newline = true
1010

11-
[*.{yml,yaml}]
12-
indent_size = 2
13-
14-
[.cruft.json]
11+
[{*.{yml,yaml,toml},.cruft.json}]
1512
indent_size = 2
1613

1714
[Makefile]

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 64 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -23,67 +23,72 @@ body:
2323
- type: textarea
2424
id: versions
2525
attributes:
26-
label: Version information
26+
label: Versions
2727
description: |
28-
Please paste below the output of
28+
Which version of packages.
29+
30+
Please install `session-info2`, run the following command in a notebook,
31+
click the “Copy as Markdown” button, then paste the results into the text box below.
32+
33+
```python
34+
In[1]: import session_info2; session_info2.session_info(dependencies=True)
35+
```
36+
37+
Alternatively, run this in a console:
2938
3039
```python
31-
import session_info
32-
session_info.show(html=False, dependencies=True)
40+
>>> import session_info2; print(session_info2.session_info(dependencies=True)._repr_mimebundle_()["text/markdown"])
3341
```
42+
render: python
3443
placeholder: |
35-
-----
36-
anndata 0.8.0rc2.dev27+ge524389
37-
session_info 1.0.0
38-
-----
39-
asttokens NA
40-
awkward 1.8.0
41-
backcall 0.2.0
42-
cython_runtime NA
43-
dateutil 2.8.2
44-
debugpy 1.6.0
45-
decorator 5.1.1
46-
entrypoints 0.4
47-
executing 0.8.3
48-
h5py 3.7.0
49-
ipykernel 6.15.0
50-
jedi 0.18.1
51-
mpl_toolkits NA
52-
natsort 8.1.0
53-
numpy 1.22.4
54-
packaging 21.3
55-
pandas 1.4.2
56-
parso 0.8.3
57-
pexpect 4.8.0
58-
pickleshare 0.7.5
59-
pkg_resources NA
60-
prompt_toolkit 3.0.29
61-
psutil 5.9.1
62-
ptyprocess 0.7.0
63-
pure_eval 0.2.2
64-
pydev_ipython NA
65-
pydevconsole NA
66-
pydevd 2.8.0
67-
pydevd_file_utils NA
68-
pydevd_plugins NA
69-
pydevd_tracing NA
70-
pygments 2.12.0
71-
pytz 2022.1
72-
scipy 1.8.1
73-
setuptools 62.5.0
74-
setuptools_scm NA
75-
six 1.16.0
76-
stack_data 0.3.0
77-
tornado 6.1
78-
traitlets 5.3.0
79-
wcwidth 0.2.5
80-
zmq 23.1.0
81-
-----
82-
IPython 8.4.0
83-
jupyter_client 7.3.4
84-
jupyter_core 4.10.0
85-
-----
86-
Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 16:58:50) [GCC 10.3.0]
87-
Linux-5.18.6-arch1-1-x86_64-with-glibc2.35
88-
-----
89-
Session information updated at 2022-07-07 17:55
44+
anndata 0.11.3
45+
---- ----
46+
charset-normalizer 3.4.1
47+
coverage 7.7.0
48+
psutil 7.0.0
49+
dask 2024.7.1
50+
jaraco.context 5.3.0
51+
numcodecs 0.15.1
52+
jaraco.functools 4.0.1
53+
Jinja2 3.1.6
54+
sphinxcontrib-jsmath 1.0.1
55+
sphinxcontrib-htmlhelp 2.1.0
56+
toolz 1.0.0
57+
session-info2 0.1.2
58+
PyYAML 6.0.2
59+
llvmlite 0.44.0
60+
scipy 1.15.2
61+
pandas 2.2.3
62+
sphinxcontrib-devhelp 2.0.0
63+
h5py 3.13.0
64+
tblib 3.0.0
65+
setuptools-scm 8.2.0
66+
more-itertools 10.3.0
67+
msgpack 1.1.0
68+
sparse 0.15.5
69+
wrapt 1.17.2
70+
jaraco.collections 5.1.0
71+
numba 0.61.0
72+
pyarrow 19.0.1
73+
pytz 2025.1
74+
MarkupSafe 3.0.2
75+
crc32c 2.7.1
76+
sphinxcontrib-qthelp 2.0.0
77+
sphinxcontrib-serializinghtml 2.0.0
78+
zarr 2.18.4
79+
asciitree 0.3.3
80+
six 1.17.0
81+
sphinxcontrib-applehelp 2.0.0
82+
numpy 2.1.3
83+
cloudpickle 3.1.1
84+
sphinxcontrib-bibtex 2.6.3
85+
natsort 8.4.0
86+
jaraco.text 3.12.1
87+
setuptools 76.1.0
88+
Deprecated 1.2.18
89+
packaging 24.2
90+
python-dateutil 2.9.0.post0
91+
---- ----
92+
Python 3.13.2 | packaged by conda-forge | (main, Feb 17 2025, 14:10:22) [GCC 13.3.0]
93+
OS Linux-6.11.0-109019-tuxedo-x86_64-with-glibc2.39
94+
Updated 2025-03-18 15:47

.github/workflows/build.yaml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,24 @@ concurrency:
1010
group: ${{ github.workflow }}-${{ github.ref }}
1111
cancel-in-progress: true
1212

13+
defaults:
14+
run:
15+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
16+
shell: bash -euo pipefail {0}
17+
1318
jobs:
1419
package:
1520
runs-on: ubuntu-latest
1621
steps:
1722
- uses: actions/checkout@v5
18-
- name: Set up Python 3.13
19-
uses: actions/setup-python@v6
2023
with:
21-
python-version: "3.13"
22-
cache: "pip"
23-
cache-dependency-path: "**/pyproject.toml"
24-
- name: Install build dependencies
25-
run: python -m pip install --upgrade pip wheel twine build
24+
filter: blob:none
25+
fetch-depth: 0
26+
- name: Install uv
27+
uses: astral-sh/setup-uv@v6
28+
with:
29+
cache-dependency-glob: pyproject.toml
2630
- name: Build package
27-
run: python -m build
31+
run: uv build
2832
- name: Check package
29-
run: twine check --strict dist/*.whl
33+
run: uvx twine check --strict dist/*.whl

.github/workflows/release.yaml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ on:
44
release:
55
types: [published]
66

7+
defaults:
8+
run:
9+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
10+
shell: bash -euo pipefail {0}
11+
712
# Use "trusted publishing", see https://docs.pypi.org/trusted-publishers/
813
jobs:
914
release:
@@ -19,11 +24,11 @@ jobs:
1924
with:
2025
filter: blob:none
2126
fetch-depth: 0
22-
- uses: actions/setup-python@v6
27+
- name: Install uv
28+
uses: astral-sh/setup-uv@v6
2329
with:
24-
python-version: "3.x"
25-
cache: "pip"
26-
- run: pip install build
27-
- run: python -m build
30+
cache-dependency-glob: pyproject.toml
31+
- name: Build package
32+
run: uv build
2833
- name: Publish package distributions to PyPI
2934
uses: pypa/gh-action-pypi-publish@release/v1

.github/workflows/test.yaml

Lines changed: 72 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -12,56 +12,92 @@ concurrency:
1212
group: ${{ github.workflow }}-${{ github.ref }}
1313
cancel-in-progress: true
1414

15+
defaults:
16+
run:
17+
# to fail on error in multiline statements (-e), in pipes (-o pipefail), and on unset variables (-u).
18+
shell: bash -euo pipefail {0}
19+
1520
jobs:
21+
# Get the test environment from hatch as defined in pyproject.toml.
22+
# This ensures that the pyproject.toml is the single point of truth for test definitions and the same tests are
23+
# run locally and on continuous integration.
24+
# Check [[tool.hatch.envs.hatch-test.matrix]] in pyproject.toml and https://hatch.pypa.io/latest/environment/ for
25+
# more details.
26+
get-environments:
27+
runs-on: ubuntu-latest
28+
outputs:
29+
envs: ${{ steps.get-envs.outputs.envs }}
30+
steps:
31+
- uses: actions/checkout@v4
32+
with:
33+
filter: blob:none
34+
fetch-depth: 0
35+
- name: Install uv
36+
uses: astral-sh/setup-uv@v5
37+
- name: Get test environments
38+
id: get-envs
39+
run: |
40+
ENVS_JSON=$(uvx hatch env show --json | jq -c 'to_entries
41+
| map(
42+
select(.key | startswith("hatch-test"))
43+
| {
44+
name: .key,
45+
label: (if (.key | contains("pre")) then .key + " (PRE-RELEASE DEPENDENCIES)" else .key end),
46+
python: .value.python
47+
}
48+
)')
49+
echo "envs=${ENVS_JSON}" | tee $GITHUB_OUTPUT
50+
51+
# Run tests through hatch. Spawns a separate runner for each environment defined in the hatch matrix obtained above.
1652
test:
17-
runs-on: ${{ matrix.os }}
18-
defaults:
19-
run:
20-
shell: bash -e {0} # -e to fail on error
53+
needs: get-environments
2154

2255
strategy:
2356
fail-fast: false
2457
matrix:
25-
include:
26-
- os: ubuntu-latest
27-
python: "3.11"
28-
- os: ubuntu-latest
29-
python: "3.13"
30-
- os: ubuntu-latest
31-
python: "3.13"
32-
pip-flags: "--pre"
33-
name: PRE-RELEASE DEPENDENCIES
58+
os: [ubuntu-latest]
59+
env: ${{ fromJSON(needs.get-environments.outputs.envs) }}
3460

35-
name: ${{ matrix.name }} Python ${{ matrix.python }}
36-
37-
env:
38-
OS: ${{ matrix.os }}
39-
PYTHON: ${{ matrix.python }}
61+
name: ${{ matrix.env.label }}
62+
runs-on: ${{ matrix.os }}
4063

4164
steps:
42-
- uses: actions/checkout@v5
43-
- name: Set up Python ${{ matrix.python }}
44-
uses: actions/setup-python@v6
65+
- uses: actions/checkout@v4
4566
with:
46-
python-version: ${{ matrix.python }}
47-
cache: "pip"
48-
cache-dependency-path: "**/pyproject.toml"
49-
50-
- name: Install test dependencies
51-
run: |
52-
python -m pip install --upgrade pip wheel
53-
- name: Install dependencies
54-
run: |
55-
pip install ${{ matrix.pip-flags }} ".[dev,test]"
56-
- name: Test
67+
filter: blob:none
68+
fetch-depth: 0
69+
- name: Install uv
70+
uses: astral-sh/setup-uv@v5
71+
with:
72+
python-version: ${{ matrix.env.python }}
73+
cache-dependency-glob: pyproject.toml
74+
- name: create hatch environment
75+
run: uvx hatch env create ${{ matrix.env.name }}
76+
- name: run tests using hatch
5777
env:
5878
MPLBACKEND: agg
5979
PLATFORM: ${{ matrix.os }}
6080
DISPLAY: :42
81+
run: uvx hatch run ${{ matrix.env.name }}:run-cov -v --color=yes -n auto
82+
- name: generate coverage report
6183
run: |
62-
coverage run -m pytest -v --color=yes
63-
- name: Report coverage
64-
run: |
65-
coverage report
84+
# See https://coverage.readthedocs.io/en/latest/config.html#run-patch
85+
test -f .coverage || uvx hatch run ${{ matrix.env.name }}:cov-combine
86+
uvx hatch run ${{ matrix.env.name }}:cov-report # report visibly
87+
uvx hatch run ${{ matrix.env.name }}:coverage xml # create report for upload
6688
- name: Upload coverage
6789
uses: codecov/codecov-action@v5
90+
91+
# Check that all tests defined above pass. This makes it easy to set a single "required" test in branch
92+
# protection instead of having to update it frequently. See https://github.com/re-actors/alls-green#why.
93+
check:
94+
name: Tests pass in all hatch environments
95+
if: always()
96+
needs:
97+
- get-environments
98+
- test
99+
runs-on: ubuntu-latest
100+
steps:
101+
- uses: re-actors/alls-green@release/v1
102+
with:
103+
jobs: ${{ toJSON(needs) }}

0 commit comments

Comments
 (0)