dkist-processing-test 1.22.0rc3__tar.gz → 1.36.5rc1__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 (49) hide show
  1. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/.pre-commit-config.yaml +6 -6
  2. dkist_processing_test-1.36.5rc1/.snyk +3 -0
  3. dkist_processing_test-1.36.5rc1/PKG-INFO +433 -0
  4. dkist_processing_test-1.36.5rc1/README.rst +153 -0
  5. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/bitbucket-pipelines.yml +45 -22
  6. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/__init__.py +0 -1
  7. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/config.py +1 -0
  8. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/models/parameters.py +9 -3
  9. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/__init__.py +0 -1
  10. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/exercise_numba.py +1 -0
  11. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/fail.py +1 -0
  12. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/fake_science.py +14 -13
  13. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/high_memory.py +1 -0
  14. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/manual.py +2 -2
  15. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/movie.py +3 -3
  16. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/noop.py +1 -0
  17. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/parse.py +12 -28
  18. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/quality.py +1 -0
  19. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tasks/write_l1.py +4 -1
  20. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tests/conftest.py +1 -0
  21. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tests/test_tasks.py +295 -89
  22. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tests/test_workflows.py +1 -0
  23. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/common_tasks.py +3 -2
  24. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/end_to_end.py +4 -1
  25. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/trial_end_to_end.py +4 -3
  26. dkist_processing_test-1.36.5rc1/dkist_processing_test.egg-info/PKG-INFO +433 -0
  27. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test.egg-info/SOURCES.txt +1 -3
  28. dkist_processing_test-1.36.5rc1/dkist_processing_test.egg-info/requires.txt +270 -0
  29. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test.egg-info/top_level.txt +1 -0
  30. dkist_processing_test-1.36.5rc1/pyproject.toml +326 -0
  31. dkist_processing_test-1.22.0rc3/PKG-INFO +0 -79
  32. dkist_processing_test-1.22.0rc3/README.rst +0 -39
  33. dkist_processing_test-1.22.0rc3/dkist_processing_test/tasks/trial_output_data.py +0 -46
  34. dkist_processing_test-1.22.0rc3/dkist_processing_test/tests/parameter_models.py +0 -130
  35. dkist_processing_test-1.22.0rc3/dkist_processing_test/tests/test_parameters.py +0 -151
  36. dkist_processing_test-1.22.0rc3/dkist_processing_test.egg-info/PKG-INFO +0 -79
  37. dkist_processing_test-1.22.0rc3/dkist_processing_test.egg-info/requires.txt +0 -29
  38. dkist_processing_test-1.22.0rc3/pyproject.toml +0 -74
  39. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/.gitignore +0 -0
  40. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/models/__init__.py +0 -0
  41. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/models/constants.py +0 -0
  42. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/tests/__init__.py +0 -0
  43. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/__init__.py +0 -0
  44. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/exercise_numba.py +0 -0
  45. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/fail.py +1 -1
  46. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/noop.py +1 -1
  47. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test/workflows/resource_queue.py +1 -1
  48. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/dkist_processing_test.egg-info/dependency_links.txt +0 -0
  49. {dkist_processing_test-1.22.0rc3 → dkist_processing_test-1.36.5rc1}/setup.cfg +0 -0
@@ -2,7 +2,7 @@
2
2
  # See https://pre-commit.com/hooks.html for more hooks
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v2.4.0
5
+ rev: v5.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: end-of-file-fixer
@@ -10,11 +10,11 @@ repos:
10
10
  - id: check-added-large-files
11
11
  - id: debug-statements
12
12
  - repo: https://github.com/psf/black
13
- rev: 22.3.0
13
+ rev: 25.1.0
14
14
  hooks:
15
15
  - id: black
16
- args: [ "-l 100" ]
17
- - repo: https://github.com/asottile/reorder_python_imports
18
- rev: v2.3.5
16
+ - repo: https://github.com/pycqa/isort
17
+ rev: 5.12.0
19
18
  hooks:
