Skip to content

Commit b9e5523

Browse files
softwarepub#276 - Merge latest changes from develop into feature
2 parents 5f75ad1 + 385a119 commit b9e5523

26 files changed

+706
-359
lines changed

.github/workflows/cffconvert.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
steps:
1919
- name: Check out a copy of the repository
20-
uses: actions/checkout@v2
20+
uses: actions/checkout@v4
2121

2222
- name: Check whether the citation metadata from CITATION.cff is valid
2323
uses: citation-file-format/cffconvert-github-action@2.0.0

.github/workflows/hermes-zenodo.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ jobs:
3838
pull-requests: write # Postprocessing should be able to create a pull request with changes
3939

4040
steps:
41-
- uses: actions/checkout@v3
42-
- uses: actions/setup-python@v4
41+
- uses: actions/checkout@v4
42+
- uses: actions/setup-python@v5
4343
with:
4444
python-version: '3.10'
4545
- run: pip install hermes hermes-plugin-python
@@ -61,7 +61,7 @@ jobs:
6161
6262
# Explicitly add to-be-curated metadata (which is ignored via .gitignore!)
6363
git add -f .hermes/curate
64-
- uses: peter-evans/create-pull-request@v5
64+
- uses: peter-evans/create-pull-request@v7
6565
with:
6666
base: hermes/curate-${{ env.SHORT_SHA }}
6767
branch: hermes/curate-result-${{ env.SHORT_SHA }}
@@ -82,8 +82,8 @@ jobs:
8282
pull-requests: write # Postprocessing should be able to create a pull request with changes
8383

8484
steps:
85-
- uses: actions/checkout@v3
86-
- uses: actions/setup-python@v4
85+
- uses: actions/checkout@v4
86+
- uses: actions/setup-python@v5
8787
with:
8888
python-version: '3.10'
8989
- run: pip install hermes
@@ -115,7 +115,7 @@ jobs:
115115
# Note 2: The create-pull-request action will NOT inherit the commits we did in the previous job. It will only look at the
116116
# changes within this local workspace we did *now*.
117117
- run: echo "TARGET_BRANCH=$(cat .hermes/curate/target_branch)" >> "$GITHUB_ENV"
118-
- uses: peter-evans/create-pull-request@v5
118+
- uses: peter-evans/create-pull-request@v7
119119
with:
120120
branch: hermes/post-${{ github.run_id }}
121121
base: ${{ env.TARGET_BRANCH }}
@@ -143,7 +143,7 @@ jobs:
143143
pull-requests: write # Postprocessing should be able to create a pull request with changes
144144

145145
steps:
146-
- uses: actions/checkout@v3
146+
- uses: actions/checkout@v4
147147
# Delete all the curation branches
148148
- run: |
149149
for BRANCH in $(git ls-remote origin 'refs/heads/hermes/curate-*' | cut -f2 | cut -d'/' -f'3-'); do

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
steps:
2323
- uses: actions/checkout@v4
2424
- name: Set up Python
25-
uses: actions/setup-python@v4
25+
uses: actions/setup-python@v5
2626
with:
2727
python-version: "3.10"
2828
- name: Install pypa/build
@@ -34,7 +34,7 @@ jobs:
3434
- name: Build a binary wheel and a source tarball
3535
run: python3 -m build
3636
- name: Store the distribution packages
37-
uses: actions/upload-artifact@v3
37+
uses: actions/upload-artifact@v4
3838
with:
3939
name: python-package-distributions
4040
path: dist/
@@ -54,7 +54,7 @@ jobs:
5454

5555
steps:
5656
- name: Download all the dists
57-
uses: actions/download-artifact@v3
57+
uses: actions/download-artifact@v4
5858
with:
5959
name: python-package-distributions
6060
path: dist/

.github/workflows/tests.yml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,22 @@ jobs:
1818
python-version: ["3.10"] # Ignore Python < 3.10, they are unsupported
1919

