dkist-processing-vbi 1.24.1__py3-none-any.whl → 1.25.1__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.
@@ -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(),
@@ -96,6 +96,10 @@ class VbiS122Headers(Spec122Dataset):
96
96
  self.add_constant_key("VBI__003", num_steps)
97
97
  self.add_constant_key("VBI__007", num_exp_per_step)
98
98
  self.add_constant_key("DKIST008", DKIST008_value)
99
+ self.add_constant_key("ID___014", "v1") # hls_version
100
+ self.add_constant_key("TELTRACK", "Fixed Solar Rotation Tracking")
101
+ self.add_constant_key("TTBLTRCK", "fixed angle on sun")
102
+ self.add_constant_key("TELSCAN", "Raster")
99
103
 
100
104
  @key_function("VBI__004")
101
105
  def spatial_step(self, key: str) -> int:
@@ -123,6 +127,13 @@ class Vbi122DarkFrames(VbiS122Headers):
123
127
  array_shape, num_steps=num_steps, num_exp_per_step=num_exp_per_step, num_dsps_repeats=1
124
128
  )
125
129
  self.add_constant_key("DKIST004", TaskName.dark.value)
130
+ self.add_constant_key("PAC__002", "clear")
131
+ self.add_constant_key("PAC__003", "off")
132
+ self.add_constant_key("PAC__004", "clear")
133
+ self.add_constant_key("PAC__005", "10.")
134
+ self.add_constant_key("PAC__006", "clear")
135
+ self.add_constant_key("PAC__007", "20.")
136
+ self.add_constant_key("PAC__008", "FieldStop (5arcmin)")
126
137
 
127
138
 
128
139
  class Vbi122GainFrames(VbiS122Headers):
@@ -146,21 +146,6 @@ class ValidateL1Output(VbiTaskBase):
146
146
  spec214_validator.validate(f, extra=False)
147
147
 
148
148
 
149
- def setup_APM_config() -> None:
150
- mesh_config = {
151
- "system-monitoring-log-apm": {
152
- "mesh_address": "system-monitoring-log-apm.service.sim.consul",
153
- "mesh_port": 8200,
154
- },
155
- "automated-processing-scratch-inventory": {"mesh_address": "localhost", "mesh_port": 6379},
156
- "internal-api-gateway": {"mesh_address": "localhost", "mesh_port": 80},
157
- }
158
- apm_options = {"TRANSACTION_MAX_SPANS": 10000}
159
- os.environ["MESH_CONFIG"] = json.dumps(mesh_config)
160
- os.environ["ELASTIC_APM_ENABLED"] = "true"
161
- os.environ["ELASTIC_APM_OTHER_OPTIONS"] = json.dumps(apm_options)
162
-
163
-
164
149
  def l0_pipeline_workflow(manual_processing_run: ManualProcessing) -> None:
165
150
  manual_processing_run.run_task(task=ShowExposureTimes)
166
151
  manual_processing_run.run_task(task=VbiQualityL0Metrics)
@@ -181,10 +166,7 @@ def main(
181
166
  skip_movie: bool = False,
182
167
  only_translate: bool = False,
183
168
  science_workflow_name: str = "l0_processing",
184
- use_apm: bool = False,
185
169
  ):
186
- if use_apm:
187
- setup_APM_config()
188
170
  science_func_dict = {
189
171
  "l0_pipeline": l0_pipeline_workflow,
190
172
  "summit_data_processed": summit_data_processing_workflow,
@@ -265,7 +247,6 @@ if __name__ == "__main__":
265
247
  "-t", "--only-translate", help="Do ONLY the translation step", action="store_true"
266
248
  )
267
249
  parser.add_argument("-M", "--skip-movie", help="Skip making output movie", action="store_true")
268
- parser.add_argument("-A", "--use-apm", help="Send APM spans to SIM", action="store_true")
269
250
  args = parser.parse_args()
270
251
 
271
252
  sys.exit(
@@ -277,6 +258,5 @@ if __name__ == "__main__":
277
258
  only_translate=args.only_translate,
278
259
  skip_movie=args.skip_movie,
279
260
  science_workflow_name=args.workflow_name,
280
- use_apm=args.use_apm,
281
261
  )
