dkist-processing-vbi 1.24.0__tar.gz → 1.25.0__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 (78) hide show
  1. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/CHANGELOG.rst +18 -0
  2. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/PKG-INFO +143 -54
  3. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/README.rst +75 -1
  4. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/dark.py +4 -6
  5. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/gain.py +4 -4
  6. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/make_movie_frames.py +4 -6
  7. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/process_summit_processed.py +1 -1
  8. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/quality_metrics.py +2 -2
  9. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/science.py +4 -4
  10. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/local_trial_workflows/l0_to_l1.py +0 -20
  11. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi.egg-info/PKG-INFO +143 -54
  12. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi.egg-info/requires.txt +67 -52
  13. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/pyproject.toml +69 -54
  14. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/.gitignore +0 -0
  15. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/.pre-commit-config.yaml +0 -0
  16. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/.readthedocs.yml +0 -0
  17. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/.snyk +0 -0
  18. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/SCIENCE_CHANGELOG.rst +0 -0
  19. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/bitbucket-pipelines.yml +0 -0
  20. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/changelog/.gitempty +0 -0
  21. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/__init__.py +0 -0
  22. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/config.py +0 -0
  23. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/models/__init__.py +0 -0
  24. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/models/constants.py +0 -0
  25. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/models/filter.py +0 -0
  26. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/models/parameters.py +0 -0
  27. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/models/tags.py +0 -0
  28. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/parsers/__init__.py +0 -0
  29. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/parsers/mosaic_repeats.py +0 -0
  30. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/parsers/spatial_step_pattern.py +0 -0
  31. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/parsers/vbi_l0_fits_access.py +0 -0
  32. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/parsers/vbi_l1_fits_access.py +0 -0
  33. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/__init__.py +0 -0
  34. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/assemble_movie.py +0 -0
  35. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/parse.py +0 -0
  36. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/vbi_base.py +0 -0
  37. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tasks/write_l1.py +0 -0
  38. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/__init__.py +0 -0
  39. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/conftest.py +0 -0
  40. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/local_trial_workflows/__init__.py +0 -0
  41. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_assemble_movie.py +0 -0
  42. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_dark.py +0 -0
  43. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_gain.py +0 -0
  44. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_make_movie_frames.py +0 -0
  45. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_parse_l0.py +0 -0
  46. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_parse_summit.py +0 -0
  47. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_process_summit.py +0 -0
  48. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_quality_metrics.py +0 -0
  49. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_science.py +0 -0
  50. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_spatial_step_pattern.py +0 -0
  51. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_vbi_base.py +0 -0
  52. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_vbi_constants.py +0 -0
  53. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_workflows.py +0 -0
  54. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/tests/test_write_l1.py +0 -0
  55. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/workflows/__init__.py +0 -0
  56. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/workflows/l0_processing.py +0 -0
  57. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/workflows/summit_data_processing.py +0 -0
  58. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi/workflows/trial_workflows.py +0 -0
  59. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi.egg-info/SOURCES.txt +0 -0
  60. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi.egg-info/dependency_links.txt +0 -0
  61. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/dkist_processing_vbi.egg-info/top_level.txt +0 -0
  62. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/Makefile +0 -0
  63. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/changelog.rst +0 -0
  64. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/conf.py +0 -0
  65. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/index.rst +0 -0
  66. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/l0_to_l1_vbi_no-speckle-full-trial.rst +0 -0
  67. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/l0_to_l1_vbi_no-speckle.rst +0 -0
  68. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/l0_to_l1_vbi_summit-calibrated-full-trial.rst +0 -0
  69. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/l0_to_l1_vbi_summit-calibrated.rst +0 -0
  70. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/landing_page.rst +0 -0
  71. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/make.bat +0 -0
  72. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/requirements.txt +0 -0
  73. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/requirements_table.rst +0 -0
  74. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/docs/scientific_changelog.rst +0 -0
  75. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/licenses/LICENSE.rst +0 -0
  76. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/science_towncrier.sh +0 -0
  77. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/setup.cfg +0 -0
  78. {dkist_processing_vbi-1.24.0 → dkist_processing_vbi-1.25.0}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v1.25.0 (2025-09-26)
2
+ ====================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Integrate dkist-processing-core 6.0.0 which brings a swap of Elastic APM to OpenTelemetry for metrics and tracing. (`#154 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/154>`__)
8
+
9
+
10
+ v1.24.1 (2025-09-17)
11
+ ====================
12
+
13
+ Misc
14
+ ----
15
+
16
+ - Update dkist-processing-common to enable usage of the latest redis SDK. (`#153 <https://bitbucket.org/dkistdc/dkist-processing-vbi/pull-requests/153>`__)
17
+
18
+
1
19
  v1.24.0 (2025-09-08)
