Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
040415b
first part of the provenance collection draft
May 4, 2026
a96821e
first draft for provenance recording of harvest command
May 4, 2026
4f85996
improved ld_prov_list and adjusted the collection of provenance accor…
May 7, 2026
893096c
updated compaction of ld_lists
May 21, 2026
4686353
fixed provenance document loading in harvest
May 21, 2026
c05601b
flake8
May 21, 2026
379fe0f
first draft of provenance recording for process step
May 21, 2026
40a848a
improved provenance collection for harvest
May 28, 2026
d637f84
implement load wrapper for harvest plugins and fixed minor bug
Jun 1, 2026
4d8e62d
implemented draft of provenance collection druing merge
Jun 8, 2026
038b72a
completed provenance recording in the process step at least for now
Jul 2, 2026
2813e02
add curate provenance recording
Jul 24, 2026
7eb72cd
add recording of version of plugins
Jul 24, 2026
483ea1a
add recording of settings and args of commands
Jul 31, 2026
22a9d7b
add provenance recording for deposit
Aug 5, 2026
7063755
revised provenance recording
Aug 5, 2026
1e83028
add diagrams of provenance for future use in adr (exists only on deve…
Aug 5, 2026
66c61b2
add recording of merge strategies
Aug 6, 2026
b775072
add merge strategies for invenio publish
Aug 6, 2026
0cb5357
fix issue 434
Aug 6, 2026
c3c78af
added hermes report command, fixes issue 484
Aug 19, 2026
b3fc205
flake8
Aug 19, 2026
537bb21
add provenance recording for postprocess
Aug 20, 2026
28f6ede
implemented postprocess report
Aug 25, 2026
ccdcacf
updated provenance diagram
Aug 25, 2026
3b34b72
commented ld_prov
Aug 25, 2026
32ffb39
comment base of harvest and process
Aug 26, 2026
5327681
comment base classes of remaining hermes steps
Aug 27, 2026
43e600d
comment base classes and report command base
Aug 27, 2026
b409120
fixed small issues and typos
Aug 31, 2026
f3eb167
remove some outdated fixme comments
Aug 31, 2026
adddd10
Merge branch 'refactor/data-model' into feature/re-add-provenance-rec…
SKernchen Sep 1, 2026
2dcbb1a
Fix HermesContext to HermesCacheManager
SKernchen Sep 1, 2026
c432df3
Flake8
SKernchen Sep 1, 2026
5018654
adapt test for fix of 434
Sep 2, 2026
0ffe893
remove __call__ method from invenio plugin
Sep 2, 2026
e3b93b6
Fix config_invenio_rdm_record_id plugin and flake8
SKernchen Sep 2, 2026
06d59d8
Postprocess plugins for invenio_rdm
SKernchen Sep 2, 2026
7e7f466
fix report command and flake8
Sep 2, 2026
e9dd647
Correct test with new plugin name
SKernchen Sep 2, 2026
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
5,134 changes: 5,134 additions & 0 deletions docs/adr/hermes-prov-diagram/hermes-prov.drawio

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions docs/adr/hermes-prov-diagram/hermes-prov.drawio.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2026 German Aerospace Center (DLR)

SPDX-License-Identifier: CC-BY-SA-4.0
4 changes: 4 additions & 0 deletions docs/adr/hermes-prov-diagram/hermes-prov.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/adr/hermes-prov-diagram/hermes-prov.svg.license
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2026 German Aerospace Center (DLR)

SPDX-License-Identifier: CC-BY-SA-4.0
4 changes: 2 additions & 2 deletions docs/source/adr/0012-overall-data-model-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ Superseded: we no longer need to serialize additional information like provenanc
## Considered Options

* One common model for all stages
* Seperate model for different stages
* Separate model for different stages
* Common model for all stages
* Processing model and curated model

## Decision Outcome

Chosen option: "Seperate model for different stages", because comes out best.
Chosen option: "Separate model for different stages", because comes out best.

## Pros and Cons of the Options

Expand Down
8 changes: 7 additions & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
sys.path.insert(0, os.path.abspath('../../src'))
sys.path.append(os.path.abspath('_ext'))


def read_from_pyproject(file_path="../../pyproject.toml"):
"""
Reads the metadata from the pyproject.toml file.
Expand All @@ -51,6 +52,7 @@ def read_from_pyproject(file_path="../../pyproject.toml"):
except Exception as e:
return f"An unexpected error occurred: {e}"


def read_authors_from_pyproject():
metadata = read_from_pyproject()
authors = metadata.get("authors", [])
Expand All @@ -59,6 +61,7 @@ def read_authors_from_pyproject():
# Convert the list of authors to a comma-separated string
return ", ".join([author["name"] for author in authors])


def read_version_from_pyproject():
metadata = read_from_pyproject()
version = metadata.get("version", "")
Expand All @@ -70,7 +73,8 @@ def read_version_from_pyproject():
# -- Project information -----------------------------------------------------

project = 'HERMES Workflow'
copyright = '2025 by Forschungszentrum Jülich (FZJ), German Aerospace Center (DLR) and Helmholtz-Zentrum Dresden-Rossendorf (HZDR)'
copyright = '2025 by Forschungszentrum Jülich (FZJ), German Aerospace Center (DLR)' \
' and Helmholtz-Zentrum Dresden-Rossendorf (HZDR)'
author = read_authors_from_pyproject()

# The full version, including alpha/beta/rc tags
Expand Down Expand Up @@ -191,6 +195,7 @@ def read_version_from_pyproject():
# TODO: remove this workaround and remove "undoc-members" from autoapi_options once everything is documented
# This removes all generated entries for known documented classes (because autoapi will add all attributes
# it finds in the code no matter if they are described in a class doc string or not).

def autoapi_skip_member(app, obj_type, name, obj, skip, options):
if obj_type == "attribute":
if any(documented_type in obj.id for documented_type in [
Expand All @@ -201,5 +206,6 @@ def autoapi_skip_member(app, obj_type, name, obj, skip, options):

return skip


def setup(app):
app.connect("autoapi-skip-member", autoapi_skip_member)
3 changes: 3 additions & 0 deletions hermes.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
[harvest]
sources = [ "cff", "toml" ] # ordered priority (first one is most important)

[process]
plugins = [ "invenio", "codemeta" ]

[curate]
plugin = "pass_curate"

Expand Down
7 changes: 5 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,14 @@ rodare = "hermes.commands.deposit.rodare:RodareDepositPlugin"
[project.entry-points."hermes.postprocess"]
config_invenio_record_id = "hermes.commands.postprocess.invenio:config_record_id"
config_invenio_rdm_record_id = "hermes.commands.postprocess.invenio_rdm:config_record_id"
cff_doi = "hermes.commands.postprocess.invenio:cff_doi"
codemeta_doi = "hermes.commands.postprocess.invenio:codemeta_doi"
invenio_cff_doi = "hermes.commands.postprocess.invenio:cff_doi"
invenio_rdm_cff_doi = "hermes.commands.postprocess.invenio_rdm:cff_doi"
invenio_codemeta_doi = "hermes.commands.postprocess.invenio:codemeta_doi"
invenio_rdm_codemeta_doi = "hermes.commands.postprocess.invenio_rdm:codemeta_doi"

[project.entry-points."hermes.process"]
codemeta = "hermes.commands.process.standard_merge:CodemetaProcessPlugin"
invenio = "hermes.commands.process.invenio_merge:InvenioProcessPlugin"

[project.entry-points."hermes.curate"]
pass_curate = "hermes.commands.curate.pass_curate:PassCuratePlugin"
Expand Down
1 change: 1 addition & 0 deletions src/hermes/commands/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@
from hermes.commands.process.base import HermesProcessCommand
from hermes.commands.deposit.base import HermesDepositCommand
from hermes.commands.postprocess.base import HermesPostprocessCommand
from hermes.commands.report.base import HermesReportCommand
Loading
Loading