dkist-processing-test 1.8.1rc2__tar.gz → 1.37.0rc3__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.

Potentially problematic release.


This version of dkist-processing-test might be problematic. Click here for more details.

Files changed (55) hide show
  1. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/.pre-commit-config.yaml +6 -6
  2. dkist_processing_test-1.37.0rc3/.snyk +3 -0
  3. dkist_processing_test-1.37.0rc3/PKG-INFO +426 -0
  4. dkist_processing_test-1.37.0rc3/README.rst +155 -0
  5. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/bitbucket-pipelines.yml +45 -22
  6. dkist_processing_test-1.37.0rc3/dkist_processing_test/__init__.py +10 -0
  7. dkist_processing_test-1.37.0rc3/dkist_processing_test/config.py +11 -0
  8. dkist_processing_test-1.37.0rc3/dkist_processing_test/models/constants.py +18 -0
  9. dkist_processing_test-1.37.0rc3/dkist_processing_test/models/parameters.py +57 -0
  10. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/__init__.py +0 -1
  11. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/exercise_numba.py +2 -1
  12. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/fail.py +1 -0
  13. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/fake_science.py +32 -15
  14. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/high_memory.py +2 -1
  15. dkist_processing_test-1.37.0rc3/dkist_processing_test/tasks/manual.py +26 -0
  16. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/movie.py +14 -9
  17. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/noop.py +1 -0
  18. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/parse.py +13 -16
  19. dkist_processing_test-1.37.0rc3/dkist_processing_test/tasks/quality.py +31 -0
  20. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tasks/write_l1.py +5 -2
  21. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tests/conftest.py +42 -1
  22. dkist_processing_test-1.37.0rc3/dkist_processing_test/tests/test_tasks.py +985 -0
  23. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tests/test_workflows.py +1 -0
  24. dkist_processing_test-1.37.0rc3/dkist_processing_test/workflows/__init__.py +1 -0
  25. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/common_tasks.py +74 -12
  26. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/end_to_end.py +26 -9
  27. dkist_processing_test-1.37.0rc3/dkist_processing_test/workflows/trial_end_to_end.py +67 -0
  28. dkist_processing_test-1.37.0rc3/dkist_processing_test.egg-info/PKG-INFO +426 -0
  29. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test.egg-info/SOURCES.txt +5 -4
  30. dkist_processing_test-1.37.0rc3/dkist_processing_test.egg-info/requires.txt +261 -0
  31. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test.egg-info/top_level.txt +2 -0
  32. dkist_processing_test-1.37.0rc3/pyproject.toml +317 -0
  33. dkist_processing_test-1.37.0rc3/setup.cfg +4 -0
  34. dkist-processing-test-1.8.1rc2/PKG-INFO +0 -53
  35. dkist-processing-test-1.8.1rc2/README.rst +0 -39
  36. dkist-processing-test-1.8.1rc2/dkist_processing_test/__init__.py +0 -9
  37. dkist-processing-test-1.8.1rc2/dkist_processing_test/models/parameters.py +0 -32
  38. dkist-processing-test-1.8.1rc2/dkist_processing_test/tasks/quality.py +0 -18
  39. dkist-processing-test-1.8.1rc2/dkist_processing_test/tasks/trial_output_data.py +0 -36
  40. dkist-processing-test-1.8.1rc2/dkist_processing_test/tests/test_parameters.py +0 -101
  41. dkist-processing-test-1.8.1rc2/dkist_processing_test/tests/test_tasks.py +0 -534
  42. dkist-processing-test-1.8.1rc2/dkist_processing_test/workflows/__init__.py +0 -0
  43. dkist-processing-test-1.8.1rc2/dkist_processing_test/workflows/trial_end_to_end.py +0 -26
  44. dkist-processing-test-1.8.1rc2/dkist_processing_test.egg-info/PKG-INFO +0 -53
  45. dkist-processing-test-1.8.1rc2/dkist_processing_test.egg-info/requires.txt +0 -15
  46. dkist-processing-test-1.8.1rc2/setup.cfg +0 -44
  47. dkist-processing-test-1.8.1rc2/setup.py +0 -6
  48. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/.gitignore +0 -0
  49. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/models/__init__.py +0 -0
  50. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/tests/__init__.py +0 -0
  51. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/exercise_numba.py +0 -0
  52. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/fail.py +1 -1
  53. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/noop.py +1 -1
  54. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test/workflows/resource_queue.py +1 -1
  55. {dkist-processing-test-1.8.1rc2 → dkist_processing_test-1.37.0rc3}/dkist_processing_test.egg-info/dependency_links.txt +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,426 @@