2
20
  ====================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-vbi
3
- Version: 1.24.0
3
+ Version: 1.25.0
4
4
  Summary: Processing code for the VBI instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -13,7 +13,7 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Python: >=3.12
15
15
  Description-Content-Type: text/x-rst
16
- Requires-Dist: dkist-processing-common==11.5.0
16
+ Requires-Dist: dkist-processing-common==11.6.0
17
17
  Requires-Dist: dkist-processing-math==2.2.1
18
18
  Requires-Dist: dkist-header-validator==5.2.1
19
19
  Requires-Dist: dkist-fits-specifications==4.17.0
@@ -24,7 +24,7 @@ Requires-Dist: scipy==1.15.3
24
24
  Requires-Dist: pillow==10.4.0
25
25
  Requires-Dist: moviepy==2.1.2
26
26
  Requires-Dist: dkist-spectral-lines==3.0.0
27
- Requires-Dist: dkist-service-configuration==2.2
27
+ Requires-Dist: dkist-service-configuration==4.1.7
28
28
  Provides-Extra: test
29
29
  Requires-Dist: pytest; extra == "test"
30
30
  Requires-Dist: pytest-cov; extra == "test"
@@ -63,7 +63,7 @@ Requires-Dist: Flask-AppBuilder==4.5.3; extra == "frozen"
63
63
  Requires-Dist: Flask-Babel==2.0.0; extra == "frozen"
64
64
  Requires-Dist: Flask-Caching==2.3.1; extra == "frozen"
65
65
  Requires-Dist: Flask-JWT-Extended==4.7.1; extra == "frozen"
66
- Requires-Dist: Flask-Limiter==3.12; extra == "frozen"
66
+ Requires-Dist: Flask-Limiter==3.13; extra == "frozen"
67
67
  Requires-Dist: Flask-Login==0.6.3; extra == "frozen"
68
68
  Requires-Dist: Flask-SQLAlchemy==2.5.1; extra == "frozen"
69
69
  Requires-Dist: Flask-Session==0.5.0; extra == "frozen"
@@ -73,55 +73,56 @@ Requires-Dist: Mako==1.3.10; extra == "frozen"
73
73
  Requires-Dist: MarkupSafe==3.0.2; extra == "frozen"
74
74
  Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
75
75
  Requires-Dist: PyJWT==2.10.1; extra == "frozen"
76
- Requires-Dist: PyYAML==6.0.2; extra == "frozen"
76
+ Requires-Dist: PyYAML==6.0.3; extra == "frozen"
77
77
  Requires-Dist: Pygments==2.19.2; extra == "frozen"
78
78
  Requires-Dist: SQLAlchemy==1.4.54; extra == "frozen"
79
79
  Requires-Dist: SQLAlchemy-JSONField==1.0.2; extra == "frozen"
80
80
  Requires-Dist: SQLAlchemy-Utils==0.42.0; extra == "frozen"
81
81
  Requires-Dist: WTForms==3.2.1; extra == "frozen"
82
82
  Requires-Dist: Werkzeug==2.2.3; extra == "frozen"
83
- Requires-Dist: aioftp==0.26.2; extra == "frozen"
83
+ Requires-Dist: aioftp==0.27.2; extra == "frozen"
84
84
  Requires-Dist: aiohappyeyeballs==2.6.1; extra == "frozen"
85
85
  Requires-Dist: aiohttp==3.12.15; extra == "frozen"
86
86
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
87
+ Requires-Dist: aiosmtplib==4.0.2; extra == "frozen"
87
88
  Requires-Dist: alembic==1.16.5; extra == "frozen"
88
89
  Requires-Dist: amqp==5.3.1; extra == "frozen"
89
90
  Requires-Dist: annotated-types==0.7.0; extra == "frozen"
90
- Requires-Dist: anyio==4.10.0; extra == "frozen"
91
+ Requires-Dist: anyio==4.11.0; extra == "frozen"
91
92
  Requires-Dist: apache-airflow==2.11.0; extra == "frozen"
92
- Requires-Dist: apache-airflow-providers-celery==3.12.2; extra == "frozen"
93
- Requires-Dist: apache-airflow-providers-common-compat==1.7.3; extra == "frozen"
94
- Requires-Dist: apache-airflow-providers-common-io==1.6.2; extra == "frozen"
95
- Requires-Dist: apache-airflow-providers-common-sql==1.27.5; extra == "frozen"
93
+ Requires-Dist: apache-airflow-providers-celery==3.10.0; extra == "frozen"
94
+ Requires-Dist: apache-airflow-providers-common-compat==1.7.4; extra == "frozen"
95
+ Requires-Dist: apache-airflow-providers-common-io==1.6.3; extra == "frozen"
96
+ Requires-Dist: apache-airflow-providers-common-sql==1.28.1; extra == "frozen"
96
97
  Requires-Dist: apache-airflow-providers-fab==1.5.3; extra == "frozen"