2020
steps:
21-
- uses: actions/checkout@v3
21+
- uses: actions/checkout@v4
2222
- name: Set up Python ${{ matrix.python-version }}
23-
uses: actions/setup-python@v4
23+
uses: actions/setup-python@v5
2424
with:
2525
python-version: ${{ matrix.python-version }}
2626
- name: Install dependencies
2727
run: |
28-
python -m pip install --upgrade pip
29-
pip install flake8 pytest
30-
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
28+
python -m pip install --upgrade pip poetry
29+
poetry install
3130
- name: Lint with flake8
3231
run: |
3332
# stop the build if there are Python syntax errors or undefined names
34-
flake8 ./test/ ./src/ --count --select=E9,F63,F7,F82 --show-source --statistics
33+
poetry run flake8 ./test/ ./src/ --count --select=E9,F63,F7,F82 --show-source --statistics
3534
# Stop build on errors
36-
flake8 ./test/ ./src/ --count --statistics
35+
poetry run flake8 ./test/ ./src/ --count --statistics
3736
- name: Test with pytest
3837
run: |
39-
pip install -e .
40-
pip install requests-mock
41-
pytest ./test/
38+
poetry install
39+
poetry run pytest

CITATION.cff

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ title: hermes
1414
message: >-
1515
If you use this software, please cite it using the
1616
metadata from this file.
17-
version: 0.8.1
17+
version: 0.9.0
1818
license: "Apache-2.0"
1919
abstract: "Tool to automate software publication. Not stable yet."
2020
type: software
@@ -29,15 +29,10 @@ authors:
2929
email: stephan.druskat@dlr.de
3030
affiliation: German Aerospace Center (DLR)
3131
orcid: 'https://orcid.org/0000-0003-4925-7248'
32-
- given-names: Jeffrey
33-
family-names: Kelling
34-
email: j.kelling@hzdr.de
35-
affiliation: Helmholtz-Zentrum Dresden-Rossendorf (HZDR)
36-
orcid: 'https://orcid.org/0000-0003-1761-2591'
3732
- given-names: Oliver
3833
family-names: Bertuch
3934
email: o.bertuch@fz-juelich.de
40-
affiliation: Forschungszentrum Jülich GmbH (FZJ)
35+
affiliation: Forschungszentrum Jülich
4136
orcid: 'https://orcid.org/0000-0002-2702-3419'
4237
- given-names: Oliver
4338
family-names: Knodel
@@ -54,6 +49,11 @@ authors:
5449
email: sophie.kernchen@dlr.de
5550
affiliation: German Aerospace Center (DLR)
5651
orcid: 'https://orcid.org/0009-0005-4430-6743'
52+
- given-names: Nitai
53+
family-names: Heeb
54+
email: n.heeb@fz-juelich.de
55+
affiliation: Forschungszentrum Jülich
56+
orcid: 'https://orcid.org/0009-0001-8382-4923'
5757
identifiers:
5858
- type: doi
5959
value: 10.5281/zenodo.13221384

GOVERNANCE.md

