l2o-gpp 0.1.0a1__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.
- l2o_gpp-0.1.0a1/.dockerignore +18 -0
- l2o_gpp-0.1.0a1/.gitattributes +1 -0
- l2o_gpp-0.1.0a1/.gitignore +144 -0
- l2o_gpp-0.1.0a1/.gitlab/issue_templates/Action.md +35 -0
- l2o_gpp-0.1.0a1/.gitlab/issue_templates/Bug.md +55 -0
- l2o_gpp-0.1.0a1/.gitlab/issue_templates/Documentation.md +46 -0
- l2o_gpp-0.1.0a1/.gitlab/issue_templates/Risk.md +45 -0
- l2o_gpp-0.1.0a1/.gitlab/merge_request_templates/default.md +24 -0
- l2o_gpp-0.1.0a1/.gitlab-ci.yml +254 -0
- l2o_gpp-0.1.0a1/.hadolint.yml +11 -0
- l2o_gpp-0.1.0a1/.mypy.ini +26 -0
- l2o_gpp-0.1.0a1/.pre-commit-config.yaml +74 -0
- l2o_gpp-0.1.0a1/.vscode/extensions.json +9 -0
- l2o_gpp-0.1.0a1/.vscode/launch.json +11 -0
- l2o_gpp-0.1.0a1/.vscode/settings.json +12 -0
- l2o_gpp-0.1.0a1/CODEOWNERS +38 -0
- l2o_gpp-0.1.0a1/CONTRIBUTING.rst +257 -0
- l2o_gpp-0.1.0a1/Dockerfile +49 -0
- l2o_gpp-0.1.0a1/LICENSE +201 -0
- l2o_gpp-0.1.0a1/PKG-INFO +97 -0
- l2o_gpp-0.1.0a1/README.rst +58 -0
- l2o_gpp-0.1.0a1/bandit.yml +3 -0
- l2o_gpp-0.1.0a1/config/eopf.toml +33 -0
- l2o_gpp-0.1.0a1/config/gpp.toml +9 -0
- l2o_gpp-0.1.0a1/config/ipf.toml +5 -0
- l2o_gpp-0.1.0a1/config/l2o.toml +23 -0
- l2o_gpp-0.1.0a1/config/logging/l2o_logger_config.json +28 -0
- l2o_gpp-0.1.0a1/config/secrets.json +8 -0
- l2o_gpp-0.1.0a1/docs/Makefile +25 -0
- l2o_gpp-0.1.0a1/docs/README.rst +28 -0
- l2o_gpp-0.1.0a1/docs/source/_static/rl2ocean_favicon.webp +0 -0
- l2o_gpp-0.1.0a1/docs/source/_static/rl2ocean_logo.webp +0 -0
- l2o_gpp-0.1.0a1/docs/source/_templates/help-feedback.html +17 -0
- l2o_gpp-0.1.0a1/docs/source/_templates/navbar-logo.html +22 -0
- l2o_gpp-0.1.0a1/docs/source/conf.py +238 -0
- l2o_gpp-0.1.0a1/docs/source/contributing.rst +1 -0
- l2o_gpp-0.1.0a1/docs/source/index.rst +42 -0
- l2o_gpp-0.1.0a1/docs/source/l2o-datatree.rst +1164 -0
- l2o_gpp-0.1.0a1/docs/source/l2o-datatree.txt +333 -0
- l2o_gpp-0.1.0a1/docs/source/license.rst +4 -0
- l2o_gpp-0.1.0a1/docs/source/manual/index.rst +11 -0
- l2o_gpp-0.1.0a1/docs/source/manual/inputs/aux-data.rst +17 -0
- l2o_gpp-0.1.0a1/docs/source/manual/inputs/config.rst +29 -0
- l2o_gpp-0.1.0a1/docs/source/manual/inputs/index.rst +16 -0
- l2o_gpp-0.1.0a1/docs/source/manual/inputs/sar-products.rst +7 -0
- l2o_gpp-0.1.0a1/docs/source/manual/introduction/applicable-reference-documents.rst +38 -0
- l2o_gpp-0.1.0a1/docs/source/manual/introduction/conventions.rst +10 -0
- l2o_gpp-0.1.0a1/docs/source/manual/introduction/index.rst +35 -0
- l2o_gpp-0.1.0a1/docs/source/manual/introduction/terms-definitions-abbreviations.rst +32 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/breakpoints.rst +29 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/error-handling.rst +32 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/index.rst +11 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/normal-operations.rst +23 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/troubleshooting.rst +8 -0
- l2o_gpp-0.1.0a1/docs/source/manual/operation/usage.rst +55 -0
- l2o_gpp-0.1.0a1/docs/source/manual/outputs/index.rst +20 -0
- l2o_gpp-0.1.0a1/docs/source/manual/outputs/intermediate-products.rst +8 -0
- l2o_gpp-0.1.0a1/docs/source/manual/outputs/log-files.rst +2 -0
- l2o_gpp-0.1.0a1/docs/source/manual/outputs/output-products.rst +16 -0
- l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/hardware.rst +9 -0
- l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/index.rst +15 -0
- l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/software.rst +8 -0
- l2o_gpp-0.1.0a1/docs/source/python-api.rst +7 -0
- l2o_gpp-0.1.0a1/docs/source/quickstart/example.rst +12 -0
- l2o_gpp-0.1.0a1/docs/source/quickstart/figures/software_overview.png +0 -0
- l2o_gpp-0.1.0a1/docs/source/quickstart/index.rst +11 -0
- l2o_gpp-0.1.0a1/docs/source/quickstart/installation.rst +221 -0
- l2o_gpp-0.1.0a1/docs/source/quickstart/overview.rst +21 -0
- l2o_gpp-0.1.0a1/docs/source/release-notes.rst +83 -0
- l2o_gpp-0.1.0a1/docs/source/software-reuse.rst +600 -0
- l2o_gpp-0.1.0a1/docs/source/tutorials/index.rst +24 -0
- l2o_gpp-0.1.0a1/docs/source/tutorials/notebooks/index.rst +7 -0
- l2o_gpp-0.1.0a1/docs/source/tutorials/notebooks/my_processor_notebook.ipynb +114 -0
- l2o_gpp-0.1.0a1/environment.yml +8 -0
- l2o_gpp-0.1.0a1/pyproject.toml +167 -0
- l2o_gpp-0.1.0a1/requirements-dev.txt +3505 -0
- l2o_gpp-0.1.0a1/requirements.txt +2701 -0
- l2o_gpp-0.1.0a1/setup.cfg +4 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/__init__.py +14 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/__main__.py +14 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/configuration.py +213 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/job_order.py +117 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/processor.py +164 -0
- l2o_gpp-0.1.0a1/src/l2o/gpp/py.typed +0 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/PKG-INFO +97 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/SOURCES.txt +95 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/dependency_links.txt +1 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/requires.txt +21 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/scm_file_list.json +92 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/scm_version.json +8 -0
- l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/top_level.txt +1 -0
- l2o_gpp-0.1.0a1/tests/dask-test.ipynb +171 -0
- l2o_gpp-0.1.0a1/tests/it/templates/dask_tests/test_my_processor_with_dask.py +94 -0
- l2o_gpp-0.1.0a1/tests/ut/templates/test_my_processing_unit.py +49 -0
- l2o_gpp-0.1.0a1/tests/ut/templates/test_my_processor.py +97 -0
- l2o_gpp-0.1.0a1/tests/ut/test_version.py +15 -0
- l2o_gpp-0.1.0a1/uv.lock +5813 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
# Usually these files are written by a python script from a template
|
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
.reports/
|
|
54
|
+
|
|
55
|
+
# Translations
|
|
56
|
+
*.mo
|
|
57
|
+
*.pot
|
|
58
|
+
|
|
59
|
+
# Django stuff:
|
|
60
|
+
*.log
|
|
61
|
+
local_settings.py
|
|
62
|
+
db.sqlite3
|
|
63
|
+
db.sqlite3-journal
|
|
64
|
+
|
|
65
|
+
# Flask stuff:
|
|
66
|
+
instance/
|
|
67
|
+
.webassets-cache
|
|
68
|
+
|
|
69
|
+
# Scrapy stuff:
|
|
70
|
+
.scrapy
|
|
71
|
+
|
|
72
|
+
# Sphinx documentation
|
|
73
|
+
docs/_build/
|
|
74
|
+
docs/build/
|
|
75
|
+
docs/source/api/
|
|
76
|
+
jupyter_execute/
|
|
77
|
+
|
|
78
|
+
# PyBuilder
|
|
79
|
+
target/
|
|
80
|
+
|
|
81
|
+
# Jupyter Notebook
|
|
82
|
+
.ipynb_checkpoints
|
|
83
|
+
|
|
84
|
+
# IPython
|
|
85
|
+
profile_default/
|
|
86
|
+
ipython_config.py
|
|
87
|
+
|
|
88
|
+
# pyenv
|
|
89
|
+
.python-version
|
|
90
|
+
|
|
91
|
+
# pipenv
|
|
92
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
93
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
94
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
95
|
+
# install all needed dependencies.
|
|
96
|
+
# In our case Pipfile.lock will be inrelevant 'caused of the differents python version / platform we will have
|
|
97
|
+
# to support.
|
|
98
|
+
Pipfile.lock
|
|
99
|
+
|
|
100
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
101
|
+
__pypackages__/
|
|
102
|
+
|
|
103
|
+
# Celery stuff
|
|
104
|
+
celerybeat-schedule
|
|
105
|
+
celerybeat.pid
|
|
106
|
+
|
|
107
|
+
# SageMath parsed files
|
|
108
|
+
*.sage.py
|
|
109
|
+
|
|
110
|
+
# Environments
|
|
111
|
+
.env*
|
|
112
|
+
.venv*
|
|
113
|
+
env*/
|
|
114
|
+
venv*/
|
|
115
|
+
ENV*/
|
|
116
|
+
env*.bak/
|
|
117
|
+
venv*.bak/
|
|
118
|
+
|
|
119
|
+
# Spyder project settings
|
|
120
|
+
.spyderproject
|
|
121
|
+
.spyproject
|
|
122
|
+
|
|
123
|
+
# Rope project settings
|
|
124
|
+
.ropeproject
|
|
125
|
+
|
|
126
|
+
# mkdocs documentation
|
|
127
|
+
/site
|
|
128
|
+
|
|
129
|
+
# mypy
|
|
130
|
+
.mypy_cache/
|
|
131
|
+
.dmypy.json
|
|
132
|
+
dmypy.json
|
|
133
|
+
|
|
134
|
+
# Pyre type checker
|
|
135
|
+
.pyre/
|
|
136
|
+
|
|
137
|
+
# VS Code (except recommended workspace extensions and settings)
|
|
138
|
+
.vscode/*
|
|
139
|
+
!.vscode/extensions.json
|
|
140
|
+
!.vscode/settings.json
|
|
141
|
+
!.vscode/launch.json
|
|
142
|
+
|
|
143
|
+
# Ignore EOPF specific data folder on EOPF cluster
|
|
144
|
+
/data
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* Use this issue template for managing project actions.
|
|
3
|
+
|
|
4
|
+
* The text contained within the HTML comment tags will not be displayed in the GitLab UI.
|
|
5
|
+
It provides information on the expected contents of the different sections.
|
|
6
|
+
|
|
7
|
+
* Sections not relevant or applicable to the current action
|
|
8
|
+
can be left open, stated as not applicable (N/A) or removed.
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
Describe the Action:
|
|
14
|
+
|
|
15
|
+
**The task** - what must be done
|
|
16
|
+
|
|
17
|
+
**The end result** - what the output of the action is.
|
|
18
|
+
|
|
19
|
+
Do not hesitate to use task lists:
|
|
20
|
+
|
|
21
|
+
- [ ] Task one
|
|
22
|
+
- [ ] Task two
|
|
23
|
+
|
|
24
|
+
Add a due date and assign (both fields are **mandatory**) inline
|
|
25
|
+
or using the WebGUI.
|
|
26
|
+
|
|
27
|
+
/due
|
|
28
|
+
|
|
29
|
+
/assign
|
|
30
|
+
|
|
31
|
+
## Origin
|
|
32
|
+
|
|
33
|
+
Minutes of Meeting (MoM) or other source.
|
|
34
|
+
|
|
35
|
+
/label ~Action
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
|
|
3
|
+
* Use this issue template for reporting problems or suggesting new features
|
|
4
|
+
or updates to existing ones.
|
|
5
|
+
|
|
6
|
+
* The text contained within the HTML comment tags will not be displayed in
|
|
7
|
+
the GitLab UI. It provides information on the expected contents
|
|
8
|
+
of the different sections.
|
|
9
|
+
|
|
10
|
+
* Sections not relevant or applicable to the current issue
|
|
11
|
+
can be left open, stated as not applicable (N/A) or removed.
|
|
12
|
+
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
## Summary
|
|
16
|
+
|
|
17
|
+
(Summarize the bug encountered concisely.)
|
|
18
|
+
|
|
19
|
+
## Steps to reproduce
|
|
20
|
+
|
|
21
|
+
(How one can reproduce the issue - this is very important.)
|
|
22
|
+
|
|
23
|
+
## Example Project
|
|
24
|
+
|
|
25
|
+
(If possible, please create an example project here on the EOPF SDE that exhibits the problematic
|
|
26
|
+
behavior, and link to it here in the bug report.
|
|
27
|
+
If you are using an older version of the EOPF SDE, this will also determine whether the bug has been fixed
|
|
28
|
+
in a more recent version)
|
|
29
|
+
|
|
30
|
+
## What is the current bug behavior?
|
|
31
|
+
|
|
32
|
+
(Describe what actually happens.)
|
|
33
|
+
|
|
34
|
+
## What is the expected correct behavior?
|
|
35
|
+
|
|
36
|
+
(Describe what you expect see instead.)
|
|
37
|
+
|
|
38
|
+
## Relevant logs and/or screenshots
|
|
39
|
+
|
|
40
|
+
(Paste any relevant logs - please use code blocks (```) to format console output, logs, and code, as
|
|
41
|
+
it is very hard to read otherwise.)
|
|
42
|
+
|
|
43
|
+
## Possible causes and fixes
|
|
44
|
+
|
|
45
|
+
(If you can, link to the line of code that might be responsible for the problem)
|
|
46
|
+
|
|
47
|
+
(List of either:
|
|
48
|
+
|
|
49
|
+
- {file, line number, function name}
|
|
50
|
+
- {permalink (recommended)}
|
|
51
|
+
|
|
52
|
+
To get a permalink, click on the line in the left part on the concerned file,
|
|
53
|
+
then click on the `permalink` button on top right, finally copy-paste the current URL here.)
|
|
54
|
+
|
|
55
|
+
/label ~Code
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
|
|
3
|
+
* Use this issue template for suggesting new docs or updates to existing docs.
|
|
4
|
+
|
|
5
|
+
* The text contained within the HTML comment tags will not be displayed in
|
|
6
|
+
the GitLab UI. It provides information on the expected contents
|
|
7
|
+
of the different sections.
|
|
8
|
+
|
|
9
|
+
* Sections not relevant or applicable to the current issue
|
|
10
|
+
can be left open, stated as not applicable (N/A) or removed.
|
|
11
|
+
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
## Summary
|
|
15
|
+
|
|
16
|
+
(Summarize the issue encountered concisely.)
|
|
17
|
+
|
|
18
|
+
## Specification(s)
|
|
19
|
+
|
|
20
|
+
(Indicate the specification (ECSS, US) not (partially)
|
|
21
|
+
satisfied with the current situation.)
|
|
22
|
+
|
|
23
|
+
## Impacted document and chapter
|
|
24
|
+
|
|
25
|
+
(Indicate, as precisely as possible, the location (e.g. document, chapter, ...) where
|
|
26
|
+
the defect has been found.
|
|
27
|
+
Clearly indicate the issue / revision for Word / Pdf documents.
|
|
28
|
+
For the online documentation, please provide the URL.)
|
|
29
|
+
|
|
30
|
+
## What is the currently observed issue?
|
|
31
|
+
|
|
32
|
+
(Describe what is actually seen.)
|
|
33
|
+
|
|
34
|
+
## What is the expected situation?
|
|
35
|
+
|
|
36
|
+
(Describe what you expect to see.)
|
|
37
|
+
|
|
38
|
+
## Possible solutions
|
|
39
|
+
|
|
40
|
+
(Describe possible solutions to obtain the expected situation.)
|
|
41
|
+
|
|
42
|
+
### Other links/references
|
|
43
|
+
|
|
44
|
+
(E.g. related GitLab issues / merge requests.)
|
|
45
|
+
|
|
46
|
+
/label ~Documentation
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* Use this issue template for managing project risks.
|
|
3
|
+
|
|
4
|
+
* The text contained within the HTML comment tags will not be displayed in the GitLab UI.
|
|
5
|
+
It provides information on the expected contents of the different sections.
|
|
6
|
+
|
|
7
|
+
* Sections not relevant or applicable to the current risk
|
|
8
|
+
can be left open, stated as not applicable (N/A) or removed.
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
## Risk description
|
|
12
|
+
|
|
13
|
+
Describe the risk.
|
|
14
|
+
|
|
15
|
+
## Risk consequences
|
|
16
|
+
|
|
17
|
+
Describe the impact of the risk.
|
|
18
|
+
|
|
19
|
+
## Risk estimation
|
|
20
|
+
|
|
21
|
+
| Probability | Severity | Rating |
|
|
22
|
+
| :---: | :---: | :---: |
|
|
23
|
+
| | | |
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
- Assign Probability between Low (1), Medium (2), High (3)
|
|
27
|
+
- Assign Severity between Low (1), Medium (2), High (3)
|
|
28
|
+
- Compute Probability * Severity:
|
|
29
|
+
- If 1 or 2: assign a "Low" rating
|
|
30
|
+
- If 3 or 4: assign a "Medium" rating
|
|
31
|
+
- If 6 or 9: assign a "High" rating
|
|
32
|
+
|
|
33
|
+
- Add the label corresponding to the Rating: ~Risk::Rating::Low , ~Risk::Rating::Medium , or ~Risk::Rating::High
|
|
34
|
+
|
|
35
|
+
For example: The risk is estimated to have a Medium probability of occurrence (2) and a Medium severity (2). The overall rating is thus 2 * 2 = 4. Add the ~Risk::Rating::Medium label to the risk.
|
|
36
|
+
|
|
37
|
+
## Linked mitigation actions
|
|
38
|
+
|
|
39
|
+
Risks rated High must have related actions. Actions for risks rated Medium or Low are not mandatory but recommended.
|
|
40
|
+
|
|
41
|
+
<!-- The relate quick action can be used to link directly to the actions:
|
|
42
|
+
/relate #
|
|
43
|
+
-->
|
|
44
|
+
|
|
45
|
+
/label ~Risk
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## What does this Merge Request (MR) do?
|
|
2
|
+
|
|
3
|
+
<!-- Briefly describe what this MR is about -->
|
|
4
|
+
|
|
5
|
+
## Related issues
|
|
6
|
+
|
|
7
|
+
<!-- Link related issues below. -->
|
|
8
|
+
|
|
9
|
+
## Author's checklist
|
|
10
|
+
|
|
11
|
+
- [ ] Is the CI pipeline successful?
|
|
12
|
+
- [ ] Has the documentation been updated?
|
|
13
|
+
- [ ] Has the documentation been generated and reviewed locally?<br>
|
|
14
|
+
Note: The generated documentation is available from branch's
|
|
15
|
+
CI pipeline as an artifact and can be downloaded to be validated
|
|
16
|
+
locally.
|
|
17
|
+
- [ ] Has a reviewer been assigned to the MR?
|
|
18
|
+
|
|
19
|
+
## Reviewer's checklist
|
|
20
|
+
|
|
21
|
+
- [ ] Is there a test covering / demonstrating the change?
|
|
22
|
+
- [ ] Do the change respect the applicable quality gates?
|
|
23
|
+
- [ ] Has an assignee been assigned to the MR?
|
|
24
|
+
- [ ] Ensure a release milestone is set.
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
spec:
|
|
2
|
+
inputs:
|
|
3
|
+
l2o-corealg-ref:
|
|
4
|
+
description: Override Gitlab ref where to reinstall l2o-corealg from. Leave default to let workflow rules decide, or set 'DISABLE' to not reinstall.
|
|
5
|
+
default: "DEFAULT"
|
|
6
|
+
l2o-vam-ref:
|
|
7
|
+
description: Override Gitlab ref where to reinstall l2o-vam from. Leave default to let workflow rules decide, or set 'DISABLE' to not reinstall.
|
|
8
|
+
default: "DEFAULT"
|
|
9
|
+
l2o-io-ref:
|
|
10
|
+
description: Override Gitlab ref where to reinstall l2o-io from. Leave default to let workflow rules decide, or set 'DISABLE' to not reinstall.
|
|
11
|
+
default: "DEFAULT"
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
default:
|
|
16
|
+
interruptible: true
|
|
17
|
+
# Speed up CI by using prepared image with all the required tools
|
|
18
|
+
image: rl2ocean-docker-dev-snapshot.artifacts.dlr.de/pipeline-image:python3.13
|
|
19
|
+
|
|
20
|
+
stages:
|
|
21
|
+
- variable checks
|
|
22
|
+
- test
|
|
23
|
+
- build
|
|
24
|
+
- deploy
|
|
25
|
+
- scan
|
|
26
|
+
|
|
27
|
+
variables:
|
|
28
|
+
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
29
|
+
SOURCES: src
|
|
30
|
+
TESTS: tests
|
|
31
|
+
REPORTS: .reports
|
|
32
|
+
# Sphinx documentation
|
|
33
|
+
DOCS_VERSION: ${CI_COMMIT_REF_NAME}
|
|
34
|
+
DOCS_PACKAGE_NAME: ${CI_PROJECT_NAME}-docs
|
|
35
|
+
DOCS_PACKAGE_FILENAME: ${DOCS_PACKAGE_NAME}.tar.gz
|
|
36
|
+
# Default Git ref l2o dependencies are installed from if they are reinstalled from Gitlab in before_script
|
|
37
|
+
L2O_DEFAULT_REF: "DISABLE"
|
|
38
|
+
|
|
39
|
+
# Specify when pipelines are created and set some variables accordingly
|
|
40
|
+
workflow:
|
|
41
|
+
rules:
|
|
42
|
+
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
|
|
43
|
+
variables:
|
|
44
|
+
DOCS_VERSION: $CI_COMMIT_SHORT_SHA
|
|
45
|
+
L2O_DEFAULT_REF: "main"
|
|
46
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
47
|
+
variables:
|
|
48
|
+
DOCS_VERSION: $CI_COMMIT_BRANCH
|
|
49
|
+
L2O_DEFAULT_REF: "main"
|
|
50
|
+
- if: $CI_COMMIT_TAG
|
|
51
|
+
variables:
|
|
52
|
+
DOCS_VERSION: $CI_COMMIT_TAG
|
|
53
|
+
L2O_DEFAULT_REF: "DISABLE"
|
|
54
|
+
|
|
55
|
+
# Check that required CI group variables are set
|
|
56
|
+
validate-variables:
|
|
57
|
+
stage: variable checks
|
|
58
|
+
script:
|
|
59
|
+
- |
|
|
60
|
+
mandatoryVars="\
|
|
61
|
+
JF_DOCKER_REGISTRY \
|
|
62
|
+
JF_ACCESS_TOKEN \
|
|
63
|
+
RL_DOCKER_REGISTRY \
|
|
64
|
+
RL_USER \
|
|
65
|
+
RL_PASSWORD"
|
|
66
|
+
found=true
|
|
67
|
+
for var in ${mandatoryVars}
|
|
68
|
+
do
|
|
69
|
+
if [[ -z ${!var} ]]
|
|
70
|
+
then
|
|
71
|
+
echo -e "\e[31mERROR: Required variable '${var}' is not set. Please set the variable before running the pipeline\e[0m"
|
|
72
|
+
found=false
|
|
73
|
+
fi
|
|
74
|
+
done
|
|
75
|
+
if ! ${found}
|
|
76
|
+
then
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Import job descriptions from a shared component repository to avoid duplicate code across different
|
|
81
|
+
# repositories. The components are stored here: https://gitlab.dlr.de/rl2ocean/gitlab-components
|
|
82
|
+
include:
|
|
83
|
+
# Python code linter
|
|
84
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/lint@v3.0.0
|
|
85
|
+
inputs:
|
|
86
|
+
dirs: ${SOURCES} ${TESTS}
|
|
87
|
+
|
|
88
|
+
# Python code formatter
|
|
89
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/format@v3.0.0
|
|
90
|
+
inputs:
|
|
91
|
+
dirs: ${SOURCES} ${TESTS}
|
|
92
|
+
|
|
93
|
+
# Python type checker
|
|
94
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/typing@v3.0.0
|
|
95
|
+
inputs:
|
|
96
|
+
l2o_deps_reinst:
|
|
97
|
+
- "l2o-corealg@$[[ inputs.l2o-corealg-ref ]]"
|
|
98
|
+
- "l2o-vam@$[[ inputs.l2o-vam-ref ]]"
|
|
99
|
+
- "l2o-io@$[[ inputs.l2o-io-ref ]]"
|
|
100
|
+
l2o_default_ref: ${L2O_DEFAULT_REF}
|
|
101
|
+
|
|
102
|
+
# Python code complexity
|
|
103
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/complexity@v3.0.0
|
|
104
|
+
inputs:
|
|
105
|
+
dirs: ${SOURCES}
|
|
106
|
+
|
|
107
|
+
# Python docstring coverage
|
|
108
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/docstring-coverage@v3.0.0
|
|
109
|
+
inputs:
|
|
110
|
+
dirs: ${SOURCES}
|
|
111
|
+
|
|
112
|
+
# Python code security scanner
|
|
113
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/code-security@v3.0.0
|
|
114
|
+
inputs:
|
|
115
|
+
dirs: ${SOURCES}
|
|
116
|
+
|
|
117
|
+
# Python package dependency vulnerability checker
|
|
118
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/deps-security@v3.0.0
|
|
119
|
+
|
|
120
|
+
# Python unit tests
|
|
121
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/unit-tests@v3.0.0
|
|
122
|
+
inputs:
|
|
123
|
+
l2o_deps_reinst:
|
|
124
|
+
- "l2o-corealg@$[[ inputs.l2o-corealg-ref ]]"
|
|
125
|
+
- "l2o-vam@$[[ inputs.l2o-vam-ref ]]"
|
|
126
|
+
- "l2o-io@$[[ inputs.l2o-io-ref ]]"
|
|
127
|
+
l2o_default_ref: ${L2O_DEFAULT_REF}
|
|
128
|
+
reports_dir: ${REPORTS}
|
|
129
|
+
|
|
130
|
+
# Build Python package
|
|
131
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/build-package@v3.0.0
|
|
132
|
+
|
|
133
|
+
# Deploy Python package to Gitlab package registry
|
|
134
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/deploy-package-gitlab@v3.0.0
|
|
135
|
+
|
|
136
|
+
# Deploy Python package to PyPI
|
|
137
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/deploy-package-pypi@v3.0.0
|
|
138
|
+
|
|
139
|
+
# Documentation ReST file linter
|
|
140
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/lint-docs@v3.0.0
|
|
141
|
+
|
|
142
|
+
# Build PDF documentation
|
|
143
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/build-docs-pdf@v3.0.0
|
|
144
|
+
inputs:
|
|
145
|
+
l2o_deps_reinst:
|
|
146
|
+
- "l2o-corealg@$[[ inputs.l2o-corealg-ref ]]"
|
|
147
|
+
- "l2o-vam@$[[ inputs.l2o-vam-ref ]]"
|
|
148
|
+
- "l2o-io@$[[ inputs.l2o-io-ref ]]"
|
|
149
|
+
l2o_default_ref: ${L2O_DEFAULT_REF}
|
|
150
|
+
version_string: ${DOCS_VERSION}
|
|
151
|
+
|
|
152
|
+
# Build HTML documentation
|
|
153
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/build-docs-html@v3.0.0
|
|
154
|
+
inputs:
|
|
155
|
+
l2o_deps_reinst:
|
|
156
|
+
- "l2o-corealg@$[[ inputs.l2o-corealg-ref ]]"
|
|
157
|
+
- "l2o-vam@$[[ inputs.l2o-vam-ref ]]"
|
|
158
|
+
- "l2o-io@$[[ inputs.l2o-io-ref ]]"
|
|
159
|
+
l2o_default_ref: ${L2O_DEFAULT_REF}
|
|
160
|
+
version_string: ${DOCS_VERSION}
|
|
161
|
+
|
|
162
|
+
# Upload HTML documentation to Gitlab package registry
|
|
163
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/upload-docs@v3.0.0
|
|
164
|
+
inputs:
|
|
165
|
+
version_string: ${DOCS_VERSION}
|
|
166
|
+
|
|
167
|
+
# Deploy HTML documentation to Gitlab Pages
|
|
168
|
+
- component: $CI_SERVER_FQDN/$CI_PROJECT_NAMESPACE/gitlab-components/deploy-docs@v3.0.0
|
|
169
|
+
|
|
170
|
+
# Dockerfile linter
|
|
171
|
+
docker-linter:
|
|
172
|
+
stage: test
|
|
173
|
+
image: hadolint/hadolint:latest-debian
|
|
174
|
+
script:
|
|
175
|
+
- CHECKSUM=`md5sum Dockerfile | cut -d" " -f1`
|
|
176
|
+
- hadolint --config .hadolint.yml --format gitlab_codeclimate Dockerfile > hadolint-${CHECKSUM}.json
|
|
177
|
+
artifacts:
|
|
178
|
+
name: "$CI_JOB_NAME artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG"
|
|
179
|
+
expire_in: 1 week
|
|
180
|
+
when: always
|
|
181
|
+
reports:
|
|
182
|
+
codequality:
|
|
183
|
+
- hadolint-*.json
|
|
184
|
+
|
|
185
|
+
# Build and upload Docker image
|
|
186
|
+
deploy-image:
|
|
187
|
+
stage: deploy
|
|
188
|
+
image:
|
|
189
|
+
name: martizih/kaniko:debug
|
|
190
|
+
entrypoint: [""]
|
|
191
|
+
before_script:
|
|
192
|
+
# Create Docker config file for kaniko with registry authentication details.
|
|
193
|
+
- mkdir -p /kaniko/.docker
|
|
194
|
+
- >-
|
|
195
|
+
echo "{\"auths\":{
|
|
196
|
+
\"${JF_DOCKER_REGISTRY}\":{\"auth\":\"${JF_ACCESS_TOKEN}\"},
|
|
197
|
+
\"${RL_DOCKER_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${RL_USER}" "${RL_PASSWORD}" | base64 | tr -d '\n')\"}
|
|
198
|
+
}}" > /kaniko/.docker/config.json
|
|
199
|
+
script:
|
|
200
|
+
# When running on default branch the tag is 'latest'.
|
|
201
|
+
# All other branches are tagged with the escaped branch name (commit ref slug).
|
|
202
|
+
- |
|
|
203
|
+
if [[ "${CI_COMMIT_BRANCH}" == "${CI_DEFAULT_BRANCH}" ]]; then
|
|
204
|
+
tag="latest"
|
|
205
|
+
echo "Running on default branch '${CI_DEFAULT_BRANCH}': tag = ${tag}"
|
|
206
|
+
else
|
|
207
|
+
tag="${CI_COMMIT_REF_SLUG}"
|
|
208
|
+
echo "Running on branch '${CI_COMMIT_REF_NAME}': tag = ${tag}"
|
|
209
|
+
fi
|
|
210
|
+
- >-
|
|
211
|
+
/kaniko/executor
|
|
212
|
+
--context "${CI_PROJECT_DIR}"
|
|
213
|
+
--dockerfile "${CI_PROJECT_DIR}/Dockerfile"
|
|
214
|
+
--build-arg CI_COMMIT_SHA
|
|
215
|
+
--destination "${JF_DOCKER_REGISTRY}/${CI_PROJECT_NAME}:${tag}"
|
|
216
|
+
--destination "${RL_DOCKER_REGISTRY}/${CI_PROJECT_NAME}:${tag}"
|
|
217
|
+
rules:
|
|
218
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
219
|
+
- if: $CI_COMMIT_TAG
|
|
220
|
+
|
|
221
|
+
# Scan built Docker image
|
|
222
|
+
scan-image:
|
|
223
|
+
stage: scan
|
|
224
|
+
image:
|
|
225
|
+
name: aquasec/trivy:0.72.0
|
|
226
|
+
entrypoint: [""]
|
|
227
|
+
script:
|
|
228
|
+
# Create Docker config file for trivy with registry authentication details.
|
|
229
|
+
- mkdir -p ~/.docker
|
|
230
|
+
- echo "{\"auths\":{\"${JF_DOCKER_REGISTRY}\":{\"auth\":\"${JF_ACCESS_TOKEN}\"}}}" > ~/.docker/config.json
|
|
231
|
+
# When running on default branch the tag is 'latest'.
|
|
232
|
+
# All other branches are tagged with the escaped branch name (commit ref slug).
|
|
233
|
+
- |
|
|
234
|
+
if [[ "${CI_COMMIT_BRANCH}" == "${CI_DEFAULT_BRANCH}" ]]; then
|
|
235
|
+
tag="latest"
|
|
236
|
+
echo "Running on default branch '${CI_DEFAULT_BRANCH}': tag = ${tag}"
|
|
237
|
+
else
|
|
238
|
+
tag="${CI_COMMIT_REF_SLUG}"
|
|
239
|
+
echo "Running on branch '${CI_COMMIT_REF_NAME}': tag = ${tag}"
|
|
240
|
+
fi
|
|
241
|
+
- image_name="${JF_DOCKER_REGISTRY}/${CI_PROJECT_NAME}:${tag}"
|
|
242
|
+
- echo "Image name:" "${image_name}"
|
|
243
|
+
- >-
|
|
244
|
+
trivy image "${image_name}"
|
|
245
|
+
--severity HIGH,CRITICAL
|
|
246
|
+
--ignore-unfixed
|
|
247
|
+
--skip-version-check
|
|
248
|
+
--disable-telemetry
|
|
249
|
+
--no-progress
|
|
250
|
+
--exit-code 1
|
|
251
|
+
allow_failure: true
|
|
252
|
+
rules:
|
|
253
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
254
|
+
- if: $CI_COMMIT_TAG
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
[mypy]
|
|
2
|
+
python_version = 3.13
|
|
3
|
+
mypy_path = $MYPY_CONFIG_FILE_DIR/src
|
|
4
|
+
packages = l2o.gpp
|
|
5
|
+
namespace_packages = True
|
|
6
|
+
explicit_package_bases = True
|
|
7
|
+
warn_unused_configs = True
|
|
8
|
+
warn_redundant_casts = True
|
|
9
|
+
|
|
10
|
+
[mypy-l2o.*]
|
|
11
|
+
disallow_any_generics = True
|
|
12
|
+
disallow_subclassing_any = True
|
|
13
|
+
disallow_untyped_defs = True
|
|
14
|
+
disallow_incomplete_defs = True
|
|
15
|
+
check_untyped_defs = True
|
|
16
|
+
warn_unused_ignores = True
|
|
17
|
+
no_implicit_reexport = True
|
|
18
|
+
|
|
19
|
+
[mypy-fsspec]
|
|
20
|
+
ignore_missing_imports = True
|
|
21
|
+
|
|
22
|
+
[mypy-zarr.*]
|
|
23
|
+
ignore_missing_imports = True
|
|
24
|
+
|
|
25
|
+
[mypy-jinja2.*]
|
|
26
|
+
ignore_missing_imports = True
|