97
98
  Requires-Dist: apache-airflow-providers-ftp==3.13.2; extra == "frozen"
98
- Requires-Dist: apache-airflow-providers-http==5.3.3; extra == "frozen"
99
+ Requires-Dist: apache-airflow-providers-http==5.3.4; extra == "frozen"
99
100
  Requires-Dist: apache-airflow-providers-imap==3.9.2; extra == "frozen"
100
- Requires-Dist: apache-airflow-providers-postgres==6.2.3; extra == "frozen"
101
- Requires-Dist: apache-airflow-providers-smtp==2.2.0; extra == "frozen"
101
+ Requires-Dist: apache-airflow-providers-postgres==6.3.0; extra == "frozen"
102
+ Requires-Dist: apache-airflow-providers-smtp==2.3.0; extra == "frozen"
102
103
  Requires-Dist: apache-airflow-providers-sqlite==4.1.2; extra == "frozen"
103
- Requires-Dist: apispec==6.8.3; extra == "frozen"
104
+ Requires-Dist: apispec==6.8.4; extra == "frozen"
104
105
  Requires-Dist: argcomplete==3.6.2; extra == "frozen"
105
106
  Requires-Dist: asdf==3.5.0; extra == "frozen"
106
107
  Requires-Dist: asdf_standard==1.4.0; extra == "frozen"
107
108
  Requires-Dist: asdf_transform_schemas==0.6.0; extra == "frozen"
108
- Requires-Dist: asgiref==3.9.1; extra == "frozen"
109
+ Requires-Dist: asgiref==3.9.2; extra == "frozen"
109
110
  Requires-Dist: asteval==1.0.6; extra == "frozen"
110
111
  Requires-Dist: astropy==7.0.2; extra == "frozen"
111
- Requires-Dist: astropy-iers-data==0.2025.9.8.0.36.17; extra == "frozen"
112
+ Requires-Dist: astropy-iers-data==0.2025.9.22.0.37.25; extra == "frozen"
112
113
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
113
114
  Requires-Dist: attrs==25.3.0; extra == "frozen"
114
115
  Requires-Dist: babel==2.17.0; extra == "frozen"
115
- Requires-Dist: billiard==4.2.1; extra == "frozen"
116
+ Requires-Dist: billiard==4.2.2; extra == "frozen"
116
117
  Requires-Dist: blinker==1.9.0; extra == "frozen"
117
- Requires-Dist: boto3==1.40.25; extra == "frozen"
118
- Requires-Dist: botocore==1.40.25; extra == "frozen"
118
+ Requires-Dist: boto3==1.40.39; extra == "frozen"
119
+ Requires-Dist: botocore==1.40.39; extra == "frozen"
119
120
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
120
- Requires-Dist: celery==5.5.3; extra == "frozen"
121
+ Requires-Dist: celery==5.3.1; extra == "frozen"
121
122
  Requires-Dist: certifi==2025.8.3; extra == "frozen"
122
- Requires-Dist: cffi==1.17.1; extra == "frozen"
123
+ Requires-Dist: cffi==2.0.0; extra == "frozen"
123
124
  Requires-Dist: charset-normalizer==3.4.3; extra == "frozen"
124
- Requires-Dist: click==8.2.1; extra == "frozen"
125
+ Requires-Dist: click==8.3.0; extra == "frozen"
125
126
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
126
127
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
127
128
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
@@ -132,34 +133,32 @@ Requires-Dist: connexion==2.14.2; extra == "frozen"
132
133
  Requires-Dist: contourpy==1.3.3; extra == "frozen"
133
134
  Requires-Dist: cron_descriptor==2.0.6; extra == "frozen"
134
135
  Requires-Dist: croniter==6.0.0; extra == "frozen"
135
- Requires-Dist: cryptography==45.0.7; extra == "frozen"
136
+ Requires-Dist: cryptography==46.0.1; extra == "frozen"
136
137
  Requires-Dist: cycler==0.12.1; extra == "frozen"
137
138
  Requires-Dist: dacite==1.9.2; extra == "frozen"
138
139
  Requires-Dist: decorator==5.2.1; extra == "frozen"
139
140
  Requires-Dist: dill==0.4.0; extra == "frozen"
140
141
  Requires-Dist: dkist-header-validator==5.2.1; extra == "frozen"