Lines changed: 84 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,84 @@
1-
<!--
2-
SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR)
3-
SPDX-FileContributor: Stephan Druskat
4-
5-
SPDX-License-Identifier: CC-BY-SA-4.0
6-
-->
7-
8-
## Governance
9-
10-
The HERMES project employs a lightweight governance model.
11-
12-
All decisions are made by the [HERMES Steering Group](#hermes-steering-group)
13-
together with the maintainer(s) of the repositories affected by the decision.
14-
15-
Decisions that adhere to a single [repository in the scope of the HERMES project](#hermes-project-repositories)
16-
are made by *lazy consensus*:
17-
18-
1. The maintainer of the repository makes a decision and notifies the HERMES Steering Group
19-
(using `@softwarepub/hermes-steering-group` mention).
20-
2. If no members of the Steering Group veto the decision within the decision period of one week (168 hours),
21-
the decision becomes effective and can be acted upon.
22-
The maintainer and any member of the Steering Group can ask for a longer decision period,
23-
which must be granted.
24-
During this period, the steering committee should meet to discuss the decision.
25-
3. If one or more members of the Steering Group veto the decision,
26-
the decision is discussed until consensus is reached.
27-
28-
Decisions that adhere to more than one [repository in the scope of the HERMES project](#hermes-project-repositories)
29-
must be based on full consensus within the Steering Group.
30-
31-
32-
### HERMES project repositories
33-
34-
The following are the repositories that are governed by the Steering Group.
35-
36-
- <https://github.com/softwarepub/hermes> (Maintainer: Stephan Druskat)
37-
- <https://github.com/softwarepub/ci-templates> (Maintainer: Oliver Bertuch)
38-
- <https://github.com/softwarepub/hermes-plugin-git> (Maintainer: Sophie Kernchen)
39-
- <https://github.com/softwarepub/hermes-plugin-python> (Maintainer: Michael Meinel)
40-
- <https://github.com/softwarepub/showcase> (Maintainer: Oliver Bertuch)
41-
- <https://github.com/softwarepub/schema.software-metadata.pub> (Maintainer: Michael Meinel)
42-
- <https://github.com/softwarepub/github-action> (Maintainer: Oliver Bertuch)
43-
- <https://github.com/softwarepub/concept-paper> (Maintainer: Stephan Druskat)
44-
45-
New repositories may be added to,
46-
and existing repositories may be removed from,
47-
the project by the [Steering Group](#hermes-steering-group)
48-
by updating the above list.
49-
Any update needs lazy consensus [as defined above](#governance) from all members of the Steering Group.
50-
51-
### HERMES Steering Group
52-
53-
The HERMES Steering Group has three members,
54-
each of whom represents one of the three Helmholtz centers
55-
who were funded under the original Helmholtz Metadata Collaboration project (ZT-I-PF-3-006), i.e.,
56-
German Aerospace Center (DLR),
57-
Helmholtz-Zentrum Dresden-Rossendorf (HZDR),
58-
Forschungszentrum Jülich (FZJ).
59-
60-
Currently the Steering Group consists of:
61-
62-
- Stephan Druskat (DLR), stephan.druskat@dlr.de
63-
- David Pape (HZDR), d.pape@hzdr.de
64-
- Nitai Heeb (FZJ), n.heeb@fz-juelich.de
65-
66-
67-
Whenever a member of the Steering Group wants to step down,
68-
they are asked to nominate a successor.
69-
If no successor is named,
70-
the two remaining members seek a successor affiliated with the Helmholtz center of the leaving member.
71-
New members of the Steering Group join if neither of the other two members disagrees with the decision to join.
72-
73-
### HERMES repository maintainers
74-
75-
Each [repository in the scope of the HERMES project](#hermes-project-repositories) should have one maintainer at all times.
76-
The Steering Group appoints the maintainer for this repository in agreement with the appointed person.
77-
Whenever a maintainer wants to step down,
78-
they are asked to nominate a successor.
79-
If no successor is named,
80-
the Steering Group seeks a successor.
81-
One member of the Steering Group steps in as interim maintainer until a successor is found.
1+
<!--
2+
SPDX-FileCopyrightText: 2024 German Aerospace Center (DLR)
3+
SPDX-FileContributor: Stephan Druskat
4+
5+
SPDX-License-Identifier: CC-BY-SA-4.0
6+
-->
7+
8+
## Governance
9+
10+
The HERMES project employs a lightweight governance model.
11+
12+
All decisions are made by the [HERMES Steering Group](#hermes-steering-group)
13+
together with the maintainer(s) of the repositories affected by the decision.
14+
15+
Decisions that adhere to a single [repository in the scope of the HERMES project](#hermes-project-repositories)
16+
are made by *lazy consensus*:
17+
18+
1. The maintainer of the repository makes a decision and notifies the HERMES Steering Group
19+
(using `@softwarepub/hermes-steering-group` mention).
20+
2. If no members of the Steering Group veto the decision within the decision period of one week (168 hours),
21+
the decision becomes effective and can be acted upon.
22+
The maintainer and any member of the Steering Group can ask for a longer decision period,
23+
which must be granted.
24+
During this period, the steering committee should meet to discuss the decision.
25+
3. If one or more members of the Steering Group veto the decision,
26+
the decision is discussed until consensus is reached.
27+
28+
Decisions that adhere to more than one [repository in the scope of the HERMES project](#hermes-project-repositories)
29+
must be based on full consensus within the Steering Group.
30+
31+
32+
### HERMES project repositories
33+
34+
The following are the repositories that are governed by the Steering Group.
35+
36+
- <https://github.com/softwarepub/hermes> (Maintainer: Stephan Druskat)
37+
- <https://github.com/softwarepub/ci-templates> (Maintainer: Oliver Bertuch)
38+
- <https://github.com/softwarepub/hermes-plugin-git> (Maintainer: Sophie Kernchen)
39+
- <https://github.com/softwarepub/hermes-plugin-python> (Maintainer: Michael Meinel)
40+
- <https://github.com/softwarepub/showcase> (Maintainer: Oliver Bertuch)
41+
- <https://github.com/softwarepub/schema.software-metadata.pub> (Maintainer: Michael Meinel)
42+
- <https://github.com/softwarepub/github-action> (Maintainer: Oliver Bertuch)
43+
- <https://github.com/softwarepub/concept-paper> (Maintainer: Stephan Druskat)
44+
45+
New repositories may be added to,
46+
and existing repositories may be removed from,
47+
the project by the [Steering Group](#hermes-steering-group)
48+
by updating the above list.
49+
Any update needs lazy consensus [as defined above](#governance) from all members of the Steering Group.
50+
51+
### HERMES Steering Group
52+
53+
The HERMES Steering Group has three members,
54+
each of whom represents one of the three Helmholtz centers
55+
who were funded under the original Helmholtz Metadata Collaboration project (ZT-I-PF-3-006), i.e.,
56+
German Aerospace Center (DLR),
57+
Helmholtz-Zentrum Dresden-Rossendorf (HZDR),
58+
Forschungszentrum Jülich (FZJ).
59+
60+
Currently, the Steering Group consists of:
61+
62+
- Stephan Druskat (DLR), stephan.druskat@dlr.de
63+
- David Pape (HZDR), d.pape@hzdr.de
64+
- Nitai Heeb (FZJ), n.heeb@fz-juelich.de
65+
66+
67+
Whenever a member of the Steering Group wants to step down,
68+
they are asked to nominate a successor.
69+
If no successor is named,
70+
the two remaining members seek a successor affiliated with the Helmholtz center of the leaving member.
71+
New members of the Steering Group join if neither of the other two members disagrees with the decision to join.
72+
73+
### HERMES repository maintainers
74+
75+
Each [repository in the scope of the HERMES project](#hermes-project-repositories) should have one maintainer at all times.
76+
The Steering Group appoints the maintainer for this repository in agreement with the appointed person.
77+
Whenever a maintainer wants to step down,
78+
they are asked to nominate a successor.
79+
If no successor is named,
80+
the Steering Group seeks a successor.
81+
One member of the Steering Group steps in as interim maintainer until a successor is found.
82+
83+
In addition, all contributors with write access to repositories and regular activities should be added as "authors" to project and build system metadata in alphabetical order.
84+
They may also qualify for scholarly authorship, which is managed in citation metadata as necessary and may be ordered by other criteria.

docs/source/conf.py

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,58 @@
2222
#
2323
import os
2424
import sys
25+
import toml
26+
2527
sys.path.insert(0, os.path.abspath('../../src'))
2628
sys.path.append(os.path.abspath('_ext'))
2729

30+
def read_from_pyproject(file_path="../../pyproject.toml"):
31+
"""
32+
Reads the metadata from the pyproject.toml file.
33+
34+
:param file_path: Path to the pyproject.toml file (default: "pyproject.toml")
35+
:return: A list of authors or a message if no authors are found.
36+
"""
37+
try:
38+
# Load the pyproject.toml file
39+
data = toml.load(file_path)
40+
41+
# Navigate to the authors metadata
42+
metadata = data.get("tool", {}).get("poetry", {})
43+
if not metadata:
44+
return "No metadata found in pyproject.toml"
45+
return metadata
46+
except FileNotFoundError:
47+
return f"The file {file_path} was not found."
48+
except toml.TomlDecodeError:
49+
return f"Failed to parse {file_path}. Ensure it is a valid TOML file."
50+
except Exception as e:
51+
return f"An unexpected error occurred: {e}"
52+
53+
def read_authors_from_pyproject():
54+
metadata = read_from_pyproject()
55+
authors = metadata.get("authors", [])
56+
if not authors:
57+
return "No authors metadata found in pyproject.toml"
58+
# Convert the list of authors to a comma-separated string
59+
return ", ".join([a.split(" <")[0] for a in authors])
60+
61+
def read_version_from_pyproject():
62+
metadata = read_from_pyproject()
63+
version = metadata.get("version", "")
64+
if not version:
65+
return "No version metadata found in pyproject.toml"
66+
return version
67+
2868

2969
# -- Project information -----------------------------------------------------
3070

3171
project = 'HERMES Workflow'
32-
copyright = '2024, HERMES project'
33-
author = 'Oliver Bertuch, Stephan Druskat, Guido Juckeland, Jeffrey Kelling, ' + \
34-
'Oliver Knodel, Michael Meinel, Tobias Schlauch, Sophie Kernchen, ' + \
35-
'David Pape'
36-
72+
copyright = '2025 by Forschungszentrum Jülich (FZJ), German Aerospace Center (DLR) and Helmholtz-Zentrum Dresden-Rossendorf (HZDR)'
73+
author = read_authors_from_pyproject()
3774

3875
# The full version, including alpha/beta/rc tags
39-
release = '2024-01-11'
76+
release = read_version_from_pyproject()
4077

4178

4279
# -- General configuration ---------------------------------------------------

0 commit comments

Comments
 (0)