282
262
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-vbi
3
- Version: 1.24.1
3
+ Version: 1.25.1
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.1
16
+ Requires-Dist: dkist-processing-common==11.7.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,65 +63,66 @@ 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.13; extra == "frozen"
66
+ Requires-Dist: Flask-Limiter==3.12; 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"
70
70
  Requires-Dist: Flask-WTF==1.2.2; extra == "frozen"
71
71
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
72
72
  Requires-Dist: Mako==1.3.10; extra == "frozen"
73
- Requires-Dist: MarkupSafe==3.0.2; extra == "frozen"
73
+ Requires-Dist: MarkupSafe==3.0.3; 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
- Requires-Dist: aiohttp==3.12.15; extra == "frozen"
85
+ Requires-Dist: aiohttp==3.13.0; 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
93
  Requires-Dist: apache-airflow-providers-celery==3.10.0; 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.28.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
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
101
  Requires-Dist: apache-airflow-providers-postgres==6.3.0; extra == "frozen"
101
- Requires-Dist: apache-airflow-providers-smtp==2.2.1; extra == "frozen"
102
+ Requires-Dist: apache-airflow-providers-smtp==2.3.1; 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.10.0; 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.15.0.37.0; extra == "frozen"
112
+ Requires-Dist: astropy-iers-data==0.2025.10.6.0.35.25; extra == "frozen"
112
113
  Requires-Dist: asyncpg==0.30.0; extra == "frozen"
113
- Requires-Dist: attrs==25.3.0; extra == "frozen"
114
+ Requires-Dist: attrs==25.4.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.32; extra == "frozen"
118
- Requires-Dist: botocore==1.40.32; extra == "frozen"
118
+ Requires-Dist: boto3==1.40.48; extra == "frozen"
119
+ Requires-Dist: botocore==1.40.48; extra == "frozen"
119
120
  Requires-Dist: cachelib==0.13.0; extra == "frozen"
120
121
  Requires-Dist: celery==5.3.1; extra == "frozen"
121
- Requires-Dist: certifi==2025.8.3; extra == "frozen"
122
+ Requires-Dist: certifi==2025.10.5; extra == "frozen"
122
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,33 @@ 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==46.0.1; extra == "frozen"
136
+ Requires-Dist: cryptography==46.0.2; 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.1; extra == "frozen"
142
- Requires-Dist: dkist-processing-core==5.2.1; extra == "frozen"
142
+ Requires-Dist: dkist-processing-common==11.7.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.1; extra == "frozen"
146
- Requires-Dist: dkist-service-configuration==2.2; extra == "frozen"
146
+ Requires-Dist: dkist-processing-vbi==1.25.1; 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.60.0; extra == "frozen"
156
- Requires-Dist: frozenlist==1.7.0; extra == "frozen"
154
+ Requires-Dist: fonttools==4.60.1; extra == "frozen"
155
+ Requires-Dist: frozenlist==1.8.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.65.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.75.0; extra == "frozen"
161
+ Requires-Dist: greenlet==3.2.4; extra == "frozen"
162
+ Requires-Dist: grpcio==1.75.1; extra == "frozen"
163
163
  Requires-Dist: gunicorn==23.0.0; extra == "frozen"
164
164
  Requires-Dist: h11==0.16.0; extra == "frozen"
165
165
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
@@ -179,7 +179,7 @@ Requires-Dist: kiwisolver==1.4.9; extra == "frozen"
179
179
  Requires-Dist: kombu==5.5.4; extra == "frozen"
180
180
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
181
181
  Requires-Dist: lazy_loader==0.4; extra == "frozen"
182
- Requires-Dist: limits==5.5.0; extra == "frozen"
182
+ Requires-Dist: limits==5.6.0; extra == "frozen"
183
183
  Requires-Dist: linkify-it-py==2.0.3; extra == "frozen"
184
184
  Requires-Dist: lmfit==1.3.4; extra == "frozen"
185
185
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
@@ -188,13 +188,13 @@ Requires-Dist: markdown-it-py==4.0.0; extra == "frozen"
188
188
  Requires-Dist: marshmallow==3.26.1; extra == "frozen"
189
189
  Requires-Dist: marshmallow-oneofschema==3.2.0; extra == "frozen"
190
190
  Requires-Dist: marshmallow-sqlalchemy==0.28.2; extra == "frozen"