141
- Requires-Dist: dkist-processing-common==11.5.0; extra == "frozen"
142
- Requires-Dist: dkist-processing-core==5.2.1; extra == "frozen"
142
+ Requires-Dist: dkist-processing-common==11.6.0; extra == "frozen"
143
+ Requires-Dist: dkist-processing-core==6.0.0; extra == "frozen"
143
144
  Requires-Dist: dkist-processing-math==2.2.1; extra == "frozen"
144
145
  Requires-Dist: dkist-processing-pac==3.1.1; extra == "frozen"
145
- Requires-Dist: dkist-processing-vbi==1.24.0; extra == "frozen"
146
- Requires-Dist: dkist-service-configuration==2.2; extra == "frozen"
146
+ Requires-Dist: dkist-processing-vbi==1.25.0; extra == "frozen"
147
+ Requires-Dist: dkist-service-configuration==4.1.7; extra == "frozen"
147
148
  Requires-Dist: dkist-spectral-lines==3.0.0; extra == "frozen"
148
149
  Requires-Dist: dkist_fits_specifications==4.17.0; extra == "frozen"
149
150
  Requires-Dist: dnspython==2.8.0; extra == "frozen"
150
- Requires-Dist: ecs-logging==2.2.0; extra == "frozen"
151
- Requires-Dist: elastic-apm==6.24.0; extra == "frozen"
152
151
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
153
152
  Requires-Dist: fastjsonschema==2.21.2; extra == "frozen"
154
153
  Requires-Dist: flower==2.0.1; extra == "frozen"
155
- Requires-Dist: fonttools==4.59.2; extra == "frozen"
154
+ Requires-Dist: fonttools==4.60.0; extra == "frozen"
156
155
  Requires-Dist: frozenlist==1.7.0; extra == "frozen"
157
156
  Requires-Dist: fsspec==2025.9.0; extra == "frozen"
158
- Requires-Dist: globus-sdk==3.63.0; extra == "frozen"
157
+ Requires-Dist: globus-sdk==3.64.0; extra == "frozen"
159
158
  Requires-Dist: google-re2==1.1.20250805; extra == "frozen"
160
159
  Requires-Dist: googleapis-common-protos==1.70.0; extra == "frozen"
161
160
  Requires-Dist: gqlclient==1.2.3; extra == "frozen"
162
- Requires-Dist: grpcio==1.74.0; extra == "frozen"
161
+ Requires-Dist: grpcio==1.75.1; extra == "frozen"
163
162
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
164
163
  Requires-Dist: h11==0.16.0; extra == "frozen"
165
164
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
@@ -199,14 +198,30 @@ Requires-Dist: nbformat==5.10.4; extra == "frozen"
199
198
  Requires-Dist: networkx==3.5; extra == "frozen"
200
199
  Requires-Dist: numpy==2.2.5; extra == "frozen"
201
200
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
202
- Requires-Dist: opentelemetry-api==1.36.0; extra == "frozen"
203
- Requires-Dist: opentelemetry-exporter-otlp==1.36.0; extra == "frozen"
204
- Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.36.0; extra == "frozen"
205
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.36.0; extra == "frozen"
206
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.36.0; extra == "frozen"
207
- Requires-Dist: opentelemetry-proto==1.36.0; extra == "frozen"
208
- Requires-Dist: opentelemetry-sdk==1.36.0; extra == "frozen"
209
- Requires-Dist: opentelemetry-semantic-conventions==0.57b0; extra == "frozen"
201
+ Requires-Dist: opentelemetry-api==1.37.0; extra == "frozen"
202
+ Requires-Dist: opentelemetry-exporter-otlp==1.37.0; extra == "frozen"
203
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.37.0; extra == "frozen"
204
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.37.0; extra == "frozen"
205
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.37.0; extra == "frozen"
206
+ Requires-Dist: opentelemetry-instrumentation==0.58b0; extra == "frozen"
207
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.58b0; extra == "frozen"
208
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.58b0; extra == "frozen"
209
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.58b0; extra == "frozen"
210
+ Requires-Dist: opentelemetry-instrumentation-celery==0.58b0; extra == "frozen"
211
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.58b0; extra == "frozen"
212
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.58b0; extra == "frozen"
213
+ Requires-Dist: opentelemetry-instrumentation-pika==0.58b0; extra == "frozen"
214
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.58b0; extra == "frozen"
215
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.58b0; extra == "frozen"
216
+ Requires-Dist: opentelemetry-instrumentation-redis==0.58b0; extra == "frozen"
217
+ Requires-Dist: opentelemetry-instrumentation-requests==0.58b0; extra == "frozen"
218
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.58b0; extra == "frozen"
219
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.58b0; extra == "frozen"
220
+ Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
221
+ Requires-Dist: opentelemetry-proto==1.37.0; extra == "frozen"
222
+ Requires-Dist: opentelemetry-sdk==1.37.0; extra == "frozen"
223
+ Requires-Dist: opentelemetry-semantic-conventions==0.58b0; extra == "frozen"
224
+ Requires-Dist: opentelemetry-util-http==0.58b0; extra == "frozen"
210
225
  Requires-Dist: ordered-set==4.1.0; extra == "frozen"
