dirac-cwl 1.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. dirac_cwl-1.0.2/.github/workflows/deployment.yml +72 -0
  2. dirac_cwl-1.0.2/.github/workflows/generate-schemas.yml +123 -0
  3. dirac_cwl-1.0.2/.github/workflows/main.yml +49 -0
  4. dirac_cwl-1.0.2/.gitignore +178 -0
  5. dirac_cwl-1.0.2/.pre-commit-config.yaml +32 -0
  6. dirac_cwl-1.0.2/CHANGELOG.md +144 -0
  7. dirac_cwl-1.0.2/LICENSE +674 -0
  8. dirac_cwl-1.0.2/PKG-INFO +285 -0
  9. dirac_cwl-1.0.2/README.md +252 -0
  10. dirac_cwl-1.0.2/docs/SCHEMA_GENERATION.md +279 -0
  11. dirac_cwl-1.0.2/environment.yaml +19 -0
  12. dirac_cwl-1.0.2/pixi.lock +5710 -0
  13. dirac_cwl-1.0.2/public/CWLDiracX.png +0 -0
  14. dirac_cwl-1.0.2/pyproject.toml +169 -0
  15. dirac_cwl-1.0.2/scripts/generate_schemas.py +352 -0
  16. dirac_cwl-1.0.2/setup.cfg +4 -0
  17. dirac_cwl-1.0.2/src/dirac_cwl/__init__.py +28 -0
  18. dirac_cwl-1.0.2/src/dirac_cwl/commands/__init__.py +5 -0
  19. dirac_cwl-1.0.2/src/dirac_cwl/commands/core.py +37 -0
  20. dirac_cwl-1.0.2/src/dirac_cwl/commands/download_config.py +22 -0
  21. dirac_cwl-1.0.2/src/dirac_cwl/commands/group_outputs.py +32 -0
  22. dirac_cwl-1.0.2/src/dirac_cwl/core/__init__.py +1 -0
  23. dirac_cwl-1.0.2/src/dirac_cwl/core/exceptions.py +5 -0
  24. dirac_cwl-1.0.2/src/dirac_cwl/core/utility.py +41 -0
  25. dirac_cwl-1.0.2/src/dirac_cwl/data_management_mocks/data_manager.py +99 -0
  26. dirac_cwl-1.0.2/src/dirac_cwl/data_management_mocks/file_catalog.py +132 -0
  27. dirac_cwl-1.0.2/src/dirac_cwl/data_management_mocks/sandbox.py +89 -0
  28. dirac_cwl-1.0.2/src/dirac_cwl/execution_hooks/__init__.py +40 -0
  29. dirac_cwl-1.0.2/src/dirac_cwl/execution_hooks/core.py +342 -0
  30. dirac_cwl-1.0.2/src/dirac_cwl/execution_hooks/plugins/__init__.py +16 -0
  31. dirac_cwl-1.0.2/src/dirac_cwl/execution_hooks/plugins/core.py +58 -0
  32. dirac_cwl-1.0.2/src/dirac_cwl/execution_hooks/registry.py +209 -0
  33. dirac_cwl-1.0.2/src/dirac_cwl/job/__init__.py +249 -0
  34. dirac_cwl-1.0.2/src/dirac_cwl/job/job_wrapper.py +375 -0
  35. dirac_cwl-1.0.2/src/dirac_cwl/job/job_wrapper_template.py +56 -0
  36. dirac_cwl-1.0.2/src/dirac_cwl/job/submission_clients.py +166 -0
  37. dirac_cwl-1.0.2/src/dirac_cwl/modules/crypto.py +96 -0
  38. dirac_cwl-1.0.2/src/dirac_cwl/modules/pi_gather.py +41 -0
  39. dirac_cwl-1.0.2/src/dirac_cwl/modules/pi_simulate.py +33 -0
  40. dirac_cwl-1.0.2/src/dirac_cwl/production/__init__.py +200 -0
  41. dirac_cwl-1.0.2/src/dirac_cwl/submission_models.py +157 -0
  42. dirac_cwl-1.0.2/src/dirac_cwl/transformation/__init__.py +203 -0
  43. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/PKG-INFO +285 -0
  44. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/SOURCES.txt +90 -0
  45. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/dependency_links.txt +1 -0
  46. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/entry_points.txt +8 -0
  47. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/requires.txt +17 -0
  48. dirac_cwl-1.0.2/src/dirac_cwl.egg-info/top_level.txt +1 -0
  49. dirac_cwl-1.0.2/test/__init__.py +1 -0
  50. dirac_cwl-1.0.2/test/conftest.py +51 -0
  51. dirac_cwl-1.0.2/test/schemas/dirac-metadata.json +425 -0
  52. dirac_cwl-1.0.2/test/schemas/plugins-summary.json +20 -0
  53. dirac_cwl-1.0.2/test/test_execution_hooks_core.py +272 -0
  54. dirac_cwl-1.0.2/test/test_execution_hooks_registry.py +311 -0
  55. dirac_cwl-1.0.2/test/test_integration.py +244 -0
  56. dirac_cwl-1.0.2/test/test_job_submission_clients.py +104 -0
  57. dirac_cwl-1.0.2/test/test_job_wrapper.py +125 -0
  58. dirac_cwl-1.0.2/test/test_plugins_core.py +199 -0
  59. dirac_cwl-1.0.2/test/test_plugins_lhcb.py +356 -0
  60. dirac_cwl-1.0.2/test/test_submission_models.py +198 -0
  61. dirac_cwl-1.0.2/test/test_workflows.py +608 -0
  62. dirac_cwl-1.0.2/test/workflows/README.md +65 -0
  63. dirac_cwl-1.0.2/test/workflows/bad_references/reference_circular1.cwl +23 -0
  64. dirac_cwl-1.0.2/test/workflows/bad_references/reference_circular2.cwl +23 -0
  65. dirac_cwl-1.0.2/test/workflows/bad_references/reference_doesnotexists.cwl +23 -0
  66. dirac_cwl-1.0.2/test/workflows/bad_references/reference_itself.cwl +23 -0
  67. dirac_cwl-1.0.2/test/workflows/crypto/base64.cwl +22 -0
  68. dirac_cwl-1.0.2/test/workflows/crypto/caesar.cwl +27 -0
  69. dirac_cwl-1.0.2/test/workflows/crypto/description.cwl +61 -0
  70. dirac_cwl-1.0.2/test/workflows/crypto/md5.cwl +22 -0
  71. dirac_cwl-1.0.2/test/workflows/crypto/rot13.cwl +22 -0
  72. dirac_cwl-1.0.2/test/workflows/crypto/type_dependencies/job/inputs-crypto_complete.yaml +2 -0
  73. dirac_cwl-1.0.2/test/workflows/helloworld/description_basic.cwl +10 -0
  74. dirac_cwl-1.0.2/test/workflows/helloworld/description_with_inputs.cwl +14 -0
  75. dirac_cwl-1.0.2/test/workflows/helloworld/type_dependencies/job/inputs-helloworld_with_inputs1.yaml +1 -0
  76. dirac_cwl-1.0.2/test/workflows/helloworld/type_dependencies/job/inputs-helloworld_with_inputs2.yaml +1 -0
  77. dirac_cwl-1.0.2/test/workflows/helloworld/type_dependencies/job/inputs-helloworld_with_inputs3.yaml +1 -0
  78. dirac_cwl-1.0.2/test/workflows/malformed_description/description_malformed_class.cwl +8 -0
  79. dirac_cwl-1.0.2/test/workflows/malformed_description/description_malformed_command.cwl +8 -0
  80. dirac_cwl-1.0.2/test/workflows/parallel/description.cwl +43 -0
  81. dirac_cwl-1.0.2/test/workflows/parallel/sleep.cwl +16 -0
  82. dirac_cwl-1.0.2/test/workflows/pi/description.cwl +43 -0
  83. dirac_cwl-1.0.2/test/workflows/pi/pigather.cwl +24 -0
  84. dirac_cwl-1.0.2/test/workflows/pi/pisimulate.cwl +25 -0
  85. dirac_cwl-1.0.2/test/workflows/pi/type_dependencies/job/inputs-pi_complete.yaml +1 -0
  86. dirac_cwl-1.0.2/test/workflows/pi/type_dependencies/job/inputs-pi_gather.yaml +11 -0
  87. dirac_cwl-1.0.2/test/workflows/pi/type_dependencies/job/inputs-pi_gather_catalog.yaml +11 -0
  88. dirac_cwl-1.0.2/test/workflows/pi/type_dependencies/transformation/metadata-pi_gather.yaml +9 -0
  89. dirac_cwl-1.0.2/test/workflows/pi/type_dependencies/transformation/metadata-pi_simulate.yaml +4 -0
  90. dirac_cwl-1.0.2/test/workflows/test_meta/test_meta.cwl +28 -0
  91. dirac_cwl-1.0.2/test/workflows/test_outputs/test_outputs.cwl +27 -0
  92. dirac_cwl-1.0.2/test/workflows/test_outputs/test_outputs_sandbox.cwl +26 -0