1
+ Metadata-Version: 2.4
2
+ Name: dkist-processing-test
3
+ Version: 1.37.0rc3
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.13
13
+ Requires-Python: >=3.13
14
+ Description-Content-Type: text/x-rst
15
+ Requires-Dist: dkist-processing-common==12.0.0rc4
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.20.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.2; extra == "inventory"
35
+ Provides-Extra: asdf
36
+ Requires-Dist: dkist-processing-common[asdf]; extra == "asdf"
37
+ Requires-Dist: dkist-inventory[asdf]==1.11.2; extra == "asdf"
38
+ Provides-Extra: quality
39
+ Requires-Dist: dkist-quality==2.0.0; extra == "quality"
40
+ Provides-Extra: frozen
41
+ Requires-Dist: Deprecated==1.3.1; extra == "frozen"
42
+ Requires-Dist: ImageIO==2.37.2; extra == "frozen"
43
+ Requires-Dist: Jinja2==3.1.6; extra == "frozen"
44
+ Requires-Dist: Mako==1.3.10; extra == "frozen"
45
+ Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
46
+ Requires-Dist: PyJWT==2.10.1; extra == "frozen"
47
+ Requires-Dist: PyYAML==6.0.3; extra == "frozen"
48
+ Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
49
+ Requires-Dist: Pygments==2.19.2; extra == "frozen"
50
+ Requires-Dist: SQLAlchemy==2.0.45; extra == "frozen"
51
+ Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
52
+ Requires-Dist: SQLAlchemy-Utils==0.42.1; extra == "frozen"
53
+ Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
54
+ Requires-Dist: aioftp==0.27.2; extra == "frozen"
55
+ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
56
+ Requires-Dist: aiohttp==3.13.3; extra == "frozen"
57
+ Requires-Dist: aiosignal==1.4.0; extra == "frozen"
58
+ Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
59
+ Requires-Dist: aiosqlite==0.21.0; extra == "frozen"
60
+ Requires-Dist: alembic==1.18.1; extra == "frozen"
61
+ Requires-Dist: amqp==5.3.1; extra == "frozen"
62
+ Requires-Dist: annotated-types==0.7.0; extra == "frozen"
63
+ Requires-Dist: anyio==4.12.1; extra == "frozen"
64
+ Requires-Dist: apache-airflow==3.1.6; extra == "frozen"
65
+ Requires-Dist: apache-airflow-core==3.1.6; extra == "frozen"
66
+ Requires-Dist: apache-airflow-providers-celery==3.15.0; extra == "frozen"
67
+ Requires-Dist: apache-airflow-providers-common-compat==1.11.0; extra == "frozen"
68
+ Requires-Dist: apache-airflow-providers-common-io==1.7.0; extra == "frozen"
69
+ Requires-Dist: apache-airflow-providers-common-sql==1.30.2; extra == "frozen"
70
+ Requires-Dist: apache-airflow-providers-postgres==6.5.1; extra == "frozen"
71
+ Requires-Dist: apache-airflow-providers-smtp==2.4.1; extra == "frozen"
72
+ Requires-Dist: apache-airflow-providers-standard==1.10.2; extra == "frozen"
73
+ Requires-Dist: apache-airflow-task-sdk==1.1.6; extra == "frozen"
74
+ Requires-Dist: argcomplete==3.6.3; extra == "frozen"
75
+ Requires-Dist: asdf==3.5.0; extra == "frozen"
76
+ Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
77
+ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
78
+ Requires-Dist: asgiref==3.11.0; extra == "frozen"
79
+ Requires-Dist: asteval==1.0.8; extra == "frozen"
80
+ Requires-Dist: astropy==7.0.2; extra == "frozen"
81
+ Requires-Dist: astropy-iers-data==0.2026.1.12.0.42.13; extra == "frozen"
82
+ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
83
+ Requires-Dist: attrs==25.4.0; extra == "frozen"
84
+ Requires-Dist: babel==2.17.0; extra == "frozen"
85
+ Requires-Dist: billiard==4.2.4; extra == "frozen"
86
+ Requires-Dist: boto3==1.42.28; extra == "frozen"
87
+ Requires-Dist: botocore==1.42.28; extra == "frozen"
88
+ Requires-Dist: cadwyn==5.4.6; extra == "frozen"
89
+ Requires-Dist: celery==5.6.2; extra == "frozen"
90
+ Requires-Dist: certifi==2026.1.4; extra == "frozen"
91
+ Requires-Dist: cffi==2.0.0; extra == "frozen"
92
+ Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
93
+ Requires-Dist: click==8.3.1; extra == "frozen"
94
+ Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
95
+ Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
96
+ Requires-Dist: click-repl==0.3.0; extra == "frozen"
97
+ Requires-Dist: colorlog==6.10.1; extra == "frozen"
98
+ Requires-Dist: contourpy==1.3.3; extra == "frozen"
99
+ Requires-Dist: cron_descriptor==2.0.6; extra == "frozen"
100
+ Requires-Dist: croniter==6.0.0; extra == "frozen"
101
+ Requires-Dist: cryptography==46.0.3; extra == "frozen"
102
+ Requires-Dist: cycler==0.12.1; extra == "frozen"
103
+ Requires-Dist: dacite==1.9.2; extra == "frozen"
104
+ Requires-Dist: decorator==5.2.1; extra == "frozen"
105
+ Requires-Dist: dill==0.4.0; extra == "frozen"
106
+ Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
107
+ Requires-Dist: dkist-processing-common==12.0.0rc4; extra == "frozen"
108
+ Requires-Dist: dkist-processing-core==7.0.0rc6; extra == "frozen"
109
+ Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
110
+ Requires-Dist: dkist-processing-test==1.37.0rc3; extra == "frozen"
111
+ Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
112
+ Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
113
+ Requires-Dist: dkist_fits_specifications==4.20.0; extra == "frozen"
114
+ Requires-Dist: dnspython==2.8.0; extra == "frozen"
115
+ Requires-Dist: email-validator==2.3.0; extra == "frozen"
116
+ Requires-Dist: fastapi==0.117.1; extra == "frozen"
117
+ Requires-Dist: fastapi-cli==0.0.20; extra == "frozen"
118
+ Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
119
+ Requires-Dist: flower==2.0.1; extra == "frozen"
120
+ Requires-Dist: fonttools==4.61.1; extra == "frozen"
121
+ Requires-Dist: frozenlist==1.8.0; extra == "frozen"
122
+ Requires-Dist: fsspec==2026.1.0; extra == "frozen"
123
+ Requires-Dist: globus-sdk==4.3.0; extra == "frozen"
124
+ Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
125
+ Requires-Dist: gqlclient==1.2.3; extra == "frozen"
126
+ Requires-Dist: greenback==1.3.0; extra == "frozen"
127
+ Requires-Dist: greenlet==3.3.0; extra == "frozen"
128
+ Requires-Dist: grpcio==1.76.0; extra == "frozen"
129
+ Requires-Dist: h11==0.16.0; extra == "frozen"
130
+ Requires-Dist: httpcore==1.0.9; extra == "frozen"
131
+ Requires-Dist: httptools==0.7.1; extra == "frozen"
132
+ Requires-Dist: httpx==0.28.1; extra == "frozen"
133
+ Requires-Dist: humanize==4.15.0; extra == "frozen"
134
+ Requires-Dist: idna==3.11; extra == "frozen"
135
+ Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
136
+ Requires-Dist: importlib_metadata==8.7.1; extra == "frozen"
137
+ Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
138
+ Requires-Dist: jmespath==1.0.1; extra == "frozen"
139
+ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
140
+ Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
141
+ Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
142
+ Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
143
+ Requires-Dist: kombu==5.6.2; extra == "frozen"
144
+ Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
145
+ Requires-Dist: libcst==1.8.6; extra == "frozen"
146
+ Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
147
+ Requires-Dist: llvmlite==0.44.0; extra == "frozen"
148
+ Requires-Dist: lmfit==1.3.4; extra == "frozen"
149
+ Requires-Dist: lockfile==0.12.2; extra == "frozen"
150
+ Requires-Dist: loguru==0.7.3; extra == "frozen"
151
+ Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
152
+ Requires-Dist: matplotlib==3.10.8; extra == "frozen"
153
+ Requires-Dist: mdurl==0.1.2; extra == "frozen"
154
+ Requires-Dist: methodtools==0.4.7; extra == "frozen"
155
+ Requires-Dist: more-itertools==10.8.0; extra == "frozen"
156
+ Requires-Dist: moviepy==2.2.1; extra == "frozen"
157
+ Requires-Dist: msgspec==0.20.0; extra == "frozen"
158
+ Requires-Dist: multidict==6.7.0; extra == "frozen"
159
+ Requires-Dist: natsort==8.4.0; extra == "frozen"
160
+ Requires-Dist: nbformat==5.10.4; extra == "frozen"
161
+ Requires-Dist: numba==0.61.2; extra == "frozen"
162
+ Requires-Dist: numpy==2.2.5; extra == "frozen"
163
+ Requires-Dist: object-clerk==1.0.0; extra == "frozen"
164
+ Requires-Dist: opentelemetry-api==1.39.1; extra == "frozen"
165
+ Requires-Dist: opentelemetry-exporter-otlp==1.39.1; extra == "frozen"
166
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.39.1; extra == "frozen"
167
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.39.1; extra == "frozen"
168
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.1; extra == "frozen"
169
+ Requires-Dist: opentelemetry-instrumentation==0.60b1; extra == "frozen"
170
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.60b1; extra == "frozen"
171
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.60b1; extra == "frozen"
172
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.60b1; extra == "frozen"
173
+ Requires-Dist: opentelemetry-instrumentation-celery==0.60b1; extra == "frozen"
174
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.60b1; extra == "frozen"
175
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.60b1; extra == "frozen"
176
+ Requires-Dist: opentelemetry-instrumentation-pika==0.60b1; extra == "frozen"
177
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.60b1; extra == "frozen"
178
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.60b1; extra == "frozen"
179
+ Requires-Dist: opentelemetry-instrumentation-redis==0.60b1; extra == "frozen"
180
+ Requires-Dist: opentelemetry-instrumentation-requests==0.60b1; extra == "frozen"
181
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.60b1; extra == "frozen"
182
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.60b1; extra == "frozen"
183
+ Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
184
+ Requires-Dist: opentelemetry-proto==1.39.1; extra == "frozen"
185
+ Requires-Dist: opentelemetry-sdk==1.39.1; extra == "frozen"
186
+ Requires-Dist: opentelemetry-semantic-conventions==0.60b1; extra == "frozen"
187
+ Requires-Dist: opentelemetry-util-http==0.60b1; extra == "frozen"
188
+ Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
189
+ Requires-Dist: packaging==25.0; extra == "frozen"
190
+ Requires-Dist: pandas==2.3.3; extra == "frozen"
191
+ Requires-Dist: parfive==2.2.0; extra == "frozen"
192
+ Requires-Dist: pathspec==1.0.3; extra == "frozen"
193
+ Requires-Dist: pendulum==3.1.0; extra == "frozen"
194
+ Requires-Dist: pika==1.3.2; extra == "frozen"
195
+ Requires-Dist: pillow==11.3.0; extra == "frozen"
196
+ Requires-Dist: pip==25.3; extra == "frozen"
197
+ Requires-Dist: platformdirs==4.5.1; extra == "frozen"
198
+ Requires-Dist: pluggy==1.6.0; extra == "frozen"
199
+ Requires-Dist: pooch==1.8.2; extra == "frozen"
200
+ Requires-Dist: proglog==0.1.12; extra == "frozen"
201
+ Requires-Dist: prometheus_client==0.24.1; extra == "frozen"
202
+ Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
203
+ Requires-Dist: propcache==0.4.1; extra == "frozen"
204
+ Requires-Dist: protobuf==6.33.4; extra == "frozen"
205
+ Requires-Dist: psutil==7.2.1; extra == "frozen"
206
+ Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
207
+ Requires-Dist: pycparser==2.23; extra == "frozen"
208
+ Requires-Dist: pydantic==2.12.5; extra == "frozen"
209
+ Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
210
+ Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
211
+ Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
212
+ Requires-Dist: pygtrie==2.5.0; extra == "frozen"
213
+ Requires-Dist: pyparsing==3.3.1; extra == "frozen"
214
+ Requires-Dist: python-daemon==3.1.2; extra == "frozen"
215
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
216
+ Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
217
+ Requires-Dist: python-multipart==0.0.21; extra == "frozen"
218
+ Requires-Dist: python-slugify==8.0.4; extra == "frozen"
219
+ Requires-Dist: pytz==2025.2; extra == "frozen"
220
+ Requires-Dist: redis==6.4.0; extra == "frozen"
221
+ Requires-Dist: referencing==0.37.0; extra == "frozen"
222
+ Requires-Dist: requests==2.32.5; extra == "frozen"
223
+ Requires-Dist: rich==14.2.0; extra == "frozen"
224
+ Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
225
+ Requires-Dist: rich-toolkit==0.17.1; extra == "frozen"
226
+ Requires-Dist: rpds-py==0.30.0; extra == "frozen"
227
+ Requires-Dist: s3transfer==0.16.0; extra == "frozen"
228
+ Requires-Dist: scipy==1.17.0; extra == "frozen"
229
+ Requires-Dist: semantic-version==2.10.0; extra == "frozen"
230
+ Requires-Dist: setproctitle==1.3.7; extra == "frozen"
231
+ Requires-Dist: shellingham==1.5.4; extra == "frozen"
232
+ Requires-Dist: six==1.17.0; extra == "frozen"
233
+ Requires-Dist: sniffio==1.3.1; extra == "frozen"
234
+ Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
235
+ Requires-Dist: sqids==0.5.1; extra == "frozen"
236
+ Requires-Dist: sqlparse==0.5.5; extra == "frozen"
237
+ Requires-Dist: starlette==0.48.0; extra == "frozen"
238
+ Requires-Dist: structlog==25.5.0; extra == "frozen"
239
+ Requires-Dist: sunpy==7.1.0; extra == "frozen"
240
+ Requires-Dist: svcs==25.1.0; extra == "frozen"
241
+ Requires-Dist: tabulate==0.9.0; extra == "frozen"
242
+ Requires-Dist: talus==1.3.4; extra == "frozen"
243
+ Requires-Dist: tenacity==8.5.0; extra == "frozen"
244
+ Requires-Dist: termcolor==3.3.0; extra == "frozen"
245
+ Requires-Dist: text-unidecode==1.3; extra == "frozen"
246
+ Requires-Dist: tornado==6.5.4; extra == "frozen"
247
+ Requires-Dist: tqdm==4.67.1; extra == "frozen"
248
+ Requires-Dist: traitlets==5.14.3; extra == "frozen"
249
+ Requires-Dist: typer==0.21.1; extra == "frozen"
250
+ Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
251
+ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
252
+ Requires-Dist: tzdata==2025.3; extra == "frozen"
253
+ Requires-Dist: tzlocal==5.3.1; extra == "frozen"
254
+ Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
255
+ Requires-Dist: uncertainties==3.2.4; extra == "frozen"
256
+ Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
257
+ Requires-Dist: urllib3==2.6.3; extra == "frozen"
258
+ Requires-Dist: uuid6==2025.0.1; extra == "frozen"
259
+ Requires-Dist: uvicorn==0.40.0; extra == "frozen"
260
+ Requires-Dist: uvloop==0.22.1; extra == "frozen"
261
+ Requires-Dist: vine==5.1.0; extra == "frozen"
262
+ Requires-Dist: voluptuous==0.16.0; extra == "frozen"
263
+ Requires-Dist: watchfiles==1.1.1; extra == "frozen"
264
+ Requires-Dist: wcwidth==0.2.14; extra == "frozen"
265
+ Requires-Dist: websockets==16.0; extra == "frozen"
266
+ Requires-Dist: wirerope==1.0.0; extra == "frozen"
267
+ Requires-Dist: wrapt==1.17.3; extra == "frozen"
268
+ Requires-Dist: yamale==6.1.0; extra == "frozen"
269
+ Requires-Dist: yarl==1.22.0; extra == "frozen"
270
+ Requires-Dist: zipp==3.23.0; extra == "frozen"
271
+
272
+ dkist-processing-test
273
+ ---------------------
274
+
275
+ |codecov|
276
+
277
+ Overview
278
+ --------
279
+ The dkist-processing-test library serves as an example implementation of a Tasks and Workflows using the
280
+ `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ framework and
281
+ `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ Tasks.
282
+
283
+ The recommended project structure is to separate tasks and workflows into separate packages.
284
+
285
+ Build
286
+ -----
287
+ Artifacts are built through `bitbucket pipelines <bitbucket-pipelines.yml>`_
288
+
289
+ The pipeline can be used in other repos with a modification of the package and artifact locations
290
+ to use the names relevant to the target repo.
291
+
292
+ e.g. dkist-processing-test -> dkist-processing-vbi and dkist_processing_test -> dkist_processing_vbi
293
+
294
+ Deployment
295
+ ----------
296
+ Deployment is done with `turtlebot <https://bitbucket.org/dkistdc/turtlebot/src/master/>`_ and follows
297
+ the process detailed in `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_
298
+
299
+ Environment Variables
300
+ ---------------------
301
+
302
+ .. list-table::
303
+ :widths: 10 90
304
+ :header-rows: 1
305
+
306
+ * - Variable
307
+ - Field Info
308
+ * - LOGURU_LEVEL
309
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
310
+ * - MESH_CONFIG
311
+ - 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}}]
312
+ * - RETRY_CONFIG
313
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
314
+ * - OTEL_SERVICE_NAME
315
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
316
+ * - DKIST_SERVICE_VERSION
317
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
318
+ * - NOMAD_ALLOC_ID
319
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
320
+ * - NOMAD_ALLOC_NAME
321
+ - 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.'
322
+ * - NOMAD_GROUP_NAME
323
+ - 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'
324
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
325
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
326
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
327
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
328
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
329
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
330
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
331
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
332
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
333
+ - 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']]
334
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
335
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
336
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
337
+ - 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']}]
338
+ * - ISB_USERNAME
339
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
340
+ * - ISB_PASSWORD
341
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
342
+ * - ISB_EXCHANGE
343
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
344
+ * - ISB_QUEUE_TYPE
345
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
346
+ * - BUILD_VERSION
347
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
348
+ * - MAX_FILE_DESCRIPTORS
349
+ - annotation=int required=False default=1024 description='Maximum number of file descriptors to allow the process.'
350
+ * - GQL_AUTH_TOKEN
351
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
352
+ * - OBJECT_STORE_ACCESS_KEY
353
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
354
+ * - OBJECT_STORE_SECRET_KEY
355
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
356
+ * - OBJECT_STORE_USE_SSL
357
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
358
+ * - MULTIPART_THRESHOLD
359
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
360
+ * - S3_CLIENT_CONFIG
361
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
362
+ * - S3_UPLOAD_CONFIG
363
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
364
+ * - S3_DOWNLOAD_CONFIG
365
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
366
+ * - GLOBUS_MAX_RETRIES
367
+ - annotation=int required=False default=5 description='Max retries for transient errors on calls to the globus api.'
368
+ * - GLOBUS_INBOUND_CLIENT_CREDENTIALS
369
+ - 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'}]]
370
+ * - GLOBUS_OUTBOUND_CLIENT_CREDENTIALS
371
+ - 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'}]]
372
+ * - OBJECT_STORE_ENDPOINT
373
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
374
+ * - SCRATCH_ENDPOINT
375
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
376
+ * - SCRATCH_BASE_PATH
377
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
378
+ * - SCRATCH_INVENTORY_DB_COUNT
379
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
380
+ * - DOCS_BASE_URL
381
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
382
+
383
+ Development
384
+ -----------
385
+
386
+ .. code-block:: bash
387
+
388
+ git clone git@bitbucket.org:dkistdc/dkist-processing-test.git
389
+ cd dkist-processing-test
390
+ pre-commit install
391
+ pip install -e .[test]
392
+ pytest -v --cov dkist_processing_test
393
+
394
+ Deployment
395
+ ----------
396
+
397
+ When a new release is ready to be built the following steps need to be taken:
398
+
399
+ 1. Freezing Dependencies
400
+ #########################
401
+
402
+ A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
403
+ package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.
404
+
405
+ To freeze dependencies run
406
+
407
+ .. code-block:: bash
408
+
409
+ ddt freeze vX.Y.Z[rcK]
410
+
411
+ Where "vX.Y.Z[rcK]" is the version about to be released.
412
+
413
+ 2. Tag and Push
414
+ ###############
415
+
416
+ Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:
417
+
418
+ .. code-block:: bash
419
+
420
+ git tag vX.Y.Z[rcK]
421
+ git push --tags origin BRANCH
422
+
423
+ In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".
424
+
425
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-test/graph/badge.svg?token=U004CWS46G
426
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-test
@@ -0,0 +1,155 @@
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
+ * - MAX_FILE_DESCRIPTORS
78
+ - annotation=int required=False default=1024 description='Maximum number of file descriptors to allow the process.'
79
+ * - GQL_AUTH_TOKEN
80
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
81
+ * - OBJECT_STORE_ACCESS_KEY
82
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
83
+ * - OBJECT_STORE_SECRET_KEY
84
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
85
+ * - OBJECT_STORE_USE_SSL
86
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
87
+ * - MULTIPART_THRESHOLD
88
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
89
+ * - S3_CLIENT_CONFIG
90
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
91
+ * - S3_UPLOAD_CONFIG
92
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
93
+ * - S3_DOWNLOAD_CONFIG
94
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
95
+ * - GLOBUS_MAX_RETRIES
96
+ - annotation=int required=False default=5 description='Max retries for transient errors on calls to the globus api.'
97
+ * - GLOBUS_INBOUND_CLIENT_CREDENTIALS
98
+ - 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'}]]
99
+ * - GLOBUS_OUTBOUND_CLIENT_CREDENTIALS
100
+ - 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'}]]
101
+ * - OBJECT_STORE_ENDPOINT
102
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
103
+ * - SCRATCH_ENDPOINT
104
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
105
+ * - SCRATCH_BASE_PATH
106
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
107
+ * - SCRATCH_INVENTORY_DB_COUNT
108
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
109
+ * - DOCS_BASE_URL
110
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
111
+
112
+ Development
113
+ -----------
114
+
115
+ .. code-block:: bash
116
+
117
+ git clone git@bitbucket.org:dkistdc/dkist-processing-test.git
118
+ cd dkist-processing-test
119
+ pre-commit install
120
+ pip install -e .[test]
121
+ pytest -v --cov dkist_processing_test
122
+
123
+ Deployment
124
+ ----------
125
+
126
+ When a new release is ready to be built the following steps need to be taken:
127
+
128
+ 1. Freezing Dependencies
129
+ #########################
130
+
131
+ A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
132
+ package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.
133
+
134
+ To freeze dependencies run
135
+
136
+ .. code-block:: bash
137
+
138
+ ddt freeze vX.Y.Z[rcK]
139
+
140
+ Where "vX.Y.Z[rcK]" is the version about to be released.
141
+
142
+ 2. Tag and Push
143
+ ###############
144
+
145
+ Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:
146
+
147
+ .. code-block:: bash
148
+
149
+ git tag vX.Y.Z[rcK]
150
+ git push --tags origin BRANCH
151
+
152
+ In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".
153
+
154
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-test/graph/badge.svg?token=U004CWS46G
155
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-test