211
226
  Requires-Dist: packaging==25.0; extra == "frozen"
212
227
  Requires-Dist: pandas==2.3.2; extra == "frozen"
@@ -221,33 +236,33 @@ Requires-Dist: pluggy==1.6.0; extra == "frozen"
221
236
  Requires-Dist: pooch==1.8.2; extra == "frozen"
222
237
  Requires-Dist: prison==0.2.1; extra == "frozen"
223
238
  Requires-Dist: proglog==0.1.12; extra == "frozen"
224
- Requires-Dist: prometheus_client==0.22.1; extra == "frozen"
239
+ Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
225
240
  Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
226
241
  Requires-Dist: propcache==0.3.2; extra == "frozen"
227
- Requires-Dist: protobuf==6.32.0; extra == "frozen"
228
- Requires-Dist: psutil==7.0.0; extra == "frozen"
242
+ Requires-Dist: protobuf==6.32.1; extra == "frozen"
243
+ Requires-Dist: psutil==7.1.0; extra == "frozen"
229
244
  Requires-Dist: psycopg2-binary==2.9.10; extra == "frozen"
230
- Requires-Dist: pycparser==2.22; extra == "frozen"
231
- Requires-Dist: pydantic==2.11.7; extra == "frozen"
232
- Requires-Dist: pydantic-settings==2.10.1; extra == "frozen"
245
+ Requires-Dist: pycparser==2.23; extra == "frozen"
246
+ Requires-Dist: pydantic==2.11.9; extra == "frozen"
247
+ Requires-Dist: pydantic-settings==2.11.0; extra == "frozen"
233
248
  Requires-Dist: pydantic_core==2.33.2; extra == "frozen"
234
249
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
235
- Requires-Dist: pyparsing==3.2.3; extra == "frozen"
250
+ Requires-Dist: pyparsing==3.2.5; extra == "frozen"
236
251
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
237
252
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
238
253
  Requires-Dist: python-dotenv==1.1.1; extra == "frozen"
239
254
  Requires-Dist: python-nvd3==0.16.0; extra == "frozen"
240
255
  Requires-Dist: python-slugify==8.0.4; extra == "frozen"
241
256
  Requires-Dist: pytz==2025.2; extra == "frozen"
242
- Requires-Dist: redis==4.6.0; extra == "frozen"
257
+ Requires-Dist: redis==6.4.0; extra == "frozen"
243
258
  Requires-Dist: referencing==0.36.2; extra == "frozen"
244
259
  Requires-Dist: requests==2.32.5; extra == "frozen"
245
260
  Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
246
261
  Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
247
- Requires-Dist: rich==13.9.4; extra == "frozen"
262
+ Requires-Dist: rich==14.1.0; extra == "frozen"
248
263
  Requires-Dist: rich-argparse==1.7.1; extra == "frozen"
249
264
  Requires-Dist: rpds-py==0.27.1; extra == "frozen"
250
- Requires-Dist: s3transfer==0.13.1; extra == "frozen"
265
+ Requires-Dist: s3transfer==0.14.0; extra == "frozen"
251
266
  Requires-Dist: scikit-image==0.25.2; extra == "frozen"
252
267
  Requires-Dist: scipy==1.15.3; extra == "frozen"
253
268
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
@@ -263,7 +278,7 @@ Requires-Dist: talus==1.3.4; extra == "frozen"
263
278
  Requires-Dist: tenacity==8.5.0; extra == "frozen"
264
279
  Requires-Dist: termcolor==3.1.0; extra == "frozen"
265
280
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
266
- Requires-Dist: tifffile==2025.8.28; extra == "frozen"
281
+ Requires-Dist: tifffile==2025.9.20; extra == "frozen"
267
282
  Requires-Dist: tornado==6.5.2; extra == "frozen"
268
283
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
269
284
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
@@ -276,7 +291,7 @@ Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
276
291
  Requires-Dist: urllib3==2.5.0; extra == "frozen"
277
292
  Requires-Dist: vine==5.1.0; extra == "frozen"
278
293
  Requires-Dist: voluptuous==0.15.2; extra == "frozen"