@@ -0,0 +1,72 @@
1
+ name: Deployment
2
+
3
+ on:
4
+ push:
5
+ branches-ignore:
6
+ - dependabot/**
7
+ - release-please-**
8
+ pull_request:
9
+ branches-ignore:
10
+ - release-please-**
11
+
12
+ jobs:
13
+ ci:
14
+ name: CI
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: '3.11'
21
+ - name: Installing dependencies
22
+ run: |
23
+ python -m pip install \
24
+ build \
25
+ readme_renderer[md] \
26
+ setuptools_scm
27
+ - name: Validate README for PyPI
28
+ run: |
29
+ python -m readme_renderer README.md -o /tmp/README.html
30
+ - name: Build distributions
31
+ run: |
32
+ python -m build --outdir $PWD/dist .
33
+
34
+ release-please:
35
+ runs-on: ubuntu-latest
36
+ if: ${{ github.event_name == 'push' && github.repository == 'DIRACGrid/dirac-cwl' }}
37
+ outputs:
38
+ release_created: ${{ steps.release.outputs.release_created }}
39
+ permissions:
40
+ contents: write
41
+ pull-requests: write
42
+ steps:
43
+ - uses: googleapis/release-please-action@v4
44
+ id: release
45
+ with:
46
+ token: ${{ secrets.GITHUB_TOKEN }}
47
+ release-type: simple
48
+
49
+ deploy-pypi:
50
+ name: PyPI deployment
51
+ runs-on: ubuntu-latest
52
+ needs: release-please
53
+ if: ${{ github.event_name == 'push' && github.repository == 'DIRACGrid/dirac-cwl' && needs.release-please.outputs.release_created == 'true' }}
54
+ permissions:
55
+ id-token: write # Required for trusted publishing on PyPI
56
+ steps:
57
+ - uses: actions/checkout@v4
58
+ with:
59
+ fetch-depth: 0 # Required for setuptools_scm to find tags
60
+ - uses: actions/setup-python@v5
61
+ with:
62
+ python-version: '3.11'
63
+ - name: Installing dependencies
64
+ run: |
65
+ python -m pip install \
66
+ build \
67
+ setuptools_scm
68
+ - name: Build distributions
69
+ run: |
70
+ python -m build --outdir $PWD/dist .
71
+ - name: Publish package on PyPI
72
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,123 @@
1
+ name: Build & Publish Schemas to Pages
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"] # publish "main" to Pages
6
+ paths:
7
+ - "src/dirac_cwl/metadata/**"
8
+ - "src/dirac_cwl/submission_models.py"
9
+ - "scripts/generate_schemas.py"
10
+ - "pyproject.toml"
11
+ pull_request:
12
+ branches: ["main"] # PR preview sites
13
+ paths:
14
+ - "src/dirac_cwl/metadata/**"
15
+ - "src/dirac_cwl/submission_models.py"
16
+ - "scripts/generate_schemas.py"
17
+ - "pyproject.toml"
18
+ workflow_dispatch:
19
+
20
+ permissions:
21
+ contents: read
22
+ pages: write
23
+ id-token: write
24
+
25
+ concurrency:
26
+ group: "pages"
27
+ cancel-in-progress: false
28
+
29
+ jobs:
30
+ # Build once and upload the Pages artifact
31
+ build:
32
+ runs-on: ubuntu-latest
33
+ steps:
34
+ - name: Checkout
35
+ uses: actions/checkout@v4
36
+
37
+ - name: Setup Pages
38
+ uses: actions/configure-pages@v5
39
+
40
+ - name: Install Pixi
41
+ uses: prefix-dev/setup-pixi@v0.8.1
42
+ with:
43
+ cache: true
44
+
45
+ # Build schemas using your Pixi tasks (keeps CI == local)
46
+ - name: Build & validate schemas
47
+ run: |
48
+ pixi run schemas # builds JSON+YAML into generated_schemas/
49
+ pixi run validate-schemas # sanity check
50
+ shell: pixi run bash -e {0}
51
+
52
+ # Test that the generated schemas work in practice
53
+ - name: Run schema tests
54
+ run: |
55
+ pixi run test-schemas
56
+ shell: pixi run bash -e {0}
57
+
58
+ # Prepare the static site payload
59
+ - name: Prepare site folder
60
+ run: |
61
+ mkdir -p site/schemas
62
+ cp -r generated_schemas/* site/schemas/
63
+
64
+ # copies used by tests (optional)
65
+ mkdir -p site/test-schemas
66
+ cp -r test/workflows/test_meta/schemas/* site/test-schemas/ || true
67
+
68
+ # simple index
69
+ cat > site/index.html <<'HTML'
70
+ <!doctype html>
71
+ <meta charset="utf-8">
72
+ <title>dirac_cwl schemas</title>
73
+ <h1>dirac_cwl schemas</h1>
74
+ <ul>
75
+ <li><a href="schemas/">schemas/</a> (from generated_schemas/)</li>
76
+ <li><a href="test-schemas/">test-schemas/</a> (copies used in tests)</li>
77
+ </ul>
78
+ <p>Build: ${GITHUB_SHA}</p>
79
+ HTML
80
+
81
+ # Optional: versioned paths
82
+ mkdir -p site/by-branch/${GITHUB_REF_NAME} site/by-sha/${GITHUB_SHA}
83
+ cp -r generated_schemas/* site/by-branch/${GITHUB_REF_NAME}/
84
+ cp -r generated_schemas/* site/by-sha/${GITHUB_SHA}/
85
+
86
+ - name: Upload Pages artifact
87
+ uses: actions/upload-pages-artifact@v3
88
+ with:
89
+ path: site
90
+
91
+ # Deploy preview for PRs
92
+ deploy_preview:
93
+ if: github.event_name == 'pull_request'
94
+ needs: build
95
+ runs-on: ubuntu-latest
96
+ environment:
97
+ name: github-pages
98
+ url: ${{ steps.deployment.outputs.preview_url }} # <-- use preview_url
99
+ steps:
100
+ - name: Deploy to GitHub Pages (preview)
101
+ id: deployment
102
+ uses: actions/deploy-pages@v4
103
+ with:
104
+ preview: true
105
+ - name: Post preview link to job summary
106
+ env:
107
+ PREVIEW_URL: ${{ steps.deployment.outputs.preview_url }}
108
+ run: |
109
+ echo "# GitHub Pages Preview" >> "$GITHUB_STEP_SUMMARY"
110
+ echo "Preview URL: $PREVIEW_URL" >> "$GITHUB_STEP_SUMMARY"
111
+
112
+ # Deploy production on pushes to main
113
+ deploy_prod:
114
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
115
+ needs: build
116
+ runs-on: ubuntu-latest
117
+ environment:
118
+ name: github-pages
119
+ url: ${{ steps.deployment.outputs.page_url }} # production URL
120
+ steps:
121
+ - name: Deploy to GitHub Pages (production)
122
+ id: deployment
123
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,49 @@
1
+ name: Basic Tests
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ pull_request:
7
+ branches: ["main"]
8
+
9
+ jobs:
10
+ ci:
11
+ name: Lint & Tests
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Checkout code
16
+ uses: actions/checkout@v4
17
+
18
+ - name: Install Pixi
19
+ uses: prefix-dev/setup-pixi@v0.8.1
20
+ with:
21
+ cache: true
22
+
23
+ - name: Show Pixi environment
24
+ run: |
25
+ pixi info
26
+ pixi list --locked
27
+ shell: bash
28
+
29
+ - name: Run pre-commit
30
+ run: |
31
+ pixi run pre-commit-install
32
+ pixi run pre-commit-run
33
+ shell: pixi run bash -e {0}
34
+
35
+ - name: Generate & validate schemas
36
+ run: |
37
+ pixi run schemas
38
+ pixi run validate-schemas
39
+ shell: pixi run bash -e {0}
40
+
41
+ - name: Lint (mypy)
42
+ run: |
43
+ pixi run lint
44
+ shell: pixi run bash -e {0}
45
+
46
+ - name: Run tests
47
+ run: |
48
+ pixi run test
49
+ shell: pixi run bash -e {0}
@@ -0,0 +1,178 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/#use-with-ide
110
+ .pdm.toml
111
+
112
+ # pixi
113
+ .pixi/
114
+
115
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
116
+ __pypackages__/
117
+
118
+ # Celery stuff
119
+ celerybeat-schedule
120
+ celerybeat.pid
121
+
122
+ # SageMath parsed files
123
+ *.sage.py
124
+
125
+ # Environments
126
+ .env
127
+ .venv
128
+ env/
129
+ venv/
130
+ ENV/
131
+ env.bak/
132
+ venv.bak/
133
+
134
+ # Spyder project settings
135
+ .spyderproject
136
+ .spyproject
137
+
138
+ # Rope project settings
139
+ .ropeproject
140
+
141
+ # mkdocs documentation
142
+ /site
143
+
144
+ # mypy
145
+ .mypy_cache/
146
+ .dmypy.json
147
+ dmypy.json
148
+
149
+ # Pyre type checker
150
+ .pyre/
151
+
152
+ # pytype static type analyzer
153
+ .pytype/
154
+
155
+ # Cython debug symbols
156
+ cython_debug/
157
+
158
+ # IDE
159
+ # VSCode
160
+ .vscode/
161
+
162
+ # PyCharm
163
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
164
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
165
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
166
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
167
+ #.idea/
168
+
169
+ workernode
170
+ sandboxstore
171
+ filecatalog
172
+
173
+ # Generated schemas - these are build artifacts generated by CI/CD
174
+ generated_schemas/*
175
+ # But keep test schemas that are copied from generated ones
176
+ !test/workflows/test_meta/schemas/dirac-metadata.json
177
+
178
+ .DS_Store
@@ -0,0 +1,32 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ default_language_version:
4
+ python: python3
5
+
6
+ repos:
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v4.5.0
9
+ hooks:
10
+ - id: trailing-whitespace
11
+ - id: end-of-file-fixer
12
+ - id: check-yaml
13
+ - id: check-added-large-files
14
+
15
+ - repo: https://github.com/astral-sh/ruff-pre-commit
16
+ rev: 'v0.8.4'
17
+ hooks:
18
+ - id: ruff
19
+ args: ["--fix"]
20
+ - id: ruff-format
21
+
22
+ - repo: https://github.com/pre-commit/mirrors-mypy
23
+ rev: v1.7.1
24
+ hooks:
25
+ - id: mypy
26
+ additional_dependencies:
27
+ - pydantic
28
+ - types-PyYAML
29
+ - types-cachetools
30
+ - types-requests
31
+ - types-jsonschema
32
+ exclude: ^(/tests/|/workflows/|/filecatalog/|/sandboxstore/)
@@ -0,0 +1,144 @@
1
+ # Changelog
2
+
3
+ ## [1.0.2](https://github.com/DIRACGrid/dirac-cwl/compare/v1.0.1...v1.0.2) (2026-02-05)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * don't do a shallow clone in order to see newly created tags ([0100427](https://github.com/DIRACGrid/dirac-cwl/commit/0100427bd8072cc3041d08d7b05f3bb873abc761))
9
+
10
+ ## [1.0.1](https://github.com/DIRACGrid/dirac-cwl/compare/v1.0.0...v1.0.1) (2026-02-05)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * diracx-cwl --&gt; dirac-cwl ([52224c5](https://github.com/DIRACGrid/dirac-cwl/commit/52224c55a5507fb0fbd9aa5c6c4522b56dfe0407))
16
+
17
+ ## 1.0.0 (2026-02-05)
18
+
19
+
20
+ ### Features
21
+
22
+ * "mock" DIRAC DataManager ([556e3c5](https://github.com/DIRACGrid/dirac-cwl/commit/556e3c51f7d008a75617e9d84e77ce4e6811a7cf))
23
+ * add a SandboxStore like client ([f1c1143](https://github.com/DIRACGrid/dirac-cwl/commit/f1c1143e131c5b293c84df8c441bce7481b403c9))
24
+ * add a submit_job CLI ([48a50b4](https://github.com/DIRACGrid/dirac-cwl/commit/48a50b46cecc558d0f515e4a5c9c5dd0e990536e))
25
+ * add commands in pyprojet.toml ([2be7c18](https://github.com/DIRACGrid/dirac-cwl/commit/2be7c1846e4b43632b3ac5d688605f73020daa9c))
26
+ * add cwltool usage in README ([5fb88f3](https://github.com/DIRACGrid/dirac-cwl/commit/5fb88f38fe714c5f29685eb9228b36e830244417))
27
+ * add further tests for referenced workflows ([e8217a1](https://github.com/DIRACGrid/dirac-cwl/commit/e8217a1d687355a72f8e563ba5aadd46f25e05b8))
28
+ * add gaudi app ([cfdfb18](https://github.com/DIRACGrid/dirac-cwl/commit/cfdfb18e4e60025eeff7daaa16438ecabec6467a))
29
+ * Add hints to pre-process and post-process jobs depending on its job type ([b693905](https://github.com/DIRACGrid/dirac-cwl/commit/b693905cab0c2fd8306e089c6d26e1cfeca22f58))
30
+ * Add hints to pre-process and post-process jobs depending on its job type ([ee7683a](https://github.com/DIRACGrid/dirac-cwl/commit/ee7683aea90450a0a922fbea3e441f6f619bafcf))
31
+ * add lfns_input to job input model ([5c8ba41](https://github.com/DIRACGrid/dirac-cwl/commit/5c8ba4117899ec4d78f0e4846a8707b2042c028d))
32
+ * add lhcb_app_v2 and lhcb_workflow_v2 ([bdd3a7f](https://github.com/DIRACGrid/dirac-cwl/commit/bdd3a7f818e5f8839f6b041abc38f131754a978d))
33
+ * add lhcb_app_v3 and lhcb_workflow_v3 ([69430e5](https://github.com/DIRACGrid/dirac-cwl/commit/69430e5bbca197bbf3ac4284efd720753146d96e))
34
+ * add metadata models ([c1eb3a4](https://github.com/DIRACGrid/dirac-cwl/commit/c1eb3a4078393852f5a3daa5155f82126e5dd570))
35
+ * add output_paths and output_sandbox hints ([07fe25d](https://github.com/DIRACGrid/dirac-cwl/commit/07fe25d7f3c2b914751ae9b4ca3b5ce5f863046b))
36
+ * add output_se hint ([6d2ad79](https://github.com/DIRACGrid/dirac-cwl/commit/6d2ad79e9e862db7b0bd8b59fc0ef4fa11099a1e))
37
+ * Add parallel workflow execution ([bd2e9f1](https://github.com/DIRACGrid/dirac-cwl/commit/bd2e9f12243bf969ec1647cc49b3fd73bd074699))
38
+ * add structure ([a186393](https://github.com/DIRACGrid/dirac-cwl/commit/a186393e0036fbd7d6a82838605239335b0e7cfb))
39
+ * almost a first minimal implementation ([e41e252](https://github.com/DIRACGrid/dirac-cwl/commit/e41e252410b7ca8c058bc4a5ff6c4f339c8f84f1))
40
+ * created MockDiracXSandboxAPI to use diracx sandbox upload and download instead of DIRAC ([84f6053](https://github.com/DIRACGrid/dirac-cwl/commit/84f60537fd8b9b04e0e6cefaac3d6597ae23376e))
41
+ * download lfns in the execution hook ([edc2182](https://github.com/DIRACGrid/dirac-cwl/commit/edc2182be88e22292c3a070721c3406f7fd96563))
42
+ * **ExecutionHooksPluginRegistry:** Move ExecutionHooksPlugin discovery to pyproject entrypoints ([94e8a9b](https://github.com/DIRACGrid/dirac-cwl/commit/94e8a9b0bba502eea63e59d8d9bcf26dc8e7e88f))
43
+ * **ExecutionHooksPluginRegistry:** Move ExecutionHooksPlugin discovery to pyproject entrypoints ([b003d19](https://github.com/DIRACGrid/dirac-cwl/commit/b003d19d39f67bda51a45ae8bf0c3fefa2d2c68e))
44
+ * first minimal working version ([f8c9412](https://github.com/DIRACGrid/dirac-cwl/commit/f8c94125640ce07a4ba4655bc69aa506fdb46f6f))
45
+ * first version of lhcb cwl ([264f472](https://github.com/DIRACGrid/dirac-cwl/commit/264f472878c1c5ed9b3596c746a2a9f2e1f96666))
46
+ * initialize Dirac for real job inputs and outputs ([f5a88ce](https://github.com/DIRACGrid/dirac-cwl/commit/f5a88cecad334bc429fdc980ad8586698d3e6477))
47
+ * **Job Endpoint:** add job output data ([effcc9a](https://github.com/DIRACGrid/dirac-cwl/commit/effcc9ae7233d4523598613db1d6e2fb6965b185))
48
+ * **Job Endpoint:** add job output sandboxes ([05bd754](https://github.com/DIRACGrid/dirac-cwl/commit/05bd75443079c9059c83645f11fefe0d93d0c513))
49
+ * **Job Endpoint:** add job submission with input data using LFN prefix ([fc60245](https://github.com/DIRACGrid/dirac-cwl/commit/fc602451650d85847700a7f6841b860f1f09b6cd))
50
+ * **Job Endpoint:** move job output management to Execution Hooks ([82de6e7](https://github.com/DIRACGrid/dirac-cwl/commit/82de6e7ff240e20365991532c84f3fca2a03611e))
51
+ * job interface ([da827b1](https://github.com/DIRACGrid/dirac-cwl/commit/da827b11d53f9e86219d751e0ef497531e9f0bef))
52
+ * lfns_output_overrides field ([2f9df75](https://github.com/DIRACGrid/dirac-cwl/commit/2f9df7517dcda569d56e1e1cb3448cd1221ad90f))
53
+ * log post-process failure ([d760ffd](https://github.com/DIRACGrid/dirac-cwl/commit/d760ffd4e3ededa18ea6dfa479e14e4e3ffec151))
54
+ * mimic input data downloading ([5231dd4](https://github.com/DIRACGrid/dirac-cwl/commit/5231dd4ad26f4d4b54bbec8e1a41f852154573c0))
55
+ * mimic input sandbox and crypto example ([110ce80](https://github.com/DIRACGrid/dirac-cwl/commit/110ce80d12520eb77939ac1bba4aac0d79c39684))
56
+ * mocks following DIRAC's definition ([44ae43a](https://github.com/DIRACGrid/dirac-cwl/commit/44ae43a5cc3fcdea283b81dfc4733fab06cef7c9))
57
+ * move output_query and input_query to QueryBasedPlugin and clean code ([da46de9](https://github.com/DIRACGrid/dirac-cwl/commit/da46de9484695516317c471c538ed30b32998514))
58
+ * Move pre and post processing commands execution from 'JobProcessorBase' to 'ExecutionHooksBasePlugin' using specialized classes instead of 'CommandBase' ([44669ef](https://github.com/DIRACGrid/dirac-cwl/commit/44669efb12e50a164ac44c39cb42ef3adcfaba1a))
59
+ * new interfaces ([79eb100](https://github.com/DIRACGrid/dirac-cwl/commit/79eb100e9c06a5cee056a6de228b23fbd963dfe8))
60
+ * new job wrapper DIRAC Integration ([e33ff32](https://github.com/DIRACGrid/dirac-cwl/commit/e33ff32592221bc4cfe60c16b03fe52f57ff4929))
61
+ * new structure ([5260a7a](https://github.com/DIRACGrid/dirac-cwl/commit/5260a7a81a756da8a05b380d7153a4030a0cfe2b))
62
+ * partially add mandelbrot workflow ([e2d3bb4](https://github.com/DIRACGrid/dirac-cwl/commit/e2d3bb425c0221bfd9ada7506806ac8d59af29d7))
63
+ * pathless baseuri in cwl ids ([602a542](https://github.com/DIRACGrid/dirac-cwl/commit/602a5428eec798c3498d7286de90b6886f0bd7bc))
64
+ * possibility to specify Path with 'path' key in inputs ([0a5bc9c](https://github.com/DIRACGrid/dirac-cwl/commit/0a5bc9c7df04f7222ecc18c623de0e10f69ab1a1))
65
+ * prepare cli to work with lhcb workflows (1st draft) ([c6cff08](https://github.com/DIRACGrid/dirac-cwl/commit/c6cff08a1b12794a2ae34c6a17fc1b5865b8ba88))
66
+ * production interface ([a73f479](https://github.com/DIRACGrid/dirac-cwl/commit/a73f4797dfc3465400008deaf3e5576dfe7360b3))
67
+ * publish json schemas ([7405ffa](https://github.com/DIRACGrid/dirac-cwl/commit/7405ffaedca270d96a43b30d2bf22acdc42c3317))
68
+ * publish json schemas ([6929d89](https://github.com/DIRACGrid/dirac-cwl/commit/6929d89a26205e57abb9d2023a9c0a297c9b05bc))
69
+ * pypi deployment with release-please ([#96](https://github.com/DIRACGrid/dirac-cwl/issues/96)) ([bdbcf5e](https://github.com/DIRACGrid/dirac-cwl/commit/bdbcf5e76c2bfdcd5770a2e4f3ef55892655c8f1))
70
+ * Raise special exception for pre/post processing commands ([c5c1285](https://github.com/DIRACGrid/dirac-cwl/commit/c5c12855312db52d9a887f4c88df3f34fd7b4b51))
71
+ * reintroduce the generic workflow ([57fc087](https://github.com/DIRACGrid/dirac-cwl/commit/57fc08772ff3cd8d4e98f95396aae2938708ae44))
72
+ * sandbox store using diracx api mock ([36b6654](https://github.com/DIRACGrid/dirac-cwl/commit/36b66542e3b7505970072b75e2fe642f8b6fdeba))
73
+ * split code into 3 modules (job, trans, prod) ([b3033c4](https://github.com/DIRACGrid/dirac-cwl/commit/b3033c4b0a8708a72b9eb0539e9f0f5ca71b8e1b))
74
+ * streamline workflows and tests ([412b7e8](https://github.com/DIRACGrid/dirac-cwl/commit/412b7e8724c396d8fd474ee5787407a2103edfa1))
75
+ * **test:** make lhcb workflow executable locally ([c8b7cf8](https://github.com/DIRACGrid/dirac-cwl/commit/c8b7cf8f178470594b828fe874a0a35b645a0c6c))
76
+ * **test:** make lhcb workflow executable locally ([452c0d2](https://github.com/DIRACGrid/dirac-cwl/commit/452c0d21be6c419125975d05cf1163e4a4350e28))
77
+ * **tests:** Extend and adapt ProPostProcessingHint tests ([820d115](https://github.com/DIRACGrid/dirac-cwl/commit/820d115320a34940f8a94b5b07d8d2d18484ea1c))
78
+ * transformation interface ([4211223](https://github.com/DIRACGrid/dirac-cwl/commit/4211223c12d6051d8de2511b57e62bead3f5e9bd))
79
+ * use DataManager and SandboxStore in job pre-process ([e599f9b](https://github.com/DIRACGrid/dirac-cwl/commit/e599f9b20d02999e8ebe56879323c8e74647ff01))
80
+ * use DIRAC FileStorage ([e8acb1a](https://github.com/DIRACGrid/dirac-cwl/commit/e8acb1abbeed3afb1f131123ccdb7ea42245ba89))
81
+ * use location instead of path for lfns ([aa06d3c](https://github.com/DIRACGrid/dirac-cwl/commit/aa06d3cc0034dddcfff89609874b0d8b4cc1f395))
82
+ * **workflows:** reference subworkflows in main workflows ([a8d9fff](https://github.com/DIRACGrid/dirac-cwl/commit/a8d9fff1d421ee0291bab801811c7b24805072da))
83
+ * **workflows:** reference subworkflows in main workflows to avoid repeating them ([d77bed8](https://github.com/DIRACGrid/dirac-cwl/commit/d77bed85b373eb2a8018e96c190673351ec6f5c2))
84
+
85
+
86
+ ### Bug Fixes
87
+
88
+ * add job submission itself into the input sandbox when submitting to DIRAC ([25bfa4c](https://github.com/DIRACGrid/dirac-cwl/commit/25bfa4c2e83986778bec21d4bd6ed12cf5636e86))
89
+ * added real SandboxInfo from diracx instead of a Mock ([c7c73ec](https://github.com/DIRACGrid/dirac-cwl/commit/c7c73ecdcb5878c5569d9bd622865e3f26dd3d3c))
90
+ * apply pr suggestions and add some docstring ([924420a](https://github.com/DIRACGrid/dirac-cwl/commit/924420a7f36202019f07b7834a68b7221351e457))
91
+ * better displaying errors coming from job execution ([dbe2654](https://github.com/DIRACGrid/dirac-cwl/commit/dbe2654581a0de70d86a071da2b9242702d051c4))
92
+ * change prefix ([240960a](https://github.com/DIRACGrid/dirac-cwl/commit/240960acc94aeac5587efec28aa4431ae899225f))
93
+ * check if post-process succeeds ([f00a259](https://github.com/DIRACGrid/dirac-cwl/commit/f00a259c686ce6f0cb3f05b85cd8d78c8bb56990))
94
+ * execute the test only if the OS is Linux based ([98c39ab](https://github.com/DIRACGrid/dirac-cwl/commit/98c39ab06b0d1faf11197155af9e93b515781892))
95
+ * fix field condition in get_lfn ([31a6f62](https://github.com/DIRACGrid/dirac-cwl/commit/31a6f62f0b024794e4220685c23f7830e97471da))
96
+ * fix gaussian data generation test ([4a22720](https://github.com/DIRACGrid/dirac-cwl/commit/4a2272082a601f788cc1fb28b518c7c46f7dd54e))
97
+ * fix input paths for inputs in sandbox ([112bb23](https://github.com/DIRACGrid/dirac-cwl/commit/112bb23ff5776e4b795a10ec1c52576ba416c2be))
98
+ * fix lfn path for files of the same cwl output ([3ef7091](https://github.com/DIRACGrid/dirac-cwl/commit/3ef709165451c357b65d41d5cffc543cc596baa7))
99
+ * fix lint issues ([112980c](https://github.com/DIRACGrid/dirac-cwl/commit/112980ce4a2f1a1d859d2447aa73200736ec423a))
100
+ * fix output_se in hook instanciation ([d14ddd8](https://github.com/DIRACGrid/dirac-cwl/commit/d14ddd8e88107d640e34048c5435fa7ad61e59c7))
101
+ * fix parameter file being set twice ([3965240](https://github.com/DIRACGrid/dirac-cwl/commit/39652401797417c2c3e6d410440b22b97a68070a))
102
+ * fix sandbox mock ([49f4ce0](https://github.com/DIRACGrid/dirac-cwl/commit/49f4ce03cbfb28a2994ffe87807531593561294e))
103
+ * fix sandboxstoreClient used for sandbox downloads ([eef88c9](https://github.com/DIRACGrid/dirac-cwl/commit/eef88c934a4de2b8c6d4d9dbcfe01726cd2a3868))
104
+ * fix type error in lhcb post-process ([c94ea41](https://github.com/DIRACGrid/dirac-cwl/commit/c94ea41f56864800b765a887d2217348edfd7656))
105
+ * fixed merge conflicts ([f54aeee](https://github.com/DIRACGrid/dirac-cwl/commit/f54aeee2377121b4ee8a89270732d56da2369d48))
106
+ * fixed some tests ([836c8af](https://github.com/DIRACGrid/dirac-cwl/commit/836c8af02020fbf7c3176224f34f5156bcae685f))
107
+ * introduce a method to iteratively load the referenced subworkflows ([535ba34](https://github.com/DIRACGrid/dirac-cwl/commit/535ba341a1a4a40de9fedee1cb393ac8fd92a6d2))
108
+ * **job:** generate outputs in the worker node directory instead of at the root of the repo ([dde44e4](https://github.com/DIRACGrid/dirac-cwl/commit/dde44e464bba6dbeb592c62655db731a7f67209d))
109
+ * lfns start with a `/` and handle uppercase prefix ([712f880](https://github.com/DIRACGrid/dirac-cwl/commit/712f880268a24a1d01f43c58d3996563351475a5))
110
+ * load parameter file using cwltool in JobWrapper ([9c516a7](https://github.com/DIRACGrid/dirac-cwl/commit/9c516a73999ee182aed7444f43b6e75411665233))
111
+ * mandelbrot wf ([#4](https://github.com/DIRACGrid/dirac-cwl/issues/4)) ([732b757](https://github.com/DIRACGrid/dirac-cwl/commit/732b757fb2bd73184f51119c3404cdf80aa237e2))
112
+ * moved sandboxstore creation to create_sandbox (otherwise, it wasn't existing if we didn't call the function from the SubmissionClient) ([e841396](https://github.com/DIRACGrid/dirac-cwl/commit/e8413969f89195b12934177271e51943fc12d777))
113
+ * output sandbox is never uploaded ([82cd131](https://github.com/DIRACGrid/dirac-cwl/commit/82cd13114ba725ebdbcd3b8ead19466e655a0883))
114
+ * pass configuration parameters to jobs ([9d2b09d](https://github.com/DIRACGrid/dirac-cwl/commit/9d2b09d8f39efd34148a32832cf87374ef0f7421))
115
+ * pre-commit ([716e3f2](https://github.com/DIRACGrid/dirac-cwl/commit/716e3f22733cadd1165c968decf4e8050e8a6572))
116
+ * pre-commit ([94027ee](https://github.com/DIRACGrid/dirac-cwl/commit/94027eee98ac6ad687d8a15229c9f7c3da76fa5c))
117
+ * **production:** get default values even if input name is different from source name ([4920780](https://github.com/DIRACGrid/dirac-cwl/commit/49207800825de2b88f3d3ea94d53aa840b92afff))
118
+ * **QueryBasedPlugin:** Detect case where job_type is None ([81dff51](https://github.com/DIRACGrid/dirac-cwl/commit/81dff514f12239f696553c48f3888d57a095d691))
119
+ * Remove 'PrePostProcessingHint' from the 'extract_dirac_hints' docstring ([bb0cc6a](https://github.com/DIRACGrid/dirac-cwl/commit/bb0cc6af38bfa7864c9a4e4bba302b5527ee790d))
120
+ * Remove 'utils.py' file at dirac_cwl_proto/execution_hooks ([1b454c5](https://github.com/DIRACGrid/dirac-cwl/commit/1b454c5865fe2531f14fc1c69cc4fab7f264334e))
121
+ * remove duplicate code ([8b9e320](https://github.com/DIRACGrid/dirac-cwl/commit/8b9e320ec19a9a1b9d4ab8fecbb29e47d1eaad41))
122
+ * removed comments ([e5a11d1](https://github.com/DIRACGrid/dirac-cwl/commit/e5a11d1ae56b58d0c2c86b32caf73b68e47a647d))
123
+ * removed MockDiracXSandboxAPI and sandbox_store_client to match diracx ([830752b](https://github.com/DIRACGrid/dirac-cwl/commit/830752bb4d902b57a42578a6f6c793305072cba3))
124
+ * removed old MockSandboxStoreClient and forgotten pass ([d302395](https://github.com/DIRACGrid/dirac-cwl/commit/d302395549b80c5b1ccf9dad45a4e9b21e0ebabe))
125
+ * renamed upload_sandbox to create_sandbox to match diracx and imported the correct methods depending on LOCAL variable ([f4fcab0](https://github.com/DIRACGrid/dirac-cwl/commit/f4fcab0e808f15455f78399cca7d36959749b019))
126
+ * renaming ([91e04c6](https://github.com/DIRACGrid/dirac-cwl/commit/91e04c660a46c702e77c6ef75a50e51dc6339c2e))
127
+ * revert transformation changes and fix task default values ([dd3e8ff](https://github.com/DIRACGrid/dirac-cwl/commit/dd3e8ff2a20d9342775b3c14e714dcd7cd0e0758))
128
+ * test and mypy ([1d8949d](https://github.com/DIRACGrid/dirac-cwl/commit/1d8949d60065f394144a2e6bb23ece1814e77a0d))
129
+ * **tests:** Fix parallel test execution, again ([28e7167](https://github.com/DIRACGrid/dirac-cwl/commit/28e7167ef3a1fecdf1c4a69f9694ef60bcc36784))
130
+ * **tests:** Fix parallel test execution, again ([c0c0247](https://github.com/DIRACGrid/dirac-cwl/commit/c0c024743ebfd6a6286c140754a5469ded269892))
131
+ * **tests:** Fix time error margin at test_run_job_parallely ([108c451](https://github.com/DIRACGrid/dirac-cwl/commit/108c451b82743bf2ab16ddfd4b8cc528a1921970))
132
+ * **tests:** Fix time error margin at test_run_job_parallely ([c491eb8](https://github.com/DIRACGrid/dirac-cwl/commit/c491eb8175b329bf5c057fb74117355e2a00eb8e))
133
+ * typos ([40368f6](https://github.com/DIRACGrid/dirac-cwl/commit/40368f67b064d6b8c40a67785bbc63468577880f))
134
+ * update output workflows in tests ([a3517ce](https://github.com/DIRACGrid/dirac-cwl/commit/a3517ce2903be6cfaebde86f992b3dda8b8d7aa7))
135
+ * use job wrapper's return value in template ([3544e59](https://github.com/DIRACGrid/dirac-cwl/commit/3544e597e3ce8d03d82720bf0ce9d34bdc3b4de6))
136
+ * use job wrapper's return value in template ([ef945c6](https://github.com/DIRACGrid/dirac-cwl/commit/ef945c69a6611cdd452a1f8d26c2f2f298e696d2))
137
+ * use Pixi `workspace` instead of `project` ([931951c](https://github.com/DIRACGrid/dirac-cwl/commit/931951ca3a63e7afda6f38720f25df5afeef7c2a))
138
+ * use the cwl_utils.pack method to resolve references ([b98ddd2](https://github.com/DIRACGrid/dirac-cwl/commit/b98ddd2bdccdf23f297ba363fa15484d67eec825))
139
+ * various fixes and add logs info for outputs ([d4f6eb2](https://github.com/DIRACGrid/dirac-cwl/commit/d4f6eb21ab026dfdeb8a35d5f9df18960b862262))
140
+
141
+
142
+ ### Performance Improvements
143
+
144
+ * use load_inputfile only on the cwl part ([1dea272](https://github.com/DIRACGrid/dirac-cwl/commit/1dea27213012cfc9a8643f3a0152f782d3990ae1))