191
- Requires-Dist: matplotlib==3.10.6; extra == "frozen"
191
+ Requires-Dist: matplotlib==3.10.7; extra == "frozen"
192
192
  Requires-Dist: mdit-py-plugins==0.5.0; extra == "frozen"
193
193
  Requires-Dist: mdurl==0.1.2; extra == "frozen"
194
194
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
195
195
  Requires-Dist: more-itertools==10.8.0; extra == "frozen"
196
196
  Requires-Dist: moviepy==2.1.2; extra == "frozen"
197
- Requires-Dist: multidict==6.6.4; extra == "frozen"
197
+ Requires-Dist: multidict==6.7.0; extra == "frozen"
198
198
  Requires-Dist: nbformat==5.10.4; extra == "frozen"
199
199
  Requires-Dist: networkx==3.5; extra == "frozen"
200
200
  Requires-Dist: numpy==2.2.5; extra == "frozen"
@@ -204,35 +204,52 @@ Requires-Dist: opentelemetry-exporter-otlp==1.37.0; extra == "frozen"
204
204
  Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.37.0; extra == "frozen"
205
205
  Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.37.0; extra == "frozen"
206
206
  Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.37.0; extra == "frozen"
207
+ Requires-Dist: opentelemetry-instrumentation==0.58b0; extra == "frozen"
208
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.58b0; extra == "frozen"
209
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.58b0; extra == "frozen"
210
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.58b0; extra == "frozen"
211
+ Requires-Dist: opentelemetry-instrumentation-celery==0.58b0; extra == "frozen"
212
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.58b0; extra == "frozen"
213
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.58b0; extra == "frozen"
214
+ Requires-Dist: opentelemetry-instrumentation-pika==0.58b0; extra == "frozen"
215
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.58b0; extra == "frozen"
216
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.58b0; extra == "frozen"
217
+ Requires-Dist: opentelemetry-instrumentation-redis==0.58b0; extra == "frozen"
218
+ Requires-Dist: opentelemetry-instrumentation-requests==0.58b0; extra == "frozen"
219
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.58b0; extra == "frozen"
220
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.58b0; extra == "frozen"
221
+ Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
207
222
  Requires-Dist: opentelemetry-proto==1.37.0; extra == "frozen"
208
223
  Requires-Dist: opentelemetry-sdk==1.37.0; extra == "frozen"
209
224
  Requires-Dist: opentelemetry-semantic-conventions==0.58b0; extra == "frozen"
225
+ Requires-Dist: opentelemetry-util-http==0.58b0; extra == "frozen"
210
226
  Requires-Dist: ordered-set==4.1.0; extra == "frozen"
211
227
  Requires-Dist: packaging==25.0; extra == "frozen"
212
- Requires-Dist: pandas==2.3.2; extra == "frozen"
228
+ Requires-Dist: pandas==2.3.3; extra == "frozen"
213
229
  Requires-Dist: parfive==2.2.0; extra == "frozen"
230
+ Requires-Dist: pathlib_abc==0.5.1; extra == "frozen"
214
231
  Requires-Dist: pathspec==0.12.1; extra == "frozen"
215
232
  Requires-Dist: pendulum==3.1.0; extra == "frozen"
216
233
  Requires-Dist: pika==1.3.2; extra == "frozen"
217
234
  Requires-Dist: pillow==10.4.0; extra == "frozen"
218
235
  Requires-Dist: pip==25.2; extra == "frozen"
219
- Requires-Dist: platformdirs==4.4.0; extra == "frozen"
236
+ Requires-Dist: platformdirs==4.5.0; extra == "frozen"
220
237
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
221
238
  Requires-Dist: pooch==1.8.2; extra == "frozen"
222
239
  Requires-Dist: prison==0.2.1; extra == "frozen"
223
240
  Requires-Dist: proglog==0.1.12; extra == "frozen"
224
- Requires-Dist: prometheus_client==0.22.1; extra == "frozen"
241
+ Requires-Dist: prometheus_client==0.23.1; extra == "frozen"
225
242
  Requires-Dist: prompt_toolkit==3.0.52; extra == "frozen"
226
- Requires-Dist: propcache==0.3.2; extra == "frozen"
243
+ Requires-Dist: propcache==0.4.1; extra == "frozen"
227
244
  Requires-Dist: protobuf==6.32.1; extra == "frozen"