279
- Requires-Dist: wcwidth==0.2.13; extra == "frozen"
294
+ Requires-Dist: wcwidth==0.2.14; extra == "frozen"
280
295
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
281
296
  Requires-Dist: wrapt==1.17.3; extra == "frozen"
282
297
  Requires-Dist: yamale==6.0.0; extra == "frozen"
@@ -299,7 +314,81 @@ in their own package facilitates using the build_utils to test the integrity of
299
314
 
300
315
  Environment Variables
301
316
  ---------------------
302
- Only those specified by `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_.
317
+
318
+ .. list-table::
319
+ :widths: 10 90
320
+ :header-rows: 1
321
+
322
+ * - Variable
323
+ - Field Info
324
+ * - LOGURU_LEVEL
325
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
326
+ * - MESH_CONFIG
327
+ - 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}}]
328
+ * - RETRY_CONFIG
329
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
330
+ * - OTEL_SERVICE_NAME
331
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
332
+ * - DKIST_SERVICE_VERSION
333
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
334
+ * - NOMAD_ALLOC_ID
335
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
336
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
337
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
338
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
339
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
340
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
341
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
342
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
343
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
344
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
345
+ - 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']]
346
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
347
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
348
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
349
+ - 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']}]
350
+ * - ISB_USERNAME
351
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
352
+ * - ISB_PASSWORD
353
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
354
+ * - ISB_EXCHANGE
355
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
356
+ * - ISB_QUEUE_TYPE
357
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
358
+ * - BUILD_VERSION
359
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
360
+ * - GQL_AUTH_TOKEN
361
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
362
+ * - OBJECT_STORE_ACCESS_KEY
363
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
364
+ * - OBJECT_STORE_SECRET_KEY
365
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
366
+ * - OBJECT_STORE_USE_SSL
367
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
368
+ * - MULTIPART_THRESHOLD
369
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
370
+ * - S3_CLIENT_CONFIG
371
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
372
+ * - S3_UPLOAD_CONFIG
373
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
374
+ * - S3_DOWNLOAD_CONFIG
375
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
376
+ * - GLOBUS_TRANSPORT_PARAMS
377
+ - annotation=dict required=False default_factory=dict description='Globus transfer parameters.'
378
+ * - GLOBUS_CLIENT_ID
379
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client ID for inbound/outbound transfers.'
380
+ * - GLOBUS_CLIENT_SECRET
381
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client secret for inbound/outbound transfers.'
382
+ * - OBJECT_STORE_ENDPOINT
383
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
384
+ * - SCRATCH_ENDPOINT
385
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
386
+ * - SCRATCH_BASE_PATH
387
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
388
+ * - SCRATCH_INVENTORY_DB_COUNT
389
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
390
+ * - DOCS_BASE_URL
391
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
303
392
 
304
393
  Development
305
394
  -----------
@@ -14,7 +14,81 @@ in their own package facilitates using the build_utils to test the integrity of
14
14
 
15
15
  Environment Variables
16
16
  ---------------------
17
- Only those specified by `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and `dkist-processing-common <https://pypi.org/project/dkist-processing-common/>`_.
17
+
18
+ .. list-table::
19
+ :widths: 10 90
20
+ :header-rows: 1
21
+
22
+ * - Variable
23
+ - Field Info
24
+ * - LOGURU_LEVEL
25
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
26
+ * - MESH_CONFIG
27
+ - 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}}]
28
+ * - RETRY_CONFIG
29
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
30
+ * - OTEL_SERVICE_NAME
31
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
32
+ * - DKIST_SERVICE_VERSION
33
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
34
+ * - NOMAD_ALLOC_ID
35
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
36
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
37
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
38
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
39
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
40
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
41
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
42
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
43
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
44
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
45
+ - 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']]
46
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
47
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
48
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
49
+ - 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']}]
50
+ * - ISB_USERNAME
51
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
52
+ * - ISB_PASSWORD
53
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
54
+ * - ISB_EXCHANGE
55
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
56
+ * - ISB_QUEUE_TYPE
57
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
58
+ * - BUILD_VERSION
59
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
60
+ * - GQL_AUTH_TOKEN
61
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
62
+ * - OBJECT_STORE_ACCESS_KEY
63
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
64
+ * - OBJECT_STORE_SECRET_KEY
65
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
66
+ * - OBJECT_STORE_USE_SSL
67
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
68
+ * - MULTIPART_THRESHOLD
69
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
70
+ * - S3_CLIENT_CONFIG
71
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
72
+ * - S3_UPLOAD_CONFIG
73
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
74
+ * - S3_DOWNLOAD_CONFIG
75
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
76
+ * - GLOBUS_TRANSPORT_PARAMS
77
+ - annotation=dict required=False default_factory=dict description='Globus transfer parameters.'
78
+ * - GLOBUS_CLIENT_ID
79
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client ID for inbound/outbound transfers.'
80
+ * - GLOBUS_CLIENT_SECRET
81
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client secret for inbound/outbound transfers.'
82
+ * - OBJECT_STORE_ENDPOINT
83
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
84
+ * - SCRATCH_ENDPOINT
85
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
86
+ * - SCRATCH_BASE_PATH
87
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
88
+ * - SCRATCH_INVENTORY_DB_COUNT
89
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
90
+ * - DOCS_BASE_URL
91
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
18
92
 