20
- - id: reorder-python-imports
19
+ - id: isort
20
+ name: isort (python)
@@ -0,0 +1,3 @@
1
+ # Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities
2
+ # https://docs.snyk.io/manage-risk/policies/the-.snyk-file#syntax-of-the-.snyk-file
3
+ version: v1.25.0
@@ -0,0 +1,433 @@
1
+ Metadata-Version: 2.4
2
+ Name: dkist-processing-test
3
+ Version: 1.36.5rc1
4
+ Summary: Example instrument code used by the DKIST science data processing pipelines to test processing infrastructure
5
+ Author-email: NSO / AURA <dkistdc@nso.edu>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://nso.edu/dkist/data-center/
8
+ Project-URL: Repository, https://bitbucket.org/dkistdc/dkist-processing-test/
9
+ Project-URL: Help, https://nso.atlassian.net/servicedesk/customer/portal/5
10
+ Classifier: Programming Language :: Python
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Requires-Python: >=3.12
14
+ Description-Content-Type: text/x-rst
15
+ Requires-Dist: dkist-processing-common==11.9.0rc1
16
+ Requires-Dist: dkist-header-validator==5.2.1
17
+ Requires-Dist: dkist-service-configuration==4.1.13
18
+ Requires-Dist: dkist-fits-specifications==4.17.0
19
+ Requires-Dist: numba==0.61.2
20
+ Requires-Dist: astropy==7.0.2
21
+ Requires-Dist: numpy==2.2.5
22
+ Requires-Dist: dkist-spectral-lines==3.0.0
23
+ Provides-Extra: test
24
+ Requires-Dist: pytest; extra == "test"
25
+ Requires-Dist: pytest-xdist; extra == "test"
26
+ Requires-Dist: pytest-cov; extra == "test"
27
+ Requires-Dist: pytest-mock; extra == "test"
28
+ Requires-Dist: dkist-data-simulator>=5.2.6; extra == "test"
29
+ Requires-Dist: dkist-processing-test[inventory]; extra == "test"
30
+ Requires-Dist: dkist-processing-test[asdf]; extra == "test"
31
+ Requires-Dist: dkist-processing-test[quality]; extra == "test"
32
+ Provides-Extra: inventory
33
+ Requires-Dist: dkist-processing-common[inventory]; extra == "inventory"
34
+ Requires-Dist: dkist-inventory==1.11.1; extra == "inventory"
35
+ Provides-Extra: asdf
36
+ Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
37
+ Requires-Dist: dkist-inventory[asdf]==1.11.1; extra == "asdf"
38
+ Provides-Extra: quality
39
+ Requires-Dist: dkist-quality==2.0.0; extra == "quality"
40
+ Provides-Extra: frozen
41
+ Requires-Dist: ConfigUpdater==3.2; extra == "frozen"
42
+ Requires-Dist: Deprecated==1.3.1; extra == "frozen"
43
+ Requires-Dist: Flask==2.2.5; extra == "frozen"
44
+ Requires-Dist: Flask-AppBuilder==4.5.3; extra == "frozen"
45
+ Requires-Dist: Flask-Babel==2.0.0; extra == "frozen"
46
+ Requires-Dist: Flask-Caching==2.3.1; extra == "frozen"
47
+ Requires-Dist: Flask-JWT-Extended==4.7.1; extra == "frozen"
48
+ Requires-Dist: Flask-Limiter==3.12; extra == "frozen"
49
+ Requires-Dist: Flask-Login==0.6.3; extra == "frozen"
50
+ Requires-Dist: Flask-SQLAlchemy==2.5.1; extra == "frozen"
51
+ Requires-Dist: Flask-Session==0.5.0; extra == "frozen"
52
+ Requires-Dist: Flask-WTF==1.2.2; extra == "frozen"
53
+ Requires-Dist: ImageIO==2.37.2; extra == "frozen"
54
+ Requires-Dist: Jinja2==3.1.6; extra == "frozen"
55
+ Requires-Dist: Mako==1.3.10; extra == "frozen"
56
+ Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
57
+ Requires-Dist: PyJWT==2.10.1; extra == "frozen"
58
+ Requires-Dist: PyYAML==6.0.3; extra == "frozen"
59
+ Requires-Dist: Pygments==2.19.2; extra == "frozen"
60
+ Requires-Dist: SQLAlchemy==1.4.54; extra == "frozen"
61
+ Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
62
+ Requires-Dist: SQLAlchemy-Utils==0.42.0; extra == "frozen"
63
+ Requires-Dist: WTForms==3.2.1; extra == "frozen"
64
+ Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
65
+ Requires-Dist: aioftp==0.27.2; extra == "frozen"
66
+ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
67
+ Requires-Dist: aiohttp==3.13.2; extra == "frozen"
68
+ Requires-Dist: aiosignal==1.4.0; extra == "frozen"
69
+ Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
70
+ Requires-Dist: alembic==1.17.2; extra == "frozen"
71
+ Requires-Dist: amqp==5.3.1; extra == "frozen"
72
+ Requires-Dist: annotated-types==0.7.0; extra == "frozen"
73
+ Requires-Dist: anyio==4.12.0; extra == "frozen"
74
+ Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
75
+ Requires-Dist: apache-airflow-providers-celery==3.14.0; extra == "frozen"
76
+ Requires-Dist: apache-airflow-providers-common-compat==1.10.0; extra == "frozen"
77
+ Requires-Dist: apache-airflow-providers-common-io==1.7.0; extra == "frozen"
78
+ Requires-Dist: apache-airflow-providers-common-sql==1.30.0; extra == "frozen"
79
+ Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
80
+ Requires-Dist: apache-airflow-providers-ftp==3.14.0; extra == "frozen"
81
+ Requires-Dist: apache-airflow-providers-http==5.6.0; extra == "frozen"
82
+ Requires-Dist: apache-airflow-providers-imap==3.10.0; extra == "frozen"
83
+ Requires-Dist: apache-airflow-providers-postgres==6.5.0; extra == "frozen"
84
+ Requires-Dist: apache-airflow-providers-smtp==2.4.0; extra == "frozen"
85
+ Requires-Dist: apache-airflow-providers-sqlite==4.2.0; extra == "frozen"
86
+ Requires-Dist: apispec==6.9.0; extra == "frozen"
87
+ Requires-Dist: argcomplete==3.6.3; extra == "frozen"
88
+ Requires-Dist: asdf==3.5.0; extra == "frozen"
89
+ Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
90
+ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
91
+ Requires-Dist: asgiref==3.11.0; extra == "frozen"
92
+ Requires-Dist: asteval==1.0.7; extra == "frozen"
93
+ Requires-Dist: astropy==7.0.2; extra == "frozen"
94
+ Requires-Dist: astropy-iers-data==0.2025.12.1.0.45.12; extra == "frozen"
95
+ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
96
+ Requires-Dist: attrs==25.4.0; extra == "frozen"
97
+ Requires-Dist: babel==2.17.0; extra == "frozen"
98
+ Requires-Dist: billiard==4.2.4; extra == "frozen"
99
+ Requires-Dist: blinker==1.9.0; extra == "frozen"
100
+ Requires-Dist: boto3==1.42.2; extra == "frozen"
101
+ Requires-Dist: botocore==1.42.2; extra == "frozen"
102
+ Requires-Dist: cachelib==0.13.0; extra == "frozen"
103
+ Requires-Dist: celery==5.6.0; extra == "frozen"
104
+ Requires-Dist: certifi==2025.11.12; extra == "frozen"
105
+ Requires-Dist: cffi==2.0.0; extra == "frozen"
106
+ Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
107
+ Requires-Dist: click==8.3.1; extra == "frozen"
108
+ Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
109
+ Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
110
+ Requires-Dist: click-repl==0.3.0; extra == "frozen"
111
+ Requires-Dist: clickclick==20.10.2; extra == "frozen"
112
+ Requires-Dist: colorama==0.4.6; extra == "frozen"
113
+ Requires-Dist: colorlog==6.10.1; extra == "frozen"
114
+ Requires-Dist: connexion==2.14.2; extra == "frozen"
115
+ Requires-Dist: contourpy==1.3.3; extra == "frozen"
116
+ Requires-Dist: cron_descriptor==2.0.6; extra == "frozen"
117
+ Requires-Dist: croniter==6.0.0; extra == "frozen"
118
+ Requires-Dist: cryptography==46.0.3; extra == "frozen"
119
+ Requires-Dist: cycler==0.12.1; extra == "frozen"
120
+ Requires-Dist: dacite==1.9.2; extra == "frozen"
121
+ Requires-Dist: decorator==5.2.1; extra == "frozen"
122
+ Requires-Dist: dill==0.4.0; extra == "frozen"
123
+ Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
124
+ Requires-Dist: dkist-processing-common==11.9.0rc1; extra == "frozen"
125
+ Requires-Dist: dkist-processing-core==6.0.1; extra == "frozen"
126
+ Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
127
+ Requires-Dist: dkist-processing-test==1.36.5rc1; extra == "frozen"
128
+ Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
129
+ Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
130
+ Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
131
+ Requires-Dist: dnspython==2.8.0; extra == "frozen"
132
+ Requires-Dist: email-validator==2.3.0; extra == "frozen"
133
+ Requires-Dist: exceptiongroup==1.3.1; extra == "frozen"
134
+ Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
135
+ Requires-Dist: flower==2.0.1; extra == "frozen"
136
+ Requires-Dist: fonttools==4.61.0; extra == "frozen"
137
+ Requires-Dist: frozenlist==1.8.0; extra == "frozen"
138
+ Requires-Dist: fsspec==2025.12.0; extra == "frozen"
139
+ Requires-Dist: globus-sdk==4.2.0; extra == "frozen"
140
+ Requires-Dist: google-re2==1.1.20251105; extra == "frozen"
141
+ Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
142
+ Requires-Dist: gqlclient==1.2.3; extra == "frozen"
143
+ Requires-Dist: grpcio==1.76.0; extra == "frozen"
144
+ Requires-Dist: gunicorn==23.0.0; extra == "frozen"
145
+ Requires-Dist: h11==0.16.0; extra == "frozen"
146
+ Requires-Dist: httpcore==1.0.9; extra == "frozen"
147
+ Requires-Dist: httpx==0.28.1; extra == "frozen"
148
+ Requires-Dist: humanize==4.14.0; extra == "frozen"
149
+ Requires-Dist: idna==3.11; extra == "frozen"
150
+ Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
151
+ Requires-Dist: importlib_metadata==8.7.0; extra == "frozen"
152
+ Requires-Dist: inflection==0.5.1; extra == "frozen"
153
+ Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
154
+ Requires-Dist: jmespath==1.0.1; extra == "frozen"
155
+ Requires-Dist: jsonschema==4.25.1; extra == "frozen"
156
+ Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
157
+ Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
158
+ Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
159
+ Requires-Dist: kombu==5.6.1; extra == "frozen"
160
+ Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
161
+ Requires-Dist: limits==5.6.0; extra == "frozen"
162
+ Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
163
+ Requires-Dist: llvmlite==0.44.0; extra == "frozen"
164
+ Requires-Dist: lmfit==1.3.4; extra == "frozen"
165
+ Requires-Dist: lockfile==0.12.2; extra == "frozen"
166
+ Requires-Dist: loguru==0.7.3; extra == "frozen"
167
+ Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
168
+ Requires-Dist: marshmallow==3.26.1; extra == "frozen"
169
+ Requires-Dist: marshmallow-oneofschema==3.2.0; extra == "frozen"
170
+ Requires-Dist: marshmallow-sqlalchemy==0.28.2; extra == "frozen"
171
+ Requires-Dist: matplotlib==3.10.7; extra == "frozen"
172
+ Requires-Dist: mdit-py-plugins==0.5.0; extra == "frozen"
173
+ Requires-Dist: mdurl==0.1.2; extra == "frozen"
174
+ Requires-Dist: methodtools==0.4.7; extra == "frozen"
175
+ Requires-Dist: more-itertools==10.8.0; extra == "frozen"
176
+ Requires-Dist: moviepy==2.2.1; extra == "frozen"
177
+ Requires-Dist: multidict==6.7.0; extra == "frozen"
178
+ Requires-Dist: nbformat==5.10.4; extra == "frozen"
179
+ Requires-Dist: numba==0.61.2; extra == "frozen"
180
+ Requires-Dist: numpy==2.2.5; extra == "frozen"
181
+ Requires-Dist: object-clerk==1.0.0; extra == "frozen"
182
+ Requires-Dist: opentelemetry-api==1.39.0; extra == "frozen"
183
+ Requires-Dist: opentelemetry-exporter-otlp==1.39.0; extra == "frozen"
184
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.39.0; extra == "frozen"
185
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.39.0; extra == "frozen"
186
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.0; extra == "frozen"
187
+ Requires-Dist: opentelemetry-instrumentation==0.60b0; extra == "frozen"
188
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.60b0; extra == "frozen"
189
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.60b0; extra == "frozen"
190
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.60b0; extra == "frozen"
191
+ Requires-Dist: opentelemetry-instrumentation-celery==0.60b0; extra == "frozen"
192
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.60b0; extra == "frozen"
193
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.60b0; extra == "frozen"
194
+ Requires-Dist: opentelemetry-instrumentation-pika==0.60b0; extra == "frozen"
195
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.60b0; extra == "frozen"
196
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.60b0; extra == "frozen"
197
+ Requires-Dist: opentelemetry-instrumentation-redis==0.60b0; extra == "frozen"
198
+ Requires-Dist: opentelemetry-instrumentation-requests==0.60b0; extra == "frozen"
199
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.60b0; extra == "frozen"
200
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.60b0; extra == "frozen"
201
+ Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
202
+ Requires-Dist: opentelemetry-proto==1.39.0; extra == "frozen"
203
+ Requires-Dist: opentelemetry-sdk==1.39.0; extra == "frozen"
204
+ Requires-Dist: opentelemetry-semantic-conventions==0.60b0; extra == "frozen"
205
+ Requires-Dist: opentelemetry-util-http==0.60b0; extra == "frozen"
206
+ Requires-Dist: ordered-set==4.1.0; extra == "frozen"
207
+ Requires-Dist: packaging==25.0; extra == "frozen"
208
+ Requires-Dist: pandas==2.3.3; extra == "frozen"
209
+ Requires-Dist: parfive==2.2.0; extra == "frozen"
210
+ Requires-Dist: pathlib_abc==0.5.2; extra == "frozen"
211
+ Requires-Dist: pathspec==0.12.1; extra == "frozen"
212
+ Requires-Dist: pendulum==3.1.0; extra == "frozen"
213
+ Requires-Dist: pika==1.3.2; extra == "frozen"
214
+ Requires-Dist: pillow==11.3.0; extra == "frozen"
215
+ Requires-Dist: pip==25.3; extra == "frozen"
216
+ Requires-Dist: platformdirs==4.5.0; extra == "frozen"
217
+ Requires-Dist: pluggy==1.6.0; extra == "frozen"
218
+ Requires-Dist: pooch==1.8.2; extra == "frozen"
219
+ Requires-Dist: prison==0.2.1; extra == "frozen"
220
+ Requires-Dist: proglog==0.1.12; extra == "frozen"
221
+ Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
222
+ Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
223
+ Requires-Dist: propcache==0.4.1; extra == "frozen"
224
+ Requires-Dist: protobuf==6.33.1; extra == "frozen"
225
+ Requires-Dist: psutil==7.1.3; extra == "frozen"
226
+ Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
227
+ Requires-Dist: pycparser==2.23; extra == "frozen"
228
+ Requires-Dist: pydantic==2.12.5; extra == "frozen"
229
+ Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
230
+ Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
231
+ Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
232
+ Requires-Dist: pyparsing==3.2.5; extra == "frozen"
233
+ Requires-Dist: python-daemon==3.1.2; extra == "frozen"
234
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
235
+ Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
236
+ Requires-Dist: python-nvd3==0.16.0; extra == "frozen"
237
+ Requires-Dist: python-slugify==8.0.4; extra == "frozen"
238
+ Requires-Dist: pytz==2025.2; extra == "frozen"
239
+ Requires-Dist: redis==6.4.0; extra == "frozen"
240
+ Requires-Dist: referencing==0.37.0; extra == "frozen"
241
+ Requires-Dist: requests==2.32.5; extra == "frozen"
242
+ Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
243
+ Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
244
+ Requires-Dist: rich==13.9.4; extra == "frozen"
245
+ Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
246
+ Requires-Dist: rpds-py==0.30.0; extra == "frozen"
247
+ Requires-Dist: s3transfer==0.16.0; extra == "frozen"
248
+ Requires-Dist: scipy==1.16.3; extra == "frozen"
249
+ Requires-Dist: semantic-version==2.10.0; extra == "frozen"
250
+ Requires-Dist: setproctitle==1.3.7; extra == "frozen"
251
+ Requires-Dist: six==1.17.0; extra == "frozen"
252
+ Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
253
+ Requires-Dist: sqids==0.5.1; extra == "frozen"
254
+ Requires-Dist: sqlparse==0.5.4; extra == "frozen"
255
+ Requires-Dist: sunpy==7.0.3; extra == "frozen"
256
+ Requires-Dist: tabulate==0.9.0; extra == "frozen"
257
+ Requires-Dist: talus==1.3.4; extra == "frozen"
258
+ Requires-Dist: tenacity==8.5.0; extra == "frozen"
259
+ Requires-Dist: termcolor==3.2.0; extra == "frozen"
260
+ Requires-Dist: text-unidecode==1.3; extra == "frozen"
261
+ Requires-Dist: tornado==6.5.2; extra == "frozen"
262
+ Requires-Dist: tqdm==4.67.1; extra == "frozen"
263
+ Requires-Dist: traitlets==5.14.3; extra == "frozen"
264
+ Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
265
+ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
266
+ Requires-Dist: tzdata==2025.2; extra == "frozen"
267
+ Requires-Dist: tzlocal==5.3.1; extra == "frozen"
268
+ Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
269
+ Requires-Dist: uncertainties==3.2.3; extra == "frozen"
270
+ Requires-Dist: universal_pathlib==0.3.7; extra == "frozen"
271
+ Requires-Dist: urllib3==2.5.0; extra == "frozen"
272
+ Requires-Dist: vine==5.1.0; extra == "frozen"
273
+ Requires-Dist: voluptuous==0.15.2; extra == "frozen"
274
+ Requires-Dist: wcwidth==0.2.14; extra == "frozen"
275
+ Requires-Dist: wirerope==1.0.0; extra == "frozen"
276
+ Requires-Dist: wrapt==1.17.3; extra == "frozen"
277
+ Requires-Dist: yamale==6.1.0; extra == "frozen"
278
+ Requires-Dist: yarl==1.22.0; extra == "frozen"
279
+ Requires-Dist: zipp==3.23.0; extra == "frozen"
280
+
281
+ dkist-processing-test
282
+ ---------------------
283
+
284
+ |codecov|
285
+
286
+ Overview
287
+ --------
288
+ The dkist-processing-test library serves as an example implementation of a Tasks and Workflows using the
289
+ `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ framework and
290
+ `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ Tasks.
291
+
292
+ The recommended project structure is to separate tasks and workflows into separate packages.
293
+
294
+ Build
295
+ -----
296
+ Artifacts are built through `bitbucket pipelines <bitbucket-pipelines.yml>`_
297
+
298
+ The pipeline can be used in other repos with a modification of the package and artifact locations
299
+ to use the names relevant to the target repo.
300
+
301
+ e.g. dkist-processing-test -> dkist-processing-vbi and dkist_processing_test -> dkist_processing_vbi
302
+
303
+ Deployment
304
+ ----------
305
+ Deployment is done with `turtlebot <https://bitbucket.org/dkistdc/turtlebot/src/master/>`_ and follows
306
+ the process detailed in `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_
307
+
308
+ Environment Variables
309
+ ---------------------
310
+
311
+ .. list-table::
312
+ :widths: 10 90
313
+ :header-rows: 1
314
+
315
+ * - Variable
316
+ - Field Info
317
+ * - LOGURU_LEVEL
318
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
319
+ * - MESH_CONFIG
320
+ - annotation=dict[str, MeshService] required=False default_factory=dict alias_priority=2 validation_alias='MESH_CONFIG' description='Service mesh configuration' examples=[{'upstream_service_name': {'mesh_address': 'localhost', 'mesh_port': 6742}}]
321
+ * - RETRY_CONFIG
322
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
323
+ * - OTEL_SERVICE_NAME
324
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
325
+ * - DKIST_SERVICE_VERSION
326
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
327
+ * - NOMAD_ALLOC_ID
328
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
329
+ * - NOMAD_ALLOC_NAME
330
+ - annotation=str required=False default='unknown-allocation-name' alias='NOMAD_ALLOC_NAME' alias_priority=2 description='Allocation name for the deployed container the task is running on.'
331
+ * - NOMAD_GROUP_NAME
332
+ - annotation=str required=False default='unknown-allocation-group' alias='NOMAD_GROUP_NAME' alias_priority=2 description='Allocation group for the deployed container the task is running on'
333
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
334
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
335
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
336
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
337
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
338
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
339
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
340
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
341
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
342
+ - annotation=list[str] required=False default_factory=list description='List of instrumentations to disable. https://opentelemetry.io/docs/zero-code/python/configuration/' examples=[['pika', 'requests']]
343
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
344
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
345
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
346
+ - annotation=Union[dict[str, bool], NoneType] required=False default=None description='Configuration for system metric instrumentation. https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/system_metrics/system_metrics.html' examples=[{'system.memory.usage': ['used', 'free', 'cached'], 'system.cpu.time': ['idle', 'user', 'system', 'irq'], 'system.network.io': ['transmit', 'receive'], 'process.runtime.memory': ['rss', 'vms'], 'process.runtime.cpu.time': ['user', 'system'], 'process.runtime.context_switches': ['involuntary', 'voluntary']}]
347
+ * - ISB_USERNAME
348
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
349
+ * - ISB_PASSWORD
350
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
351
+ * - ISB_EXCHANGE
352
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
353
+ * - ISB_QUEUE_TYPE
354
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
355
+ * - BUILD_VERSION
356
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
357
+ * - GQL_AUTH_TOKEN
358
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
359
+ * - OBJECT_STORE_ACCESS_KEY
360
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
361
+ * - OBJECT_STORE_SECRET_KEY
362
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
363
+ * - OBJECT_STORE_USE_SSL
364
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
365
+ * - MULTIPART_THRESHOLD
366
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
367
+ * - S3_CLIENT_CONFIG
368
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
369
+ * - S3_UPLOAD_CONFIG
370
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
371
+ * - S3_DOWNLOAD_CONFIG
372
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
373
+ * - GLOBUS_MAX_RETRIES
374
+ - annotation=int required=False default=5 description='Max retries for transient errors on calls to the globus api.'
375
+ * - GLOBUS_INBOUND_CLIENT_CREDENTIALS
376
+ - annotation=list[GlobusClientCredential] required=False default_factory=list description='Globus client credentials for inbound transfers.' examples=[[{'client_id': 'id1', 'client_secret': 'secret1'}, {'client_id': 'id2', 'client_secret': 'secret2'}]]
377
+ * - GLOBUS_OUTBOUND_CLIENT_CREDENTIALS
378
+ - annotation=list[GlobusClientCredential] required=False default_factory=list description='Globus client credentials for outbound transfers.' examples=[[{'client_id': 'id3', 'client_secret': 'secret3'}, {'client_id': 'id4', 'client_secret': 'secret4'}]]
379
+ * - OBJECT_STORE_ENDPOINT
380
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
381
+ * - SCRATCH_ENDPOINT
382
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
383
+ * - SCRATCH_BASE_PATH
384
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
385
+ * - SCRATCH_INVENTORY_DB_COUNT
386
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
387
+ * - DOCS_BASE_URL
388
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
389
+
390
+ Development
391
+ -----------
392
+
393
+ .. code-block:: bash
394
+
395
+ git clone git@bitbucket.org:dkistdc/dkist-processing-test.git
396
+ cd dkist-processing-test
397
+ pre-commit install
398
+ pip install -e .[test]
399
+ pytest -v --cov dkist_processing_test
400
+
401
+ Deployment
402
+ ----------
403
+
404
+ When a new release is ready to be built the following steps need to be taken:
405
+
406
+ 1. Freezing Dependencies
407
+ #########################
408
+
409
+ A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
410
+ package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.
411
+
412
+ To freeze dependencies run
413
+
414
+ .. code-block:: bash
415
+
416
+ ddt freeze vX.Y.Z[rcK]
417
+
418
+ Where "vX.Y.Z[rcK]" is the version about to be released.
419
+
420
+ 2. Tag and Push
421
+ ###############
422
+
423
+ Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:
424
+
425
+ .. code-block:: bash
426
+
427
+ git tag vX.Y.Z[rcK]
428
+ git push --tags origin BRANCH
429
+
430
+ In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".
431
+
432
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-test/graph/badge.svg?token=U004CWS46G
433
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-test
@@ -0,0 +1,153 @@
1
+ dkist-processing-test
2
+ ---------------------
3
+
4
+ |codecov|
5
+
6
+ Overview
7
+ --------
8
+ The dkist-processing-test library serves as an example implementation of a Tasks and Workflows using the
9
+ `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ framework and
10
+ `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ Tasks.
11
+
12
+ The recommended project structure is to separate tasks and workflows into separate packages.
13
+
14
+ Build
15
+ -----
16
+ Artifacts are built through `bitbucket pipelines <bitbucket-pipelines.yml>`_
17
+
18
+ The pipeline can be used in other repos with a modification of the package and artifact locations
19
+ to use the names relevant to the target repo.
20
+
21
+ e.g. dkist-processing-test -> dkist-processing-vbi and dkist_processing_test -> dkist_processing_vbi
22
+
23
+ Deployment
24
+ ----------
25
+ Deployment is done with `turtlebot <https://bitbucket.org/dkistdc/turtlebot/src/master/>`_ and follows
26
+ the process detailed in `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_
27
+
28
+ Environment Variables
29
+ ---------------------
30
+
31
+ .. list-table::
32
+ :widths: 10 90
33
+ :header-rows: 1
34
+
35
+ * - Variable
36
+ - Field Info
37
+ * - LOGURU_LEVEL
38
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
39
+ * - MESH_CONFIG
40
+ - annotation=dict[str, MeshService] required=False default_factory=dict alias_priority=2 validation_alias='MESH_CONFIG' description='Service mesh configuration' examples=[{'upstream_service_name': {'mesh_address': 'localhost', 'mesh_port': 6742}}]
41
+ * - RETRY_CONFIG
42
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
43
+ * - OTEL_SERVICE_NAME
44
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
45
+ * - DKIST_SERVICE_VERSION
46
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
47
+ * - NOMAD_ALLOC_ID
48
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
49
+ * - NOMAD_ALLOC_NAME
50
+ - annotation=str required=False default='unknown-allocation-name' alias='NOMAD_ALLOC_NAME' alias_priority=2 description='Allocation name for the deployed container the task is running on.'
51
+ * - NOMAD_GROUP_NAME
52
+ - annotation=str required=False default='unknown-allocation-group' alias='NOMAD_GROUP_NAME' alias_priority=2 description='Allocation group for the deployed container the task is running on'
53
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
54
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
55
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
56
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
57
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
58
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
59
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
60
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
61
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
62
+ - annotation=list[str] required=False default_factory=list description='List of instrumentations to disable. https://opentelemetry.io/docs/zero-code/python/configuration/' examples=[['pika', 'requests']]
63
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
64
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
65
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
66
+ - annotation=Union[dict[str, bool], NoneType] required=False default=None description='Configuration for system metric instrumentation. https://opentelemetry-python-contrib.readthedocs.io/en/latest/instrumentation/system_metrics/system_metrics.html' examples=[{'system.memory.usage': ['used', 'free', 'cached'], 'system.cpu.time': ['idle', 'user', 'system', 'irq'], 'system.network.io': ['transmit', 'receive'], 'process.runtime.memory': ['rss', 'vms'], 'process.runtime.cpu.time': ['user', 'system'], 'process.runtime.context_switches': ['involuntary', 'voluntary']}]
67
+ * - ISB_USERNAME
68
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
69
+ * - ISB_PASSWORD
70
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
71
+ * - ISB_EXCHANGE
72
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
73
+ * - ISB_QUEUE_TYPE
74
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
75
+ * - BUILD_VERSION
76
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
77
+ * - GQL_AUTH_TOKEN
78
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
79
+ * - OBJECT_STORE_ACCESS_KEY
80
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
81
+ * - OBJECT_STORE_SECRET_KEY
82
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
83
+ * - OBJECT_STORE_USE_SSL
84
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
85
+ * - MULTIPART_THRESHOLD
86
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
87
+ * - S3_CLIENT_CONFIG
88
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
89
+ * - S3_UPLOAD_CONFIG
90
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
91
+ * - S3_DOWNLOAD_CONFIG
92
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
93
+ * - GLOBUS_MAX_RETRIES
94
+ - annotation=int required=False default=5 description='Max retries for transient errors on calls to the globus api.'
95
+ * - GLOBUS_INBOUND_CLIENT_CREDENTIALS
96
+ - annotation=list[GlobusClientCredential] required=False default_factory=list description='Globus client credentials for inbound transfers.' examples=[[{'client_id': 'id1', 'client_secret': 'secret1'}, {'client_id': 'id2', 'client_secret': 'secret2'}]]
97
+ * - GLOBUS_OUTBOUND_CLIENT_CREDENTIALS
98
+ - annotation=list[GlobusClientCredential] required=False default_factory=list description='Globus client credentials for outbound transfers.' examples=[[{'client_id': 'id3', 'client_secret': 'secret3'}, {'client_id': 'id4', 'client_secret': 'secret4'}]]
99
+ * - OBJECT_STORE_ENDPOINT
100
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
101
+ * - SCRATCH_ENDPOINT
102
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
103
+ * - SCRATCH_BASE_PATH
104
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
105
+ * - SCRATCH_INVENTORY_DB_COUNT
106
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
107
+ * - DOCS_BASE_URL
108
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
109
+
110
+ Development
111
+ -----------
112
+
113
+ .. code-block:: bash
114
+
115
+ git clone git@bitbucket.org:dkistdc/dkist-processing-test.git
116
+ cd dkist-processing-test
117
+ pre-commit install
118
+ pip install -e .[test]
119
+ pytest -v --cov dkist_processing_test
120
+
121
+ Deployment
122
+ ----------
123
+
124
+ When a new release is ready to be built the following steps need to be taken:
125
+
126
+ 1. Freezing Dependencies
127
+ #########################
128
+
129
+ A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
130
+ package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.
131
+
132
+ To freeze dependencies run
133
+
134
+ .. code-block:: bash
135
+
136
+ ddt freeze vX.Y.Z[rcK]
137
+
138
+ Where "vX.Y.Z[rcK]" is the version about to be released.
139
+
140
+ 2. Tag and Push
141
+ ###############
142
+
143
+ Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:
144
+
145
+ .. code-block:: bash
146
+
147
+ git tag vX.Y.Z[rcK]
148
+ git push --tags origin BRANCH
149
+
150
+ In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".
151
+
152
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-test/graph/badge.svg?token=U004CWS46G
153
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-test