228
- Requires-Dist: psutil==7.0.0; extra == "frozen"
245
+ Requires-Dist: psutil==7.1.0; extra == "frozen"
229
246
  Requires-Dist: psycopg2-binary==2.9.10; extra == "frozen"
230
247
  Requires-Dist: pycparser==2.23; extra == "frozen"
231
- Requires-Dist: pydantic==2.11.9; extra == "frozen"
232
- Requires-Dist: pydantic-settings==2.10.1; extra == "frozen"
233
- Requires-Dist: pydantic_core==2.33.2; extra == "frozen"
248
+ Requires-Dist: pydantic==2.12.0; extra == "frozen"
249
+ Requires-Dist: pydantic-settings==2.11.0; extra == "frozen"
250
+ Requires-Dist: pydantic_core==2.41.1; extra == "frozen"
234
251
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
235
- Requires-Dist: pyparsing==3.2.4; extra == "frozen"
252
+ Requires-Dist: pyparsing==3.2.5; extra == "frozen"
236
253
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
237
254
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
238
255
  Requires-Dist: python-dotenv==1.1.1; extra == "frozen"
@@ -244,7 +261,7 @@ Requires-Dist: referencing==0.36.2; extra == "frozen"
244
261
  Requires-Dist: requests==2.32.5; extra == "frozen"
245
262
  Requires-Dist: requests-toolbelt==1.0.0; extra == "frozen"
246
263
  Requires-Dist: rfc3339-validator==0.1.4; extra == "frozen"
247
- Requires-Dist: rich==14.1.0; extra == "frozen"
264
+ Requires-Dist: rich==13.9.4; extra == "frozen"
248
265
  Requires-Dist: rich-argparse==1.7.1; extra == "frozen"
249
266
  Requires-Dist: rpds-py==0.27.1; extra == "frozen"
250
267
  Requires-Dist: s3transfer==0.14.0; extra == "frozen"
@@ -263,24 +280,24 @@ Requires-Dist: talus==1.3.4; extra == "frozen"
263
280
  Requires-Dist: tenacity==8.5.0; extra == "frozen"
264
281
  Requires-Dist: termcolor==3.1.0; extra == "frozen"
265
282
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
266
- Requires-Dist: tifffile==2025.9.9; extra == "frozen"
283
+ Requires-Dist: tifffile==2025.10.4; extra == "frozen"
267
284
  Requires-Dist: tornado==6.5.2; extra == "frozen"
268
285
  Requires-Dist: tqdm==4.67.1; extra == "frozen"
269
286
  Requires-Dist: traitlets==5.14.3; extra == "frozen"
270
- Requires-Dist: typing-inspection==0.4.1; extra == "frozen"
287
+ Requires-Dist: typing-inspection==0.4.2; extra == "frozen"
271
288
  Requires-Dist: typing_extensions==4.15.0; extra == "frozen"
272
289
  Requires-Dist: tzdata==2025.2; extra == "frozen"
273
290
  Requires-Dist: uc-micro-py==1.0.3; extra == "frozen"
274
291
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
275
- Requires-Dist: universal_pathlib==0.2.6; extra == "frozen"
292
+ Requires-Dist: universal_pathlib==0.3.3; extra == "frozen"
276
293
  Requires-Dist: urllib3==2.5.0; extra == "frozen"
277
294
  Requires-Dist: vine==5.1.0; extra == "frozen"
278
295
  Requires-Dist: voluptuous==0.15.2; extra == "frozen"
279
- Requires-Dist: wcwidth==0.2.13; extra == "frozen"
296
+ Requires-Dist: wcwidth==0.2.14; extra == "frozen"
280
297
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
281
298
  Requires-Dist: wrapt==1.17.3; extra == "frozen"
282
299
  Requires-Dist: yamale==6.0.0; extra == "frozen"
283
- Requires-Dist: yarl==1.20.1; extra == "frozen"
300
+ Requires-Dist: yarl==1.22.0; extra == "frozen"
284
301
  Requires-Dist: zipp==3.23.0; extra == "frozen"
285
302
 
286
303
  dkist-processing-vbi
@@ -299,7 +316,81 @@ in their own package facilitates using the build_utils to test the integrity of
299
316
 
300
317
  Environment Variables
