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.
Files changed (97) hide show
  1. l2o_gpp-0.1.0a1/.dockerignore +18 -0
  2. l2o_gpp-0.1.0a1/.gitattributes +1 -0
  3. l2o_gpp-0.1.0a1/.gitignore +144 -0
  4. l2o_gpp-0.1.0a1/.gitlab/issue_templates/Action.md +35 -0
  5. l2o_gpp-0.1.0a1/.gitlab/issue_templates/Bug.md +55 -0
  6. l2o_gpp-0.1.0a1/.gitlab/issue_templates/Documentation.md +46 -0
  7. l2o_gpp-0.1.0a1/.gitlab/issue_templates/Risk.md +45 -0
  8. l2o_gpp-0.1.0a1/.gitlab/merge_request_templates/default.md +24 -0
  9. l2o_gpp-0.1.0a1/.gitlab-ci.yml +254 -0
  10. l2o_gpp-0.1.0a1/.hadolint.yml +11 -0
  11. l2o_gpp-0.1.0a1/.mypy.ini +26 -0
  12. l2o_gpp-0.1.0a1/.pre-commit-config.yaml +74 -0
  13. l2o_gpp-0.1.0a1/.vscode/extensions.json +9 -0
  14. l2o_gpp-0.1.0a1/.vscode/launch.json +11 -0
  15. l2o_gpp-0.1.0a1/.vscode/settings.json +12 -0
  16. l2o_gpp-0.1.0a1/CODEOWNERS +38 -0
  17. l2o_gpp-0.1.0a1/CONTRIBUTING.rst +257 -0
  18. l2o_gpp-0.1.0a1/Dockerfile +49 -0
  19. l2o_gpp-0.1.0a1/LICENSE +201 -0
  20. l2o_gpp-0.1.0a1/PKG-INFO +97 -0
  21. l2o_gpp-0.1.0a1/README.rst +58 -0
  22. l2o_gpp-0.1.0a1/bandit.yml +3 -0
  23. l2o_gpp-0.1.0a1/config/eopf.toml +33 -0
  24. l2o_gpp-0.1.0a1/config/gpp.toml +9 -0
  25. l2o_gpp-0.1.0a1/config/ipf.toml +5 -0
  26. l2o_gpp-0.1.0a1/config/l2o.toml +23 -0
  27. l2o_gpp-0.1.0a1/config/logging/l2o_logger_config.json +28 -0
  28. l2o_gpp-0.1.0a1/config/secrets.json +8 -0
  29. l2o_gpp-0.1.0a1/docs/Makefile +25 -0
  30. l2o_gpp-0.1.0a1/docs/README.rst +28 -0
  31. l2o_gpp-0.1.0a1/docs/source/_static/rl2ocean_favicon.webp +0 -0
  32. l2o_gpp-0.1.0a1/docs/source/_static/rl2ocean_logo.webp +0 -0
  33. l2o_gpp-0.1.0a1/docs/source/_templates/help-feedback.html +17 -0
  34. l2o_gpp-0.1.0a1/docs/source/_templates/navbar-logo.html +22 -0
  35. l2o_gpp-0.1.0a1/docs/source/conf.py +238 -0
  36. l2o_gpp-0.1.0a1/docs/source/contributing.rst +1 -0
  37. l2o_gpp-0.1.0a1/docs/source/index.rst +42 -0
  38. l2o_gpp-0.1.0a1/docs/source/l2o-datatree.rst +1164 -0
  39. l2o_gpp-0.1.0a1/docs/source/l2o-datatree.txt +333 -0
  40. l2o_gpp-0.1.0a1/docs/source/license.rst +4 -0
  41. l2o_gpp-0.1.0a1/docs/source/manual/index.rst +11 -0
  42. l2o_gpp-0.1.0a1/docs/source/manual/inputs/aux-data.rst +17 -0
  43. l2o_gpp-0.1.0a1/docs/source/manual/inputs/config.rst +29 -0
  44. l2o_gpp-0.1.0a1/docs/source/manual/inputs/index.rst +16 -0
  45. l2o_gpp-0.1.0a1/docs/source/manual/inputs/sar-products.rst +7 -0
  46. l2o_gpp-0.1.0a1/docs/source/manual/introduction/applicable-reference-documents.rst +38 -0
  47. l2o_gpp-0.1.0a1/docs/source/manual/introduction/conventions.rst +10 -0
  48. l2o_gpp-0.1.0a1/docs/source/manual/introduction/index.rst +35 -0
  49. l2o_gpp-0.1.0a1/docs/source/manual/introduction/terms-definitions-abbreviations.rst +32 -0
  50. l2o_gpp-0.1.0a1/docs/source/manual/operation/breakpoints.rst +29 -0
  51. l2o_gpp-0.1.0a1/docs/source/manual/operation/error-handling.rst +32 -0
  52. l2o_gpp-0.1.0a1/docs/source/manual/operation/index.rst +11 -0
  53. l2o_gpp-0.1.0a1/docs/source/manual/operation/normal-operations.rst +23 -0
  54. l2o_gpp-0.1.0a1/docs/source/manual/operation/troubleshooting.rst +8 -0
  55. l2o_gpp-0.1.0a1/docs/source/manual/operation/usage.rst +55 -0
  56. l2o_gpp-0.1.0a1/docs/source/manual/outputs/index.rst +20 -0
  57. l2o_gpp-0.1.0a1/docs/source/manual/outputs/intermediate-products.rst +8 -0
  58. l2o_gpp-0.1.0a1/docs/source/manual/outputs/log-files.rst +2 -0
  59. l2o_gpp-0.1.0a1/docs/source/manual/outputs/output-products.rst +16 -0
  60. l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/hardware.rst +9 -0
  61. l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/index.rst +15 -0
  62. l2o_gpp-0.1.0a1/docs/source/manual/prerequisites/software.rst +8 -0
  63. l2o_gpp-0.1.0a1/docs/source/python-api.rst +7 -0
  64. l2o_gpp-0.1.0a1/docs/source/quickstart/example.rst +12 -0
  65. l2o_gpp-0.1.0a1/docs/source/quickstart/figures/software_overview.png +0 -0
  66. l2o_gpp-0.1.0a1/docs/source/quickstart/index.rst +11 -0
  67. l2o_gpp-0.1.0a1/docs/source/quickstart/installation.rst +221 -0
  68. l2o_gpp-0.1.0a1/docs/source/quickstart/overview.rst +21 -0
  69. l2o_gpp-0.1.0a1/docs/source/release-notes.rst +83 -0
  70. l2o_gpp-0.1.0a1/docs/source/software-reuse.rst +600 -0
  71. l2o_gpp-0.1.0a1/docs/source/tutorials/index.rst +24 -0
  72. l2o_gpp-0.1.0a1/docs/source/tutorials/notebooks/index.rst +7 -0
  73. l2o_gpp-0.1.0a1/docs/source/tutorials/notebooks/my_processor_notebook.ipynb +114 -0
  74. l2o_gpp-0.1.0a1/environment.yml +8 -0
  75. l2o_gpp-0.1.0a1/pyproject.toml +167 -0
  76. l2o_gpp-0.1.0a1/requirements-dev.txt +3505 -0
  77. l2o_gpp-0.1.0a1/requirements.txt +2701 -0
  78. l2o_gpp-0.1.0a1/setup.cfg +4 -0
  79. l2o_gpp-0.1.0a1/src/l2o/gpp/__init__.py +14 -0
  80. l2o_gpp-0.1.0a1/src/l2o/gpp/__main__.py +14 -0
  81. l2o_gpp-0.1.0a1/src/l2o/gpp/configuration.py +213 -0
  82. l2o_gpp-0.1.0a1/src/l2o/gpp/job_order.py +117 -0
  83. l2o_gpp-0.1.0a1/src/l2o/gpp/processor.py +164 -0
  84. l2o_gpp-0.1.0a1/src/l2o/gpp/py.typed +0 -0
  85. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/PKG-INFO +97 -0
  86. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/SOURCES.txt +95 -0
  87. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/dependency_links.txt +1 -0
  88. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/requires.txt +21 -0
  89. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/scm_file_list.json +92 -0
  90. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/scm_version.json +8 -0
  91. l2o_gpp-0.1.0a1/src/l2o_gpp.egg-info/top_level.txt +1 -0
  92. l2o_gpp-0.1.0a1/tests/dask-test.ipynb +171 -0
  93. l2o_gpp-0.1.0a1/tests/it/templates/dask_tests/test_my_processor_with_dask.py +94 -0
  94. l2o_gpp-0.1.0a1/tests/ut/templates/test_my_processing_unit.py +49 -0
  95. l2o_gpp-0.1.0a1/tests/ut/templates/test_my_processor.py +97 -0
  96. l2o_gpp-0.1.0a1/tests/ut/test_version.py +15 -0
  97. l2o_gpp-0.1.0a1/uv.lock +5813 -0
@@ -0,0 +1,18 @@
1
+ **/.git
2
+ **/.gitignore
3
+ **/.vscode
4
+ **/coverage
5
+ **/.env
6
+ **/.aws
7
+ **/.ssh
8
+ **/.DS_Store
9
+ **/venv
10
+ **/env
11
+ **/.venv*
12
+ **/.env*
13
+ **/__pycache__
14
+ **/.pytest_cache
15
+ build/
16
+ dist/
17
+ *.egg-info/
18
+ Dockerfile
@@ -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,11 @@
1
+ # Configuration file for hadolint
2
+ failure-threshold: warning
3
+ override:
4
+ info:
5
+ # Pin versions in apt-get install
6
+ - DL3008
7
+ # Pin versions in pip install
8
+ - DL3013
9
+ ignored:
10
+ # Multiple consecutive RUN instructions
11
+ - DL3059
@@ -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