19
93
  Development
20
94
  -----------
@@ -47,7 +47,7 @@ class DarkCalibration(VbiTaskBase, QualityMixin):
47
47
  set(self.constants.gain_exposure_times + self.constants.observe_exposure_times)
48
48
  )
49
49
  logger.info(f"{target_exp_times = }")
50
- with self.apm_task_step(
50
+ with self.telemetry_span(
51
51
  f"Calculating dark frames for {self.constants.num_spatial_steps} steps and {len(target_exp_times)} exp times",
52
52
  ):
53
53
  total_dark_frames_used = 0
@@ -68,16 +68,14 @@ class DarkCalibration(VbiTaskBase, QualityMixin):
68
68
  auto_squeeze=False,
69
69
  )
70
70
 
71
- with self.apm_processing_step(
72
- f"Processing dark for {step = } and {exp_time = }"
73
- ):
71
+ with self.telemetry_span(f"Processing dark for {step = } and {exp_time = }"):
74
72
  logger.info(f"averaging arrays for step {step}")
75
73
  averaged_dark_array = average_numpy_arrays(input_dark_arrays)
76
74
  logger.info(
77
75
  f"average dark signal in step {step} = {averaged_dark_array.mean():.3e}"
78
76
  )
79
77
 
80
- with self.apm_writing_step(
78
+ with self.telemetry_span(
81
79
  f"Writing intermediate dark for {step = } and {exp_time = }",
82
80
  ):
83
81
  self.write(
@@ -89,7 +87,7 @@ class DarkCalibration(VbiTaskBase, QualityMixin):
89
87
  encoder=fits_array_encoder,
90
88
  )
91
89
 
92
- with self.apm_processing_step("Computing and logging quality metrics"):
90
+ with self.telemetry_span("Computing and logging quality metrics"):
93
91
  no_of_raw_dark_frames: int = self.count(tags=[VbiTag.input(), VbiTag.task_dark_frame()])
94
92
  unused_count = no_of_raw_dark_frames - total_dark_frames_used
95
93
  self.quality_store_task_type_counts(
@@ -53,7 +53,7 @@ class GainCalibration(VbiTaskBase, QualityMixin):
53
53
  # This is OK (tm) because this will be, at most, 9 4k x 4k arrays. This is a lot (~1G), but not too much.
54
54
  step_gain_dict: dict = {}
55
55
 
56
- with self.apm_processing_step(
56
+ with self.telemetry_span(
57
57
  f"Collecting and reducing gain arrays from {self.constants.num_spatial_steps} steps and {len(self.constants.gain_exposure_times)} exp times",
58
58
  ):
59
59
  for exp_time in self.constants.gain_exposure_times:
@@ -100,13 +100,13 @@ class GainCalibration(VbiTaskBase, QualityMixin):
100
100
  self.total_counts += np.nansum(dark_subtracted_gain_array)
101
101
  step_gain_dict[step] = dark_subtracted_gain_array
102
102
 
103
- with self.apm_processing_step("normalizing gain arrays"):
103
+ with self.telemetry_span("normalizing gain arrays"):
104
104
  normalized_array_dict = self.normalize_fov(step_gain_dict)
105
105
 
106
- with self.apm_writing_step("writing gain arrays to disk"):
106
+ with self.telemetry_span("writing gain arrays to disk"):
107
107
  self.write_gain_calibration(normalized_array_dict)
108
108
 
109
- with self.apm_processing_step("Computing and logging quality metrics"):
109
+ with self.telemetry_span("Computing and logging quality metrics"):
110
110
  no_of_raw_gain_frames: int = self.count(
111
111
  tags=[
112
112
  VbiTag.input(),
@@ -44,15 +44,15 @@ class MakeVbiMovieFrames(VbiTaskBase):
44
44
  None
45
45
 
46
46
  """
47
- with self.apm_processing_step("averaging exposures"):
47
+ with self.telemetry_span("averaging exposures"):
48
48
  self.average_all_exposures()
49
49
 
50
- with self.apm_processing_step("stitching full FOV frames"):
50
+ with self.telemetry_span("stitching full FOV frames"):
51
51
  for mosaic in range(1, self.constants.num_mosaic_repeats + 1):
52
52
  logger.info(f"stitching full FOV for mosaic repeat {mosaic}")
53
53
  output_hdl = self.stitch_single_mosaic_repeat(mosaic)
54
54
 
55
- with self.apm_writing_step(
55
+ with self.telemetry_span(
56
56
  f"writing stitched movie frame for mosaic repeat {mosaic}"
57
57
  ):
58
58
  self.write(
@@ -145,9 +145,7 @@ class MakeVbiMovieFrames(VbiTaskBase):
145
145
  output = np.zeros((size_y, size_x))
146
146
  px_count = np.zeros((size_y, size_x))
147
147
 
148
- with self.apm_processing_step(
149
- f"stitching all camera positions together for {mosaic_repeat=}"
150
- ):
148
+ with self.telemetry_span(f"stitching all camera positions together for {mosaic_repeat=}"):
151
149
  for o in all_step_access:
152
150
  logger.info(f"Placing position {o.current_spatial_step} into full frame")
153
151
  self.place_pos_in_full_fov(o, ref_header, output, px_count)
@@ -34,7 +34,7 @@ class GenerateL1SummitData(VbiTaskBase):
34
34
  - Write out
35
35
  """
36
36
  # This loop is how we ensure that only completed mosaics get processed.
37
- with self.apm_task_step("Re-tagging INPUT observe frames as CALIBRATED"):
37
+ with self.telemetry_span("Re-tagging INPUT observe frames as CALIBRATED"):
38
38
  for mosaic in range(1, self.constants.num_mosaic_repeats + 1):
39
39
  for step in range(1, self.constants.num_spatial_steps + 1):
40
40
  for file_name in self.read(
@@ -62,10 +62,10 @@ class VbiQualityL1Metrics(VbiTaskBase, QualityMixin):
62
62
  )
63
63
  datetimes = []
64
64
  noise_values = []
65
- with self.apm_processing_step("Calculating VBI L1 quality metrics"):
65
+ with self.telemetry_span("Calculating VBI L1 quality metrics"):
66
66
  for frame in frames:
67
67
  datetimes.append(frame.time_obs)
68
68
  noise_values.append(self.avg_noise(frame.data))
69
69
 
70
- with self.apm_processing_step("Sending lists for storage"):
70
+ with self.telemetry_span("Sending lists for storage"):
71
71
  self.quality_store_noise(datetimes=datetimes, values=noise_values)
@@ -49,7 +49,7 @@ class ScienceCalibration(VbiTaskBase, QualityMixin):
49
49
  logger.info(
50
50
  f"Starting science with {self.constants.num_spatial_steps} steps and {self.constants.num_mosaic_repeats} mosaic repeats"
51
51
  )
52
- with self.apm_task_step(
52
+ with self.telemetry_span(
53
53
  f"Reducing science frames from {self.constants.num_spatial_steps} steps and {self.constants.num_mosaic_repeats} mosaic repeats",
54
54
  ):
55
55
  for exp_time in self.constants.observe_exposure_times:
@@ -89,7 +89,7 @@ class ScienceCalibration(VbiTaskBase, QualityMixin):
89
89
  auto_squeeze=False,
90
90
  )
91
91
 
92
- with self.apm_processing_step("dark and gain corrections"):
92
+ with self.telemetry_span("dark and gain corrections"):
93
93
  logger.info(f"subtracting dark from {apm_str}")
94
94
  sci_access = subtract_array_from_fits_access(
95
95
  access_objs=sci_access, array_to_subtract=dark_calibration_array
@@ -100,13 +100,13 @@ class ScienceCalibration(VbiTaskBase, QualityMixin):
100
100
  access_objs=sci_access, array_to_divide_by=gain_calibration_array
101
101
  )
102
102
 
103
- with self.apm_writing_step("writing calibrated science frames"):
103
+ with self.telemetry_span("writing calibrated science frames"):
104
104
  for i, access_obj in enumerate(sci_access):
105
105
  exp_num = access_obj.current_mosaic_step_exp
106
106
  logger.info(f"Writing output for {apm_str} and {exp_num = }")
107
107
  self.write_calibrated_fits_obj(access_obj, mosaic, step)
108
108
 
109
- with self.apm_processing_step("Computing and logging quality metrics"):
109
+ with self.telemetry_span("Computing and logging quality metrics"):
110
110
  no_of_raw_obs_frames: int = self.count(
111
111
  tags=[
112
112
  VbiTag.input(),