301
318
  ---------------------
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/>`_.
319
+
320
+ .. list-table::
321
+ :widths: 10 90
322
+ :header-rows: 1
323
+
324
+ * - Variable
325
+ - Field Info
326
+ * - LOGURU_LEVEL
327
+ - annotation=str required=False default='INFO' alias_priority=2 validation_alias='LOGURU_LEVEL' description='Log level for the application'
328
+ * - MESH_CONFIG
329
+ - 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}}]
330
+ * - RETRY_CONFIG
331
+ - annotation=RetryConfig required=False default_factory=RetryConfig description='Retry configuration for the service'
332
+ * - OTEL_SERVICE_NAME
333
+ - annotation=str required=False default='unknown-service-name' alias_priority=2 validation_alias='OTEL_SERVICE_NAME' description='Service name for OpenTelemetry'
334
+ * - DKIST_SERVICE_VERSION
335
+ - annotation=str required=False default='unknown-service-version' alias_priority=2 validation_alias='DKIST_SERVICE_VERSION' description='Service version for OpenTelemetry'
336
+ * - NOMAD_ALLOC_ID
337
+ - annotation=str required=False default='unknown-allocation-id' alias_priority=2 validation_alias='NOMAD_ALLOC_ID' description='Nomad allocation ID for OpenTelemetry'
338
+ * - OTEL_EXPORTER_OTLP_TRACES_INSECURE
339
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP traces'
340
+ * - OTEL_EXPORTER_OTLP_METRICS_INSECURE
341
+ - annotation=bool required=False default=True description='Use insecure connection for OTLP metrics'
342
+ * - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
343
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP traces endpoint. Overrides mesh configuration' examples=['localhost:4317']
344
+ * - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
345
+ - annotation=Union[str, NoneType] required=False default=None description='OTLP metrics endpoint. Overrides mesh configuration' examples=['localhost:4317']
346
+ * - OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
347
+ - 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']]
348
+ * - OTEL_PYTHON_FASTAPI_EXCLUDED_URLS
349
+ - annotation=str required=False default='health' description='Comma separated list of URLs to exclude from OpenTelemetry instrumentation in FastAPI.' examples=['client/.*/info,healthcheck']
350
+ * - SYSTEM_METRIC_INSTRUMENTATION_CONFIG
351
+ - 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']}]
352
+ * - ISB_USERNAME
353
+ - annotation=str required=False default='guest' description='Username for the interservice-bus.'
354
+ * - ISB_PASSWORD
355
+ - annotation=str required=False default='guest' description='Password for the interservice-bus.'
356
+ * - ISB_EXCHANGE
357
+ - annotation=str required=False default='master.direct.x' description='Exchange for the interservice-bus.'
358
+ * - ISB_QUEUE_TYPE
359
+ - annotation=str required=False default='classic' description='Queue type for the interservice-bus.' examples=['quorum', 'classic']
360
+ * - BUILD_VERSION
361
+ - annotation=str required=False default='dev' description='Fallback build version for workflow tasks.'
362
+ * - GQL_AUTH_TOKEN
363
+ - annotation=Union[str, NoneType] required=False default='dev' description='The auth token for the metadata-store-api.'
364
+ * - OBJECT_STORE_ACCESS_KEY
365
+ - annotation=Union[str, NoneType] required=False default=None description='The access key for the object store.'
366
+ * - OBJECT_STORE_SECRET_KEY
367
+ - annotation=Union[str, NoneType] required=False default=None description='The secret key for the object store.'
368
+ * - OBJECT_STORE_USE_SSL
369
+ - annotation=bool required=False default=False description='Whether to use SSL for the object store connection.'
370
+ * - MULTIPART_THRESHOLD
371
+ - annotation=Union[int, NoneType] required=False default=None description='Multipart threshold for the object store.'
372
+ * - S3_CLIENT_CONFIG
373
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 client configuration for the object store.'
374
+ * - S3_UPLOAD_CONFIG
375
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 upload configuration for the object store.'
376
+ * - S3_DOWNLOAD_CONFIG
377
+ - annotation=Union[dict, NoneType] required=False default=None description='S3 download configuration for the object store.'
378
+ * - GLOBUS_TRANSPORT_PARAMS
379
+ - annotation=dict required=False default_factory=dict description='Globus transfer parameters.'
380
+ * - GLOBUS_CLIENT_ID
381
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client ID for inbound/outbound transfers.'
382
+ * - GLOBUS_CLIENT_SECRET
383
+ - annotation=Union[str, NoneType] required=False default=None description='Globus client secret for inbound/outbound transfers.'
384
+ * - OBJECT_STORE_ENDPOINT
385
+ - annotation=Union[str, NoneType] required=False default=None description='Object store Globus Endpoint ID.'
386
+ * - SCRATCH_ENDPOINT
387
+ - annotation=Union[str, NoneType] required=False default=None description='Scratch Globus Endpoint ID.'
388
+ * - SCRATCH_BASE_PATH
389
+ - annotation=str required=False default='scratch/' description='Base path for scratch storage.'
390
+ * - SCRATCH_INVENTORY_DB_COUNT
391
+ - annotation=int required=False default=16 description='Number of databases in the scratch inventory (redis).'
392
+ * - DOCS_BASE_URL
393
+ - annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
303
394
 
304
395
  Development
305
396
  -----------
@@ -13,17 +13,17 @@ dkist_processing_vbi/parsers/vbi_l0_fits_access.py,sha256=yVvf4lUuI6Xa11tZzw9z5Y
13
13
  dkist_processing_vbi/parsers/vbi_l1_fits_access.py,sha256=sV23IrQvDtRGK6wQyJiNKv5OFcAcP-gboUY3JprxnFE,995
14
14
  dkist_processing_vbi/tasks/__init__.py,sha256=yJJe8-TitvAaMZaWtPVRES6Lgbcm7BqWJxb8XdlKpMw,489
15
15
  dkist_processing_vbi/tasks/assemble_movie.py,sha256=We647y3nA8T2UB--leAlYXCOsXFRssnU00W0nkZJVSI,4119
16
- dkist_processing_vbi/tasks/dark.py,sha256=EBQ2c6DqAoyf3R4Mg_0-2yoTkJjodlzVqjgVmlqCUxk,4109
17
- dkist_processing_vbi/tasks/gain.py,sha256=VfjbY0tE4NJxYWZiaZkwLKqKNK5x8XB16HPhOjUlXbE,6404
18
- dkist_processing_vbi/tasks/make_movie_frames.py,sha256=oy5tuiCzowGOEE98ulju9LlnNR6pO6NjS_GjTMcCHQU,14126
16
+ dkist_processing_vbi/tasks/dark.py,sha256=iMH0WWUsPBsBT2M70Nyh4OG7c-BYVrOcHWRVdYkYrQI,4052
17
+ dkist_processing_vbi/tasks/gain.py,sha256=o2pgeTV1PRkhC5ebI8iVYvKHvLP4xt6X2aJE5CnD1oI,6387
18
+ dkist_processing_vbi/tasks/make_movie_frames.py,sha256=0yMRA0PV3ECr2G1qC81H3k2hilfKR1pFBU-RMmqNEZc,14087
19
19
  dkist_processing_vbi/tasks/parse.py,sha256=cTEhWl_oTYa4zjVPXjkngdth15aGVuwNM2Z9jgJis2s,3072
20
- dkist_processing_vbi/tasks/process_summit_processed.py,sha256=ceh3BBc8hwtIaAAUfEpY4NDphnFbjzdNH8tmrr-IFFs,2555
21
- dkist_processing_vbi/tasks/quality_metrics.py,sha256=uAfUaA8Pk9hGAd9yESVECn9lVf-YvJ5_qK2EMyeFANY,2479
22
- dkist_processing_vbi/tasks/science.py,sha256=Bhmc_hqVwCfpWP1i1mRnYZCU0AQpkPKLX2pHXUx68xc,6332
20
+ dkist_processing_vbi/tasks/process_summit_processed.py,sha256=ur0PdXYQpjpfaY_zdDZWBvqUtl40sexM6orRrnupZI0,2556
21
+ dkist_processing_vbi/tasks/quality_metrics.py,sha256=5k5DQZ9tV_Emu9ycfB15BjgHuA62U9czkRLGfZNwKeM,2469
22
+ dkist_processing_vbi/tasks/science.py,sha256=fYlqxP5ozrEOygaPFHp-nU1ic-WyBacF3TvFSf2IxmE,6321
23
23
  dkist_processing_vbi/tasks/vbi_base.py,sha256=b0L4QOPtFKI15Q_2Ih1YC55g1nA8ESL_PNXmNtfWh30,805
24
24
  dkist_processing_vbi/tasks/write_l1.py,sha256=0-hxPDp_7t0LI7waHsKqOlEvbrm_sWaM6AHUrQR1LNY,6075
25
25
  dkist_processing_vbi/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- dkist_processing_vbi/tests/conftest.py,sha256=O-QXRtd7OGYyNp4aLre7ZPnhKs2xRBpa0mva3HkTV24,12204
26
+ dkist_processing_vbi/tests/conftest.py,sha256=zoYCA65n_HX08HR80oqiK5V9CY2vTmBVX6xTeiWJIVo,12822
27
27
  dkist_processing_vbi/tests/test_assemble_movie.py,sha256=JMD-Bc6vgrQUWTkq84CLffauU86YTzDhTEFI84p0CJc,2748
28
28
  dkist_processing_vbi/tests/test_dark.py,sha256=vAsVhgoK2W5FwPJmlxQ5MSG-Shldwh-KDbBZGgxJgGE,4464
29
29
  dkist_processing_vbi/tests/test_gain.py,sha256=TZuvc-rMJff6sKkWR7FvCJOrFGrio4Mmf7d8h21XPQI,4111
@@ -39,7 +39,7 @@ dkist_processing_vbi/tests/test_vbi_constants.py,sha256=hCgBjx5npz_DoQxaBS53eMz3
39
39
  dkist_processing_vbi/tests/test_workflows.py,sha256=yompfSNarR5poFtbY4U1TSsB10Ujm2Ns_8akqV1H09M,286
40
40
  dkist_processing_vbi/tests/test_write_l1.py,sha256=Oh3ZX-6yws3Cl3NTff_-0SpP93w8jIvHczFTsqB6tig,7934
41
41
  dkist_processing_vbi/tests/local_trial_workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
- dkist_processing_vbi/tests/local_trial_workflows/l0_to_l1.py,sha256=_83z0JPyEkIqwEPzKk86FVOktAdTioDNPG06791Dd1o,10786
42
+ dkist_processing_vbi/tests/local_trial_workflows/l0_to_l1.py,sha256=_rdys4_AQ6j-4l5S1HLoaLg-wiu81d_vX3vOUfw6Gr8,9967
43
43
  dkist_processing_vbi/workflows/__init__.py,sha256=gfKb3ezwhLoRAfVOxjRZNpNeBY8WONH8K0g2f3jCJZk,101
44
44
  dkist_processing_vbi/workflows/l0_processing.py,sha256=uYB0vb2x2oxjj6Pq1ZMo1qNAwi8s5K5H9Bp00aVpIyc,3016
45
45
  dkist_processing_vbi/workflows/summit_data_processing.py,sha256=6RcN6b4pFVmr_F6flEqjNDOKY5SbKn3e49q6UMbI0UQ,2846
@@ -58,7 +58,7 @@ docs/requirements.txt,sha256=Kbl_X4c7RQZw035YTeNB63We6I7pvXFU4T0Uflp2yDY,29
58
58
  docs/requirements_table.rst,sha256=lu3sizCldCfQZTkX-_KZfV07U7j6nq-ZgA_nimpwoFk,291
59
59
  docs/scientific_changelog.rst,sha256=01AWBSHg8zElnodCgAq-hMxhk9CkX5rtEENx4iz0sjI,300
60
60
  licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
61
- dkist_processing_vbi-1.24.1.dist-info/METADATA,sha256=RHsx9Wr1_MMnYnwkte1Ul9UdOOCT_IYFo9V4XnD8Oe8,21347
62
- dkist_processing_vbi-1.24.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
63
- dkist_processing_vbi-1.24.1.dist-info/top_level.txt,sha256=0haPknO-Vs_9QzeelcUGELlVwvJ28UeH5uQnBF2w5nQ,45
64
- dkist_processing_vbi-1.24.1.dist-info/RECORD,,
61
+ dkist_processing_vbi-1.25.1.dist-info/METADATA,sha256=gDjTQzxqUY-9c-LTMrknrpmbVXrPiNnoJsmRCTR0z5M,28548
62
+ dkist_processing_vbi-1.25.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
63
+ dkist_processing_vbi-1.25.1.dist-info/top_level.txt,sha256=0haPknO-Vs_9QzeelcUGELlVwvJ28UeH5uQnBF2w5nQ,45
64
+ dkist_processing_vbi-1.25.1.dist-info/RECORD,,