dkist-processing-ops 1.6.20__py3-none-any.whl → 1.9.0rc8__py3-none-any.whl

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-ops might be problematic. Click here for more details.

@@ -1,16 +1,34 @@
1
- # file generated by setuptools_scm
1
+ # file generated by setuptools-scm
2
2
  # don't change, don't track in version control
3
+
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
12
+
3
13
  TYPE_CHECKING = False
4
14
  if TYPE_CHECKING:
5
- from typing import Tuple, Union
15
+ from typing import Tuple
16
+ from typing import Union
17
+
6
18
  VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
7
20
  else:
8
21
  VERSION_TUPLE = object
22
+ COMMIT_ID = object
9
23
 
10
24
  version: str
11
25
  __version__: str
12
26
  __version_tuple__: VERSION_TUPLE
13
27
  version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
30
+
31
+ __version__ = version = '1.9.0rc8'
32
+ __version_tuple__ = version_tuple = (1, 9, 0, 'rc8')
14
33
 
15
- __version__ = version = '1.6.20'
16
- __version_tuple__ = version_tuple = (1, 6, 20)
34
+ __commit_id__ = commit_id = None
@@ -0,0 +1,11 @@
1
+ """Configurations for the dkist-processing-ops package."""
2
+
3
+ from dkist_processing_common.config import DKISTProcessingCommonConfiguration
4
+
5
+
6
+ class DKISTProcessingOpsConfigurations(DKISTProcessingCommonConfiguration):
7
+ pass # nothing custom yet
8
+
9
+
10
+ dkist_processing_ops_configurations = DKISTProcessingOpsConfigurations()
11
+ dkist_processing_ops_configurations.log_configurations()
@@ -1,18 +1,17 @@
1
1
  """
2
2
  DAG to use up workers to support scaling
3
3
  """
4
+
4
5
  from os import environ
5
6
  from pathlib import Path
6
7
 
7
- from dkist_processing_core.build_utils import export_dags
8
-
9
8
 
10
9
  def export_scale_dags(path: Path | str) -> list[Path]:
11
10
  """Export all the ops dags"""
12
11
  result = []
13
12
  dag_prefix = "ops_scale"
14
13
  version = environ.get("BUILD_VERSION", "dev")
15
- scales = [16, 32]
14
+ scales = [1, 16, 32]
16
15
  queues = ["default", "high_memory"]
17
16
  sleep_duration_seconds = 60
18
17
  for queue in queues:
@@ -52,7 +51,7 @@ def _scale_dag(
52
51
  from datetime import timedelta
53
52
  import pendulum
54
53
  from airflow import DAG
55
- from airflow.operators.bash import BashOperator
54
+ from airflow.providers.standard.operators.bash import BashOperator
56
55
  """
57
56
  dag = f"""with DAG(
58
57
  dag_id="{dag_name}",
@@ -62,15 +61,27 @@ from airflow.operators.bash import BashOperator
62
61
  tags=["ops", "scale"],
63
62
  ) as d:"""
64
63
  tasks = []
64
+
65
+ bash_command = (
66
+ f'echo "Task Start"; '
67
+ f"for i in $(seq 1 {sleep_duration_seconds}); do "
68
+ f' echo "stdout tick $i"; '
69
+ f' echo "stderr tick $i" 1>&2; '
70
+ f" sleep 1; "
71
+ f"done; "
72
+ f'echo "Task End"'
73
+ )
74
+
65
75
  for idx in range(concurrent_task_count):
66
76
  task = f""" t{idx} = BashOperator(
67
77
  task_id="t{idx}",
68
- bash_command=f"sleep {sleep_duration_seconds}",
78
+ bash_command='{bash_command}',
69
79
  retries=0,
70
80
  retry_delay=timedelta(seconds=60),
71
81
  owner="DKIST Data Center",
72
82
  queue="{queue}",
73
- )"""
83
+ )
84
+ """
74
85
  tasks.append(task)
75
86
  parts = [imports, dag] + tasks
76
87
  body = "\n".join(parts)
@@ -1,2 +1,5 @@
1
1
  """Import of tasks is directly from package by convention"""
2
+
3
+ from dkist_processing_ops.tasks.read_memory_leak import *
4
+ from dkist_processing_ops.tasks.smoke import *
2
5
  from dkist_processing_ops.tasks.wait import *
@@ -1,15 +1,16 @@
1
- import gc
2
- import logging
1
+ """A task that reads FITS data in various ways to test for memory leaks."""
2
+
3
3
  from abc import ABC
4
4
  from pathlib import Path
5
5
 
6
- import numpy as np
7
6
  from astropy.io import fits
8
7
  from dkist_processing_common.codecs.fits import fits_hdu_decoder
9
8
  from dkist_processing_common.codecs.path import path_decoder
10
9
  from dkist_processing_common.models.tags import Tag
11
10
  from dkist_processing_common.tasks import WorkflowTaskBase
12
11
 
12
+ __all__ = ["FitsDataRead"]
13
+
13
14
 
14
15
  def fits_bytes_decoder(path: Path) -> bytes:
15
16
  with open(path, "rb") as f:
@@ -0,0 +1,26 @@
1
+ """Task for smoke testing which innocuously exercises the task dependencies."""
2
+
3
+ from dkist_processing_common.codecs.bytes import bytes_decoder
4
+ from dkist_processing_common.tasks import WorkflowTaskBase
5
+
6
+ __all__ = ["SmokeTask"]
7
+
8
+ from opentelemetry.trace import StatusCode
9
+
10
+
11
+ class SmokeTask(WorkflowTaskBase):
12
+ def run(self) -> None:
13
+ with self.telemetry_span("Validate read write functionality") as rw_span:
14
+ write_file = b"This is a smoke test file.\n"
15
+ self.write(data=write_file, tags=["smoke_test", "output"])
16
+ read_files = list(self.read(tags=["smoke_test", "output"], decoder=bytes_decoder))
17
+ file_count = len(read_files)
18
+ if file_count != 1:
19
+ rw_span.set_status(StatusCode.ERROR)
20
+ raise RuntimeError(
21
+ f"Smoke test read did not return exactly one file. {file_count = }"
22
+ )
23
+ if read_files[0] != write_file:
24
+ rw_span.set_status(StatusCode.ERROR)
25
+ raise RuntimeError("Smoke test read file contents do not match written contents.")
26
+ rw_span.set_status(StatusCode.OK)
@@ -1,9 +1,9 @@
1
1
  """Task for parallelization testing which sleeps a configurable amount of time"""
2
+
2
3
  from time import sleep
3
4
 
4
5
  from dkist_processing_core import TaskBase
5
6
 
6
-
7
7
  __all__ = ["WaitTask"]
8
8
 
9
9
 
@@ -1,4 +1,5 @@
1
1
  """Test integrity of workflows."""
2
+
2
3
  from dkist_processing_core.build_utils import validate_workflows
3
4
 
4
5
  from dkist_processing_ops import workflows
@@ -1,10 +1,10 @@
1
1
  """Workflows to test task submission and spin up"""
2
+
2
3
  from dkist_processing_common.tasks import TrialTeardown
3
4
  from dkist_processing_core import ResourceQueue
4
5
  from dkist_processing_core import Workflow
5
6
 
6
- from dkist_processing_ops.tasks import WaitTask
7
-
7
+ from dkist_processing_ops.tasks import SmokeTask
8
8
 
9
9
  smoke_default = Workflow(
10
10
  input_data="ops",
@@ -13,8 +13,8 @@ smoke_default = Workflow(
13
13
  detail="default",
14
14
  workflow_package=__package__,
15
15
  )
16
- smoke_default.add_node(task=WaitTask, upstreams=None, resource_queue=ResourceQueue.DEFAULT)
17
- smoke_default.add_node(task=TrialTeardown, upstreams=WaitTask)
16
+ smoke_default.add_node(task=SmokeTask, upstreams=None, resource_queue=ResourceQueue.DEFAULT)
17
+ smoke_default.add_node(task=TrialTeardown, upstreams=SmokeTask)
18
18
 
19
19
 
20
20
  smoke_high_mem = Workflow(
@@ -24,5 +24,5 @@ smoke_high_mem = Workflow(
24
24
  detail="high-mem",
25
25
  workflow_package=__package__,
26
26
  )
27
- smoke_high_mem.add_node(task=WaitTask, upstreams=None, resource_queue=ResourceQueue.HIGH_MEMORY)
28
- smoke_high_mem.add_node(task=TrialTeardown, upstreams=WaitTask)
27
+ smoke_high_mem.add_node(task=SmokeTask, upstreams=None, resource_queue=ResourceQueue.HIGH_MEMORY)
28
+ smoke_high_mem.add_node(task=TrialTeardown, upstreams=SmokeTask)
@@ -0,0 +1,389 @@
1
+ Metadata-Version: 2.4
2
+ Name: dkist-processing-ops
3
+ Version: 1.9.0rc8
4
+ Summary: Automated Processing smoke test and operations workflows
5
+ Author-email: NSO / AURA <dkistdc@nso.edu>
6
+ License: BSD 3-Clause
7
+ Project-URL: repository, https://bitbucket.org/dkistdc/dkist-processing-ops
8
+ Classifier: License :: OSI Approved :: BSD License
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.13
11
+ Requires-Python: >=3.13
12
+ Description-Content-Type: text/x-rst
13
+ License-File: LICENSE.rst
14
+ Requires-Dist: dkist-processing-common==12.0.0rc6
15
+ Requires-Dist: dkist-service-configuration==4.1.13
16
+ Provides-Extra: test
17
+ Requires-Dist: pytest; extra == "test"
18
+ Requires-Dist: pytest-cov; extra == "test"
19
+ Requires-Dist: pytest-xdist; extra == "test"
20
+ Provides-Extra: frozen
21
+ Requires-Dist: Deprecated==1.3.1; extra == "frozen"
22
+ Requires-Dist: ImageIO==2.37.2; extra == "frozen"
23
+ Requires-Dist: Jinja2==3.1.6; extra == "frozen"
24
+ Requires-Dist: Mako==1.3.10; extra == "frozen"
25
+ Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
26
+ Requires-Dist: PyJWT==2.10.1; extra == "frozen"
27
+ Requires-Dist: PyYAML==6.0.3; extra == "frozen"
28
+ Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
29
+ Requires-Dist: Pygments==2.19.2; extra == "frozen"
30
+ Requires-Dist: SQLAlchemy==2.0.45; extra == "frozen"
31
+ Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
32
+ Requires-Dist: SQLAlchemy-Utils==0.42.1; extra == "frozen"
33
+ Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
34
+ Requires-Dist: aioftp==0.27.2; extra == "frozen"
35
+ Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
36
+ Requires-Dist: aiohttp==3.13.3; extra == "frozen"
37
+ Requires-Dist: aiosignal==1.4.0; extra == "frozen"
38
+ Requires-Dist: aiosmtplib==5.0.0; extra == "frozen"
39
+ Requires-Dist: aiosqlite==0.21.0; extra == "frozen"
40
+ Requires-Dist: alembic==1.18.1; extra == "frozen"
41
+ Requires-Dist: amqp==5.3.1; extra == "frozen"
42
+ Requires-Dist: annotated-types==0.7.0; extra == "frozen"
43
+ Requires-Dist: anyio==4.12.1; extra == "frozen"
44
+ Requires-Dist: apache-airflow==3.1.6; extra == "frozen"
45
+ Requires-Dist: apache-airflow-core==3.1.6; extra == "frozen"
46
+ Requires-Dist: apache-airflow-providers-celery==3.15.0; extra == "frozen"
47
+ Requires-Dist: apache-airflow-providers-common-compat==1.11.0; extra == "frozen"
48
+ Requires-Dist: apache-airflow-providers-common-io==1.7.0; extra == "frozen"
49
+ Requires-Dist: apache-airflow-providers-common-sql==1.30.2; extra == "frozen"
50
+ Requires-Dist: apache-airflow-providers-postgres==6.5.1; extra == "frozen"
51
+ Requires-Dist: apache-airflow-providers-smtp==2.4.1; extra == "frozen"
52
+ Requires-Dist: apache-airflow-providers-standard==1.10.2; extra == "frozen"
53
+ Requires-Dist: apache-airflow-task-sdk==1.1.6; extra == "frozen"
54
+ Requires-Dist: argcomplete==3.6.3; extra == "frozen"
55
+ Requires-Dist: asdf==3.5.0; extra == "frozen"
56
+ Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
57
+ Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
58
+ Requires-Dist: asgiref==3.11.0; extra == "frozen"
59
+ Requires-Dist: asteval==1.0.8; extra == "frozen"
60
+ Requires-Dist: astropy==7.2.0; extra == "frozen"
61
+ Requires-Dist: astropy-iers-data==0.2026.1.12.0.42.13; extra == "frozen"
62
+ Requires-Dist: asyncpg==0.31.0; extra == "frozen"
63
+ Requires-Dist: attrs==25.4.0; extra == "frozen"
64
+ Requires-Dist: babel==2.17.0; extra == "frozen"
65
+ Requires-Dist: billiard==4.2.4; extra == "frozen"
66
+ Requires-Dist: boto3==1.42.30; extra == "frozen"
67
+ Requires-Dist: botocore==1.42.30; extra == "frozen"
68
+ Requires-Dist: cadwyn==5.4.6; extra == "frozen"
69
+ Requires-Dist: celery==5.6.2; extra == "frozen"
70
+ Requires-Dist: certifi==2026.1.4; extra == "frozen"
71
+ Requires-Dist: cffi==2.0.0; extra == "frozen"
72
+ Requires-Dist: charset-normalizer==3.4.4; extra == "frozen"
73
+ Requires-Dist: click==8.3.1; extra == "frozen"
74
+ Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
75
+ Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
76
+ Requires-Dist: click-repl==0.3.0; extra == "frozen"
77
+ Requires-Dist: colorlog==6.10.1; extra == "frozen"
78
+ Requires-Dist: contourpy==1.3.3; extra == "frozen"
79
+ Requires-Dist: cron_descriptor==2.0.6; extra == "frozen"
80
+ Requires-Dist: croniter==6.0.0; extra == "frozen"
81
+ Requires-Dist: cryptography==46.0.3; extra == "frozen"
82
+ Requires-Dist: cycler==0.12.1; extra == "frozen"
83
+ Requires-Dist: dacite==1.9.2; extra == "frozen"
84
+ Requires-Dist: decorator==5.2.1; extra == "frozen"
85
+ Requires-Dist: dill==0.4.0; extra == "frozen"
86
+ Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
87
+ Requires-Dist: dkist-processing-common==12.0.0rc6; extra == "frozen"
88
+ Requires-Dist: dkist-processing-core==7.0.0rc8; extra == "frozen"
89
+ Requires-Dist: dkist-processing-ops==1.9.0rc8; extra == "frozen"
90
+ Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
91
+ Requires-Dist: dkist-service-configuration==4.1.13; extra == "frozen"
92
+ Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
93
+ Requires-Dist: dkist_fits_specifications==4.20.0; extra == "frozen"
94
+ Requires-Dist: dnspython==2.8.0; extra == "frozen"
95
+ Requires-Dist: email-validator==2.3.0; extra == "frozen"
96
+ Requires-Dist: fastapi==0.117.1; extra == "frozen"
97
+ Requires-Dist: fastapi-cli==0.0.20; extra == "frozen"
98
+ Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
99
+ Requires-Dist: flower==2.0.1; extra == "frozen"
100
+ Requires-Dist: fonttools==4.61.1; extra == "frozen"
101
+ Requires-Dist: frozenlist==1.8.0; extra == "frozen"
102
+ Requires-Dist: fsspec==2026.1.0; extra == "frozen"
103
+ Requires-Dist: globus-sdk==4.3.1; extra == "frozen"
104
+ Requires-Dist: googleapis-common-protos==1.72.0; extra == "frozen"
105
+ Requires-Dist: gqlclient==1.2.3; extra == "frozen"
106
+ Requires-Dist: greenback==1.3.0; extra == "frozen"
107
+ Requires-Dist: greenlet==3.3.0; extra == "frozen"
108
+ Requires-Dist: grpcio==1.76.0; extra == "frozen"
109
+ Requires-Dist: h11==0.16.0; extra == "frozen"
110
+ Requires-Dist: httpcore==1.0.9; extra == "frozen"
111
+ Requires-Dist: httptools==0.7.1; extra == "frozen"
112
+ Requires-Dist: httpx==0.28.1; extra == "frozen"
113
+ Requires-Dist: humanize==4.15.0; extra == "frozen"
114
+ Requires-Dist: idna==3.11; extra == "frozen"
115
+ Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
116
+ Requires-Dist: importlib_metadata==8.7.1; extra == "frozen"
117
+ Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
118
+ Requires-Dist: jmespath==1.0.1; extra == "frozen"
119
+ Requires-Dist: jsonschema==4.26.0; extra == "frozen"
120
+ Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
121
+ Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
122
+ Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
123
+ Requires-Dist: kombu==5.6.2; extra == "frozen"
124
+ Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
125
+ Requires-Dist: libcst==1.8.6; extra == "frozen"
126
+ Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
127
+ Requires-Dist: lmfit==1.3.4; extra == "frozen"
128
+ Requires-Dist: lockfile==0.12.2; extra == "frozen"
129
+ Requires-Dist: loguru==0.7.3; extra == "frozen"
130
+ Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
131
+ Requires-Dist: matplotlib==3.10.8; extra == "frozen"
132
+ Requires-Dist: mdurl==0.1.2; extra == "frozen"
133
+ Requires-Dist: methodtools==0.4.7; extra == "frozen"
134
+ Requires-Dist: more-itertools==10.8.0; extra == "frozen"
135
+ Requires-Dist: moviepy==2.2.1; extra == "frozen"
136
+ Requires-Dist: msgspec==0.20.0; extra == "frozen"
137
+ Requires-Dist: multidict==6.7.0; extra == "frozen"
138
+ Requires-Dist: natsort==8.4.0; extra == "frozen"
139
+ Requires-Dist: nbformat==5.10.4; extra == "frozen"
140
+ Requires-Dist: numpy==2.4.1; extra == "frozen"
141
+ Requires-Dist: object-clerk==1.0.0; extra == "frozen"
142
+ Requires-Dist: opentelemetry-api==1.39.1; extra == "frozen"
143
+ Requires-Dist: opentelemetry-exporter-otlp==1.39.1; extra == "frozen"
144
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.39.1; extra == "frozen"
145
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.39.1; extra == "frozen"
146
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.39.1; extra == "frozen"
147
+ Requires-Dist: opentelemetry-instrumentation==0.60b1; extra == "frozen"
148
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.60b1; extra == "frozen"
149
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.60b1; extra == "frozen"
150
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.60b1; extra == "frozen"
151
+ Requires-Dist: opentelemetry-instrumentation-celery==0.60b1; extra == "frozen"
152
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.60b1; extra == "frozen"
153
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.60b1; extra == "frozen"
154
+ Requires-Dist: opentelemetry-instrumentation-pika==0.60b1; extra == "frozen"
155
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.60b1; extra == "frozen"
156
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.60b1; extra == "frozen"
157
+ Requires-Dist: opentelemetry-instrumentation-redis==0.60b1; extra == "frozen"
158
+ Requires-Dist: opentelemetry-instrumentation-requests==0.60b1; extra == "frozen"
159
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.60b1; extra == "frozen"
160
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.60b1; extra == "frozen"
161
+ Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
162
+ Requires-Dist: opentelemetry-proto==1.39.1; extra == "frozen"
163
+ Requires-Dist: opentelemetry-sdk==1.39.1; extra == "frozen"
164
+ Requires-Dist: opentelemetry-semantic-conventions==0.60b1; extra == "frozen"
165
+ Requires-Dist: opentelemetry-util-http==0.60b1; extra == "frozen"
166
+ Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
167
+ Requires-Dist: packaging==25.0; extra == "frozen"
168
+ Requires-Dist: pandas==2.3.3; extra == "frozen"
169
+ Requires-Dist: parfive==2.2.0; extra == "frozen"
170
+ Requires-Dist: pathspec==1.0.3; extra == "frozen"
171
+ Requires-Dist: pendulum==3.1.0; extra == "frozen"
172
+ Requires-Dist: pika==1.3.2; extra == "frozen"
173
+ Requires-Dist: pillow==11.3.0; extra == "frozen"
174
+ Requires-Dist: pip==25.3; extra == "frozen"
175
+ Requires-Dist: platformdirs==4.5.1; extra == "frozen"
176
+ Requires-Dist: pluggy==1.6.0; extra == "frozen"
177
+ Requires-Dist: pooch==1.8.2; extra == "frozen"
178
+ Requires-Dist: proglog==0.1.12; extra == "frozen"
179
+ Requires-Dist: prometheus_client==0.24.1; extra == "frozen"
180
+ Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
181
+ Requires-Dist: propcache==0.4.1; extra == "frozen"
182
+ Requires-Dist: protobuf==6.33.4; extra == "frozen"
183
+ Requires-Dist: psutil==7.2.1; extra == "frozen"
184
+ Requires-Dist: psycopg2-binary==2.9.11; extra == "frozen"
185
+ Requires-Dist: pycparser==2.23; extra == "frozen"
186
+ Requires-Dist: pydantic==2.12.5; extra == "frozen"
187
+ Requires-Dist: pydantic-settings==2.12.0; extra == "frozen"
188
+ Requires-Dist: pydantic_core==2.41.5; extra == "frozen"
189
+ Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
190
+ Requires-Dist: pygtrie==2.5.0; extra == "frozen"
191
+ Requires-Dist: pyparsing==3.3.1; extra == "frozen"
192
+ Requires-Dist: python-daemon==3.1.2; extra == "frozen"
193
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
194
+ Requires-Dist: python-dotenv==1.2.1; extra == "frozen"
195
+ Requires-Dist: python-multipart==0.0.21; extra == "frozen"
196
+ Requires-Dist: python-slugify==8.0.4; extra == "frozen"
197
+ Requires-Dist: pytz==2025.2; extra == "frozen"
198
+ Requires-Dist: redis==6.4.0; extra == "frozen"
199
+ Requires-Dist: referencing==0.37.0; extra == "frozen"
200
+ Requires-Dist: requests==2.32.5; extra == "frozen"
201
+ Requires-Dist: rich==14.2.0; extra == "frozen"
202
+ Requires-Dist: rich-argparse==1.7.2; extra == "frozen"
203
+ Requires-Dist: rich-toolkit==0.17.1; extra == "frozen"
204
+ Requires-Dist: rpds-py==0.30.0; extra == "frozen"
205
+ Requires-Dist: s3transfer==0.16.0; extra == "frozen"
206
+ Requires-Dist: scipy==1.17.0; extra == "frozen"
207
+ Requires-Dist: semantic-version==2.10.0; extra == "frozen"
208
+ Requires-Dist: setproctitle==1.3.7; extra == "frozen"
209
+ Requires-Dist: shellingham==1.5.4; extra == "frozen"
210
+ Requires-Dist: six==1.17.0; extra == "frozen"
211
+ Requires-Dist: sniffio==1.3.1; extra == "frozen"
212
+ Requires-Dist: solar-wavelength-calibration==2.0.0; extra == "frozen"
213
+ Requires-Dist: sqids==0.5.1; extra == "frozen"
214
+ Requires-Dist: sqlparse==0.5.5; extra == "frozen"
215
+ Requires-Dist: starlette==0.48.0; extra == "frozen"
216
+ Requires-Dist: structlog==25.5.0; extra == "frozen"
217
+ Requires-Dist: sunpy==7.1.0; extra == "frozen"
218
+ Requires-Dist: svcs==25.1.0; extra == "frozen"
219
+ Requires-Dist: tabulate==0.9.0; extra == "frozen"
220
+ Requires-Dist: talus==1.3.4; extra == "frozen"
221
+ Requires-Dist: tenacity==8.5.0; extra == "frozen"
222
+ Requires-Dist: termcolor==3.3.0; extra == "frozen"
223
+ Requires-Dist: text-unidecode==1.3; extra == "frozen"
224
+ Requires-Dist: tornado==6.5.4; extra == "frozen"
225
+ Requires-Dist: tqdm==4.67.1; extra == "frozen"
226
+ Requires-Dist: traitlets==5.14.3; extra == "frozen"
227
+ Requires-Dist: typer==0.21.1; extra == "frozen"
228
+ Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
229
+ Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
230
+ Requires-Dist: tzdata==2025.3; extra == "frozen"
231
+ Requires-Dist: tzlocal==5.3.1; extra == "frozen"
232
+ Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
233
+ Requires-Dist: uncertainties==3.2.4; extra == "frozen"
234
+ Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
235
+ Requires-Dist: urllib3==2.6.3; extra == "frozen"
236
+ Requires-Dist: uuid6==2025.0.1; extra == "frozen"
237
+ Requires-Dist: uvicorn==0.40.0; extra == "frozen"
238
+ Requires-Dist: uvloop==0.22.1; extra == "frozen"
239
+ Requires-Dist: vine==5.1.0; extra == "frozen"
240
+ Requires-Dist: voluptuous==0.16.0; extra == "frozen"
241
+ Requires-Dist: watchfiles==1.1.1; extra == "frozen"
242
+ Requires-Dist: wcwidth==0.2.14; extra == "frozen"
243
+ Requires-Dist: websockets==16.0; extra == "frozen"
244
+ Requires-Dist: wirerope==1.0.0; extra == "frozen"
245
+ Requires-Dist: wrapt==1.17.3; extra == "frozen"
246
+ Requires-Dist: yamale==6.1.0; extra == "frozen"
247
+ Requires-Dist: yarl==1.22.0; extra == "frozen"
248
+ Requires-Dist: zipp==3.23.0; extra == "frozen"
249
+ Dynamic: license-file
250
+
251
+ dkist-processing-ops
252
+ ====================
253
+
254
+ |codecov|
255
+
256
+ This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and
257
+ `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ to provide workflows for the
258
+ operational management and smoke testing of the `Automated Processing <https://nso.atlassian.net/wiki/spaces/DPD/pages/3671451/04+-+Automated+Processing>`_ stack.
259
+
260
+
261
+ Developer Setup
262
+ ---------------
263
+
264
+ .. code-block:: bash
265
+
266
+ pip install -e .[test]
267
+ pip install pre-commit
268
+ pre-commit install
269
+
270
+ Environment Variables
271
+ ---------------------
272
+
273
+ .. list-table::
274
+ :widths: 10 90
275
+ :header-rows: 1
276
+
277
+ * - Variable
278
+ - Field Info
279
+ * - LOGURU_LEVEL
280
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
281
+ * - MESH_CONFIG
282
+ - 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}}]
283
+ * - RETRY_CONFIG
284
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
285
+ * - OTEL_SERVICE_NAME
286
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
287
+ * - DKIST_SERVICE_VERSION
288
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
289
+ * - NOMAD_ALLOC_ID
290
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
291
+ * - NOMAD_ALLOC_NAME
292
+ - 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.'
293
+ * - NOMAD_GROUP_NAME
294
+ - 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'
295
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
296
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
297
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
298
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
299
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
300
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
301
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
302
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
303
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
304
+ - 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']]
305
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
306
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
307
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
308
+ - 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']}]
309
+ * - ISB_USERNAME
310
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
311
+ * - ISB_PASSWORD
312
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
313
+ * - ISB_EXCHANGE
314
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
315
+ * - ISB_QUEUE_TYPE
316
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
317
+ * - BUILD_VERSION
318
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
319
+ * - MAX_FILE_DESCRIPTORS
320
+ - annotation=int required=False default=1024 description='Maximum number of file descriptors to allow the process.'
321
+ * - GQL_AUTH_TOKEN
322
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
323
+ * - OBJECT_STORE_ACCESS_KEY
324
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
325
+ * - OBJECT_STORE_SECRET_KEY
326
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
327
+ * - OBJECT_STORE_USE_SSL
328
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
329
+ * - MULTIPART_THRESHOLD
330
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
331
+ * - S3_CLIENT_CONFIG
332
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
333
+ * - S3_UPLOAD_CONFIG
334
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
335
+ * - S3_DOWNLOAD_CONFIG
336
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
337
+ * - GLOBUS_MAX_RETRIES
338
+ - annotation=int required=False default=5 description='Max retries for transient errors on calls to the globus api.'
339
+ * - GLOBUS_INBOUND_CLIENT_CREDENTIALS
340
+ - 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'}]]
341
+ * - GLOBUS_OUTBOUND_CLIENT_CREDENTIALS
342
+ - 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'}]]
343
+ * - OBJECT_STORE_ENDPOINT
344
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
345
+ * - SCRATCH_ENDPOINT
346
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
347
+ * - SCRATCH_BASE_PATH
348
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
349
+ * - SCRATCH_INVENTORY_DB_COUNT
350
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
351
+ * - DOCS_BASE_URL
352
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
353
+
354
+ Deployment
355
+ ----------
356
+
357
+ Deployment is done with `turtlebot <https://bitbucket.org/dkistdc/turtlebot/src/main/>`_ and follows
358
+ the process detailed in `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_
359
+
360
+ Additionally, when a new release is ready to be built the following steps need to be taken:
361
+
362
+ 1. Freezing Dependencies
363
+ #########################
364
+
365
+ A new "frozen" extra is generated by the `dkist-dev-tools <https://bitbucket.org/dkistdc/dkist-dev-tools/src/main/>`_
366
+ package. If you don't have `dkist-dev-tools` installed please follow the directions from that repo.
367
+
368
+ To freeze dependencies run
369
+
370
+ .. code-block:: bash
371
+
372
+ ddt freeze vX.Y.Z[rcK]
373
+
374
+ Where "vX.Y.Z[rcK]" is the version about to be released.
375
+
376
+ 2. Tag and Push
377
+ ###############
378
+
379
+ Once all commits are in place add a git tag that will define the released version, then push the tags up to Bitbucket:
380
+
381
+ .. code-block:: bash
382
+
383
+ git tag vX.Y.Z[rcK]
384
+ git push --tags origin BRANCH
385
+
386
+ In the case of an rc, BRANCH will likely be your development branch. For full releases BRANCH should be "main".
387
+
388
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-ops/graph/badge.svg?token=6ZDODS2GHT
389
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-ops
@@ -0,0 +1,18 @@
1
+ dkist_processing_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ dkist_processing_ops/_version.py,sha256=vRQ2vpv6a-QKRwhxbB0QxjHfwaMZ6MrPgusM8GCftDQ,714
3
+ dkist_processing_ops/config.py,sha256=2G_lCkoaiiyU8OPpYPNPakoToUA2CfCSDW26zheaxwE,379
4
+ dkist_processing_ops/dags/scale.py,sha256=9RwVkr73grrT101mTh2zDoYc1erT-cT-ZObZ5sktfvE,2526
5
+ dkist_processing_ops/tasks/__init__.py,sha256=qj4fGtOfpiE55onZzEUhzP8xle0VUSJtgZdSmmAJ6dc,213
6
+ dkist_processing_ops/tasks/read_memory_leak.py,sha256=aT14_wHRf3VqPR6VukvzfDBJzYijWj3dJ0Y4chusPdE,1699
7
+ dkist_processing_ops/tasks/smoke.py,sha256=uuLgh4mVlma5eBUk3xuHZxKMEVw4nIC5uYdnjelZSx4,1151
8
+ dkist_processing_ops/tasks/wait.py,sha256=SyAJffhQgVLUfwT5TIB3CF1Bw-uEh8bodtFqZzQASYo,273
9
+ dkist_processing_ops/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ dkist_processing_ops/tests/test_workflows.py,sha256=MAhwOrbey0NMmq_DpG-bPZaQwrbj0ZkGaIjUvHOFSHw,286
11
+ dkist_processing_ops/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ dkist_processing_ops/workflows/memory_leak.py,sha256=lYXAYyJVjXif3Os9xPDp-bPTG_je6HOw1uvRJ4WMUi4,758
13
+ dkist_processing_ops/workflows/smoke.py,sha256=mWs1rhMCuFS72KrUChORrWLxelxm--tMtt7nzQ49VuA,883
14
+ dkist_processing_ops-1.9.0rc8.dist-info/licenses/LICENSE.rst,sha256=LJjTmkf2-q1phdZSySMpiyPxgLOy6zYHOr3R1Bb1__8,327
15
+ dkist_processing_ops-1.9.0rc8.dist-info/METADATA,sha256=7MDOd_L35PsTESKzx-7PwtVblL4mwWYcSwy_9XyuK7Q,22322
16
+ dkist_processing_ops-1.9.0rc8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
17
+ dkist_processing_ops-1.9.0rc8.dist-info/top_level.txt,sha256=o_SNho1HKt6wvCSUhm9qzX9FS2iopnqYuMos1CCD9cI,21
18
+ dkist_processing_ops-1.9.0rc8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,41 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: dkist-processing-ops
3
- Version: 1.6.20
4
- Summary: Automated Processing smoke test and operations workflows
5
- Author-email: NSO / AURA <dkistdc@nso.edu>
6
- License: BSD 3-Clause
7
- Project-URL: repository, https://bitbucket.org/dkistdc/dkist-processing-ops
8
- Classifier: License :: OSI Approved :: BSD License
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.11
11
- Requires-Python: >=3.11
12
- Description-Content-Type: text/x-rst
13
- License-File: LICENSE.rst
14
- Requires-Dist: dkist-processing-common==10.5.0
15
- Requires-Dist: dkist-service-configuration==2.3.0
16
- Provides-Extra: test
17
- Requires-Dist: pytest; extra == "test"
18
- Requires-Dist: pytest-cov; extra == "test"
19
- Requires-Dist: pytest-xdist; extra == "test"
20
-
21
- dkist-processing-ops
22
- --------------------
23
- |codecov|
24
-
25
- This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and
26
- `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_ to provide workflows for the
27
- operational management and smoke testing of the `Automated Processing <https://nso.atlassian.net/wiki/spaces/DPD/pages/3671451/04+-+Automated+Processing>`_ stack.
28
-
29
-
30
- Developer Setup
31
- ~~~~~~~~~~~~~~~
32
-
33
- .. code-block:: bash
34
-
35
- pip install -e .[test]
36
- pip install pre-commit
37
- pre-commit install
38
-
39
-
40
- .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-ops/branch/main/graph/badge.svg
41
- :target: https://codecov.io/bb/dkistdc/dkist-processing-ops
@@ -1,16 +0,0 @@
1
- dkist_processing_ops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- dkist_processing_ops/_version.py,sha256=O-5nXySDeW_PfI9_UfX0fIKTRKgC9jVuAxK_kMX_fdk,413
3
- dkist_processing_ops/dags/scale.py,sha256=We5TYjNhkJ-5ykfbrOMgjTpXdzOCkIeyKyA-40sU9r0,2312
4
- dkist_processing_ops/tasks/__init__.py,sha256=P81O9cg4dlBMqBTaWitdsAte68RsMtDlhV30JSZfXUY,107
5
- dkist_processing_ops/tasks/read_memory_leak.py,sha256=P2DatMnNi9Jd6nvW8wY_JJkYl_vnMX5BMP0-x5Zft7s,1638
6
- dkist_processing_ops/tasks/wait.py,sha256=uObka-nH1dKPcGBDsp3t2RCtTV2F1kksM0V-lRewFuY,273
7
- dkist_processing_ops/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- dkist_processing_ops/tests/test_workflows.py,sha256=Ch_8BlGeQyPJU_9hB_GOncwW-SoZwpRUVKMOEz0RQZk,285
9
- dkist_processing_ops/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- dkist_processing_ops/workflows/memory_leak.py,sha256=lYXAYyJVjXif3Os9xPDp-bPTG_je6HOw1uvRJ4WMUi4,758
11
- dkist_processing_ops/workflows/smoke.py,sha256=ofXu0_iYF6L3zQy-BOVvS5VdzKhmXs1gyugqMNkd-GM,878
12
- dkist_processing_ops-1.6.20.dist-info/LICENSE.rst,sha256=LJjTmkf2-q1phdZSySMpiyPxgLOy6zYHOr3R1Bb1__8,327
13
- dkist_processing_ops-1.6.20.dist-info/METADATA,sha256=MG4xvK4H66m6sjL5rlvt9P1OnDz6t4kWfXFBn_l9cFE,1495
14
- dkist_processing_ops-1.6.20.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
15
- dkist_processing_ops-1.6.20.dist-info/top_level.txt,sha256=o_SNho1HKt6wvCSUhm9qzX9FS2iopnqYuMos1CCD9cI,21
16
- dkist_processing_ops-1.6.20.dist-info/RECORD,,