dkist-processing-common 11.7.1rc1__py3-none-any.whl → 11.8.0rc1__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.
- changelog/245.feature.1.rst +1 -0
- dkist_processing_common/models/constants.py +333 -21
- dkist_processing_common/models/fits_access.py +16 -25
- dkist_processing_common/parsers/average_bud.py +48 -0
- dkist_processing_common/parsers/experiment_id_bud.py +8 -4
- dkist_processing_common/parsers/id_bud.py +35 -19
- dkist_processing_common/parsers/l0_fits_access.py +3 -3
- dkist_processing_common/parsers/l1_fits_access.py +47 -21
- dkist_processing_common/parsers/near_bud.py +4 -4
- dkist_processing_common/parsers/observing_program_id_bud.py +24 -0
- dkist_processing_common/parsers/proposal_id_bud.py +11 -5
- dkist_processing_common/parsers/single_value_single_key_flower.py +0 -1
- dkist_processing_common/parsers/time.py +147 -27
- dkist_processing_common/tasks/mixin/quality/_metrics.py +6 -4
- dkist_processing_common/tasks/parse_l0_input_data.py +246 -1
- dkist_processing_common/tasks/trial_catalog.py +38 -0
- dkist_processing_common/tests/mock_metadata_store.py +39 -0
- dkist_processing_common/tests/test_fits_access.py +19 -44
- dkist_processing_common/tests/test_input_dataset.py +1 -37
- dkist_processing_common/tests/test_parse_l0_input_data.py +45 -5
- dkist_processing_common/tests/test_quality_mixin.py +3 -11
- dkist_processing_common/tests/test_stems.py +162 -10
- dkist_processing_common/tests/test_task_parsing.py +6 -6
- dkist_processing_common/tests/test_trial_catalog.py +72 -2
- {dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/METADATA +5 -5
- {dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/RECORD +28 -26
- changelog/271.misc.rst +0 -1
- {dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/WHEEL +0 -0
- {dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -6,16 +6,22 @@ from astropy.io import fits
|
|
|
6
6
|
|
|
7
7
|
from dkist_processing_common.models.constants import BudName
|
|
8
8
|
from dkist_processing_common.models.fits_access import FitsAccessBase
|
|
9
|
+
from dkist_processing_common.models.fits_access import MetadataKey
|
|
9
10
|
from dkist_processing_common.models.tags import StemName
|
|
10
11
|
from dkist_processing_common.models.task_name import TaskName
|
|
12
|
+
from dkist_processing_common.parsers.average_bud import TaskAverageBud
|
|
11
13
|
from dkist_processing_common.parsers.cs_step import CSStepFlower
|
|
12
14
|
from dkist_processing_common.parsers.cs_step import NumCSStepBud
|
|
13
15
|
from dkist_processing_common.parsers.dsps_repeat import DspsRepeatNumberFlower
|
|
14
16
|
from dkist_processing_common.parsers.dsps_repeat import TotalDspsRepeatsBud
|
|
15
17
|
from dkist_processing_common.parsers.experiment_id_bud import ContributingExperimentIdsBud
|
|
16
18
|
from dkist_processing_common.parsers.experiment_id_bud import ExperimentIdBud
|
|
19
|
+
from dkist_processing_common.parsers.id_bud import TaskContributingIdsBud
|
|
17
20
|
from dkist_processing_common.parsers.near_bud import NearFloatBud
|
|
18
21
|
from dkist_processing_common.parsers.near_bud import TaskNearFloatBud
|
|
22
|
+
from dkist_processing_common.parsers.observing_program_id_bud import (
|
|
23
|
+
TaskContributingObservingProgramExecutionIdsBud,
|
|
24
|
+
)
|
|
19
25
|
from dkist_processing_common.parsers.proposal_id_bud import ContributingProposalIdsBud
|
|
20
26
|
from dkist_processing_common.parsers.proposal_id_bud import ProposalIdBud
|
|
21
27
|
from dkist_processing_common.parsers.retarder import RetarderNameBud
|
|
@@ -31,9 +37,11 @@ from dkist_processing_common.parsers.time import MaximumCadenceBud
|
|
|
31
37
|
from dkist_processing_common.parsers.time import MinimumCadenceBud
|
|
32
38
|
from dkist_processing_common.parsers.time import ObsIpStartTimeBud
|
|
33
39
|
from dkist_processing_common.parsers.time import ReadoutExpTimeFlower
|
|
40
|
+
from dkist_processing_common.parsers.time import TaskDateBeginBud
|
|
41
|
+
from dkist_processing_common.parsers.time import TaskDatetimeBudBase
|
|
34
42
|
from dkist_processing_common.parsers.time import TaskExposureTimesBud
|
|
35
43
|
from dkist_processing_common.parsers.time import TaskReadoutExpTimesBud
|
|
36
|
-
from dkist_processing_common.parsers.time import
|
|
44
|
+
from dkist_processing_common.parsers.time import TaskRoundTimeBudBase
|
|
37
45
|
from dkist_processing_common.parsers.time import VarianceCadenceBud
|
|
38
46
|
from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
|
|
39
47
|
from dkist_processing_common.parsers.unique_bud import UniqueBud
|
|
@@ -46,6 +54,7 @@ class FitsReaderMetadataKey(StrEnum):
|
|
|
46
54
|
near_thing = "near"
|
|
47
55
|
proposal_id = "ID___013"
|
|
48
56
|
experiment_id = "ID___012"
|
|
57
|
+
observing_program_execution_id = "ID___008"
|
|
49
58
|
ip_task_type = "DKIST004"
|
|
50
59
|
ip_start_time = "DKIST011"
|
|
51
60
|
fpa_exposure_time_ms = "XPOSURE"
|
|
@@ -66,12 +75,38 @@ class FitsReaderMetadataKey(StrEnum):
|
|
|
66
75
|
class FitsReader(FitsAccessBase):
|
|
67
76
|
def __init__(self, hdu, name):
|
|
68
77
|
super().__init__(hdu, name)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
self.
|
|
72
|
-
FitsReaderMetadataKey.roundable_time, optional=True, default=0.0
|
|
73
|
-
)
|
|
78
|
+
self.thing_id: int = self.header.get(FitsReaderMetadataKey.thing_id)
|
|
79
|
+
self.constant_thing: int = self.header.get(FitsReaderMetadataKey.constant_thing)
|
|
80
|
+
self.near_thing: float = self.header.get(FitsReaderMetadataKey.near_thing)
|
|
74
81
|
self.name = name
|
|
82
|
+
self.proposal_id: str = self.header.get(FitsReaderMetadataKey.proposal_id)
|
|
83
|
+
self.experiment_id: str = self.header.get(FitsReaderMetadataKey.experiment_id)
|
|
84
|
+
self.observing_program_execution_id: str = self.header.get(
|
|
85
|
+
FitsReaderMetadataKey.observing_program_execution_id
|
|
86
|
+
)
|
|
87
|
+
self.ip_task_type: str = self.header.get(FitsReaderMetadataKey.ip_task_type)
|
|
88
|
+
self.ip_start_time: str = self.header.get(FitsReaderMetadataKey.ip_start_time)
|
|
89
|
+
self.fpa_exposure_time_ms: float = self.header.get(
|
|
90
|
+
FitsReaderMetadataKey.fpa_exposure_time_ms
|
|
91
|
+
)
|
|
92
|
+
self.sensor_readout_exposure_time_ms: float = self.header.get(
|
|
93
|
+
FitsReaderMetadataKey.sensor_readout_exposure_time_ms
|
|
94
|
+
)
|
|
95
|
+
self.num_raw_frames_per_fpa: int = self.header.get(
|
|
96
|
+
FitsReaderMetadataKey.num_raw_frames_per_fpa
|
|
97
|
+
)
|
|
98
|
+
self.num_dsps_repeats: int = self.header.get(FitsReaderMetadataKey.num_dsps_repeats)
|
|
99
|
+
self.current_dsps_repeat: int = self.header.get(FitsReaderMetadataKey.current_dsps_repeat)
|
|
100
|
+
self.time_obs: str = self.header.get(FitsReaderMetadataKey.time_obs)
|
|
101
|
+
self.gos_level3_status: str = self.header.get(FitsReaderMetadataKey.gos_level3_status)
|
|
102
|
+
self.gos_level3_lamp_status: str = self.header.get(
|
|
103
|
+
FitsReaderMetadataKey.gos_level3_lamp_status
|
|
104
|
+
)
|
|
105
|
+
self.gos_level0_status: str = self.header.get(FitsReaderMetadataKey.gos_level0_status)
|
|
106
|
+
self.gos_retarder_status: str = self.header.get(FitsReaderMetadataKey.gos_retarder_status)
|
|
107
|
+
self.gos_polarizer_status: str = self.header.get(FitsReaderMetadataKey.gos_polarizer_status)
|
|
108
|
+
self.wavelength: str = self.header.get(FitsReaderMetadataKey.wavelength)
|
|
109
|
+
self.roundable_time: float = self.header.get(FitsReaderMetadataKey.roundable_time, 0.0)
|
|
75
110
|
|
|
76
111
|
|
|
77
112
|
@pytest.fixture()
|
|
@@ -85,6 +120,7 @@ def basic_header_objs():
|
|
|
85
120
|
"DKIST004": "observe",
|
|
86
121
|
"ID___012": "experiment_id_1",
|
|
87
122
|
"ID___013": "proposal_id_1",
|
|
123
|
+
"ID___008": "observing_program_execution_id_1",
|
|
88
124
|
"XPOSURE": 0.0013000123,
|
|
89
125
|
"TEXPOSUR": 10.0,
|
|
90
126
|
"NSUMEXP": 3,
|
|
@@ -103,6 +139,7 @@ def basic_header_objs():
|
|
|
103
139
|
"DKIST004": "observe",
|
|
104
140
|
"ID___012": "experiment_id_1",
|
|
105
141
|
"ID___013": "proposal_id_1",
|
|
142
|
+
"ID___008": "observing_program_execution_id_2",
|
|
106
143
|
"XPOSURE": 0.0013000987,
|
|
107
144
|
"TEXPOSUR": 10.0,
|
|
108
145
|
"NSUMEXP": 3,
|
|
@@ -122,6 +159,7 @@ def basic_header_objs():
|
|
|
122
159
|
"DKIST004": "dark",
|
|
123
160
|
"ID___012": "experiment_id_2",
|
|
124
161
|
"ID___013": "proposal_id_2",
|
|
162
|
+
"ID___008": "observing_program_execution_id_2",
|
|
125
163
|
"XPOSURE": 12.345,
|
|
126
164
|
"TEXPOSUR": 1.123456789,
|
|
127
165
|
"NSUMEXP": 1,
|
|
@@ -142,6 +180,7 @@ def basic_header_objs():
|
|
|
142
180
|
"DKIST004": "observe",
|
|
143
181
|
"ID___012": "experiment_id_1",
|
|
144
182
|
"ID___013": "proposal_id_1",
|
|
183
|
+
"ID___008": "observing_program_execution_id_1",
|
|
145
184
|
"XPOSURE": 100.0,
|
|
146
185
|
"TEXPOSUR": 11.0,
|
|
147
186
|
"NSUMEXP": 4,
|
|
@@ -157,6 +196,7 @@ def basic_header_objs():
|
|
|
157
196
|
{
|
|
158
197
|
"DKIST004": "gain",
|
|
159
198
|
"ID___013": "proposal_id_1",
|
|
199
|
+
"ID___008": "observing_program_execution_id_1",
|
|
160
200
|
"id_key": 0,
|
|
161
201
|
"constant": 6.28,
|
|
162
202
|
"near": 1.23,
|
|
@@ -386,6 +426,38 @@ def test_single_value_single_key_flower(basic_header_objs):
|
|
|
386
426
|
assert petals[2].keys == ["thing2"]
|
|
387
427
|
|
|
388
428
|
|
|
429
|
+
@pytest.mark.parametrize(
|
|
430
|
+
"ip_task_type, expected_value",
|
|
431
|
+
[
|
|
432
|
+
pytest.param("dark", (1655503202.0,), id="single_task_type"),
|
|
433
|
+
pytest.param(["dark", "gain"], (1655503202.0, 1655503203.0), id="task_type_list"),
|
|
434
|
+
pytest.param(
|
|
435
|
+
["dark", "gain", "observe"],
|
|
436
|
+
(1655503200.0, 1655503201.0, 1655503202.0, 1655503203.0, 1655503203.0),
|
|
437
|
+
id="task_type_list2",
|
|
438
|
+
),
|
|
439
|
+
],
|
|
440
|
+
)
|
|
441
|
+
def test_task_datetime_base_bud(basic_header_objs, ip_task_type, expected_value):
|
|
442
|
+
"""
|
|
443
|
+
Given: A set of headers with a datetime value that does not need to be rounded
|
|
444
|
+
When: Ingesting headers with a `TaskDatetimeBudBase` bud and asking for the value
|
|
445
|
+
Then: The bud's value is the list of datetimes in seconds
|
|
446
|
+
"""
|
|
447
|
+
bud = TaskDatetimeBudBase(
|
|
448
|
+
stem_name="datetimes",
|
|
449
|
+
metadata_key=FitsReaderMetadataKey.time_obs,
|
|
450
|
+
ip_task_types=ip_task_type,
|
|
451
|
+
)
|
|
452
|
+
assert bud.stem_name == "datetimes"
|
|
453
|
+
for fo in basic_header_objs:
|
|
454
|
+
key = fo.name
|
|
455
|
+
bud.update(key, fo)
|
|
456
|
+
|
|
457
|
+
petal = list(bud.petals)
|
|
458
|
+
assert petal[0].value == expected_value
|
|
459
|
+
|
|
460
|
+
|
|
389
461
|
@pytest.mark.parametrize(
|
|
390
462
|
"ip_task_type, expected_value",
|
|
391
463
|
[
|
|
@@ -394,13 +466,13 @@ def test_single_value_single_key_flower(basic_header_objs):
|
|
|
394
466
|
pytest.param(["dark", "gain", "observe"], (0.0, 2.34), id="task_type_list2"),
|
|
395
467
|
],
|
|
396
468
|
)
|
|
397
|
-
def
|
|
469
|
+
def test_task_round_time_base_bud(basic_header_objs, ip_task_type, expected_value):
|
|
398
470
|
"""
|
|
399
|
-
Given: A set of headers with a value that needs to be rounded
|
|
400
|
-
When: Ingesting headers with a `
|
|
471
|
+
Given: A set of headers with a time value that needs to be rounded
|
|
472
|
+
When: Ingesting headers with a `TaskRoundTimeBudBase` bud and asking for the value
|
|
401
473
|
Then: The bud's value is the header constant value
|
|
402
474
|
"""
|
|
403
|
-
bud =
|
|
475
|
+
bud = TaskRoundTimeBudBase(
|
|
404
476
|
stem_name="rounded_time", metadata_key="roundable_time", ip_task_types=ip_task_type
|
|
405
477
|
)
|
|
406
478
|
assert bud.stem_name == "rounded_time"
|
|
@@ -522,6 +594,50 @@ def test_contributing_experiment_ids_bud(basic_header_objs):
|
|
|
522
594
|
assert sorted(list(petal[0].value)) == ["experiment_id_1", "experiment_id_2"]
|
|
523
595
|
|
|
524
596
|
|
|
597
|
+
def test_task_contributing_ids_bud(basic_header_objs):
|
|
598
|
+
"""
|
|
599
|
+
Given: A set of headers with experiment ID values for different tasks
|
|
600
|
+
When: Ingesting the headers with a TaskContributingIdsBud for the dark task
|
|
601
|
+
Then: The Bud's petal is just the experiment ID for the dark task
|
|
602
|
+
"""
|
|
603
|
+
bud = TaskContributingIdsBud(
|
|
604
|
+
constant_name=BudName.experiment_id,
|
|
605
|
+
metadata_key=MetadataKey.experiment_id,
|
|
606
|
+
ip_task_types=TaskName.dark,
|
|
607
|
+
)
|
|
608
|
+
assert bud.stem_name == BudName.experiment_id.value
|
|
609
|
+
for fo in basic_header_objs:
|
|
610
|
+
key = fo.name
|
|
611
|
+
bud.update(key, fo)
|
|
612
|
+
|
|
613
|
+
petal = list(bud.petals)
|
|
614
|
+
assert len(petal) == 1
|
|
615
|
+
assert sorted(list(petal[0].value)) == ["experiment_id_2"]
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
def test_task_contributing_observing_program_execution_ids_bud(basic_header_objs):
|
|
619
|
+
"""
|
|
620
|
+
Given: A set of headers with observing program execution ID values for different tasks
|
|
621
|
+
When: Ingesting the headers with a TaskContributingObservingProgramExecutionIdsBud for a task type
|
|
622
|
+
Then: The Bud's petal is the observing program execution IDs for the that task type
|
|
623
|
+
"""
|
|
624
|
+
bud = TaskContributingObservingProgramExecutionIdsBud(
|
|
625
|
+
constant_name="NOT_A_REAL_BUD",
|
|
626
|
+
ip_task_types=TaskName.observe,
|
|
627
|
+
)
|
|
628
|
+
assert bud.stem_name == "NOT_A_REAL_BUD"
|
|
629
|
+
for fo in basic_header_objs:
|
|
630
|
+
key = fo.name
|
|
631
|
+
bud.update(key, fo)
|
|
632
|
+
|
|
633
|
+
petal = list(bud.petals)
|
|
634
|
+
assert len(petal) == 1
|
|
635
|
+
assert sorted(list(petal[0].value)) == [
|
|
636
|
+
"observing_program_execution_id_1",
|
|
637
|
+
"observing_program_execution_id_2",
|
|
638
|
+
]
|
|
639
|
+
|
|
640
|
+
|
|
525
641
|
def test_exp_time_flower(basic_header_objs):
|
|
526
642
|
"""
|
|
527
643
|
Given: A set of filepaths and associated headers with XPOSURE keywords
|
|
@@ -783,6 +899,23 @@ def test_variance_cadence_bud(basic_header_objs):
|
|
|
783
899
|
assert petal[0].value == 0.25
|
|
784
900
|
|
|
785
901
|
|
|
902
|
+
def test_task_date_begin_bud(basic_header_objs):
|
|
903
|
+
"""
|
|
904
|
+
Given: A set of filepaths and associated headers with time_obs metadata keys
|
|
905
|
+
When: Ingesting with the TaskDateBeginBud
|
|
906
|
+
Then: The correct value is returned
|
|
907
|
+
"""
|
|
908
|
+
bud = TaskDateBeginBud(constant_name=BudName.dark_date_begin, ip_task_types=TaskName.dark)
|
|
909
|
+
assert bud.stem_name == BudName.dark_date_begin.value
|
|
910
|
+
for fo in basic_header_objs:
|
|
911
|
+
key = fo.name
|
|
912
|
+
bud.update(key, fo)
|
|
913
|
+
|
|
914
|
+
petal = list(bud.petals)
|
|
915
|
+
assert len(petal) == 1
|
|
916
|
+
assert petal[0].value == "2022-06-17T22:00:02.000000"
|
|
917
|
+
|
|
918
|
+
|
|
786
919
|
def test_observe_wavelength_bud(basic_header_objs):
|
|
787
920
|
"""
|
|
788
921
|
Given: A set of headers with wavelength values
|
|
@@ -935,4 +1068,23 @@ def test_retarder_name_bud_error(bad_polcal_header_objs):
|
|
|
935
1068
|
_ = bud.bud
|
|
936
1069
|
|
|
937
1070
|
|
|
1071
|
+
def test_task_average_bud(basic_header_objs):
|
|
1072
|
+
"""
|
|
1073
|
+
Given: A set of headers with a differently valued header key
|
|
1074
|
+
When: Ingesting headers with an TaskAverageBud and asking for the value
|
|
1075
|
+
Then: The bud's value is the average of the header values of that task type
|
|
1076
|
+
"""
|
|
1077
|
+
bud = TaskAverageBud(
|
|
1078
|
+
constant_name="average", metadata_key="near_thing", ip_task_types="observe"
|
|
1079
|
+
)
|
|
1080
|
+
assert bud.stem_name == "average"
|
|
1081
|
+
for fo in basic_header_objs:
|
|
1082
|
+
key = fo.name
|
|
1083
|
+
bud.update(key, fo)
|
|
1084
|
+
|
|
1085
|
+
petal = list(bud.petals)
|
|
1086
|
+
assert len(petal) == 1
|
|
1087
|
+
assert round(petal[0].value, 3) == 1.227
|
|
1088
|
+
|
|
1089
|
+
|
|
938
1090
|
# TODO: test new stem types that have been added to parse_l0_input_data
|
|
@@ -28,12 +28,12 @@ class DummyFitsAccess(FitsAccessBase):
|
|
|
28
28
|
auto_squeeze: bool = False, # Because L1 data should always have the right form, right?
|
|
29
29
|
):
|
|
30
30
|
super().__init__(hdu=hdu, name=name, auto_squeeze=auto_squeeze)
|
|
31
|
-
self.
|
|
32
|
-
self.
|
|
33
|
-
self.
|
|
34
|
-
self.
|
|
35
|
-
self.
|
|
36
|
-
self.
|
|
31
|
+
self.ip_task_type = self.header[DummyMetadataKey.ip_task_type]
|
|
32
|
+
self.gos_level3_status = self.header[DummyMetadataKey.gos_level3_status]
|
|
33
|
+
self.gos_level3_lamp_status = self.header[DummyMetadataKey.gos_level3_lamp_status]
|
|
34
|
+
self.gos_level0_status = self.header[DummyMetadataKey.gos_level0_status]
|
|
35
|
+
self.gos_retarder_status = self.header[DummyMetadataKey.gos_retarder_status]
|
|
36
|
+
self.gos_polarizer_status = self.header[DummyMetadataKey.gos_polarizer_status]
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
@pytest.fixture
|
|
@@ -12,14 +12,30 @@ from sqids import Sqids
|
|
|
12
12
|
|
|
13
13
|
from dkist_processing_common._util.scratch import WorkflowFileSystem
|
|
14
14
|
from dkist_processing_common.codecs.asdf import asdf_decoder
|
|
15
|
+
from dkist_processing_common.codecs.basemodel import basemodel_encoder
|
|
15
16
|
from dkist_processing_common.codecs.bytes import bytes_decoder
|
|
16
17
|
from dkist_processing_common.codecs.fits import fits_hdulist_encoder
|
|
17
18
|
from dkist_processing_common.codecs.json import json_decoder
|
|
18
19
|
from dkist_processing_common.codecs.quality import quality_data_encoder
|
|
20
|
+
from dkist_processing_common.models.input_dataset import InputDatasetParameter
|
|
21
|
+
from dkist_processing_common.models.input_dataset import InputDatasetPartDocumentList
|
|
19
22
|
from dkist_processing_common.models.tags import Tag
|
|
20
23
|
from dkist_processing_common.tasks import CreateTrialAsdf
|
|
21
24
|
from dkist_processing_common.tasks import CreateTrialDatasetInventory
|
|
22
25
|
from dkist_processing_common.tasks import CreateTrialQualityReport
|
|
26
|
+
from dkist_processing_common.tests.mock_metadata_store import input_dataset_parameters_part_factory
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@pytest.fixture()
|
|
30
|
+
def mock_input_dataset_parts() -> InputDatasetPartDocumentList:
|
|
31
|
+
"""An InputDatasetPartDocumentList with two parameters, each with one value and a date."""
|
|
32
|
+
raw = input_dataset_parameters_part_factory(
|
|
33
|
+
parameter_count=2,
|
|
34
|
+
parameter_value_count=1,
|
|
35
|
+
has_date=True,
|
|
36
|
+
has_file=False,
|
|
37
|
+
)
|
|
38
|
+
return InputDatasetPartDocumentList.model_validate({"doc_list": raw})
|
|
23
39
|
|
|
24
40
|
|
|
25
41
|
@pytest.fixture()
|
|
@@ -41,6 +57,24 @@ def scratch_with_l1_frames(recipe_run_id, tmp_path) -> WorkflowFileSystem:
|
|
|
41
57
|
scratch.write(
|
|
42
58
|
file_obj, tags=[Tag.output(), Tag.frame()], relative_path=f"{uuid4().hex}.dat"
|
|
43
59
|
)
|
|
60
|
+
|
|
61
|
+
return scratch
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@pytest.fixture()
|
|
65
|
+
def scratch_with_l1_frames_and_parameters(
|
|
66
|
+
scratch_with_l1_frames, mock_input_dataset_parts
|
|
67
|
+
) -> WorkflowFileSystem:
|
|
68
|
+
"""Scratch instance for a recipe run id with tagged L1 frames and input parameters."""
|
|
69
|
+
scratch = scratch_with_l1_frames
|
|
70
|
+
|
|
71
|
+
# Write validated Pydantic model bytes expected by InputDatasetPartDocumentList
|
|
72
|
+
file_obj = basemodel_encoder(mock_input_dataset_parts)
|
|
73
|
+
scratch.write(
|
|
74
|
+
file_obj,
|
|
75
|
+
tags=Tag.input_dataset_parameters(),
|
|
76
|
+
relative_path=f"{uuid4().hex}.json",
|
|
77
|
+
)
|
|
44
78
|
return scratch
|
|
45
79
|
|
|
46
80
|
|
|
@@ -85,6 +119,22 @@ def create_trial_asdf_task(
|
|
|
85
119
|
task._purge()
|
|
86
120
|
|
|
87
121
|
|
|
122
|
+
@pytest.fixture(scope="function")
|
|
123
|
+
def create_trial_asdf_task_with_params(
|
|
124
|
+
recipe_run_id, tmp_path, scratch_with_l1_frames_and_parameters, fake_constants_db
|
|
125
|
+
) -> CreateTrialAsdf:
|
|
126
|
+
"""An instance of CreateTrialAsdf with L1 frames and input parameters tagged in scratch."""
|
|
127
|
+
task = CreateTrialAsdf(
|
|
128
|
+
recipe_run_id=recipe_run_id,
|
|
129
|
+
workflow_name="trial_asdf",
|
|
130
|
+
workflow_version="trial_asdf_version",
|
|
131
|
+
)
|
|
132
|
+
task.scratch = scratch_with_l1_frames_and_parameters
|
|
133
|
+
task.constants._update(fake_constants_db)
|
|
134
|
+
yield task
|
|
135
|
+
task._purge()
|
|
136
|
+
|
|
137
|
+
|
|
88
138
|
@pytest.fixture()
|
|
89
139
|
def create_trial_quality_report_task(
|
|
90
140
|
recipe_run_id, tmp_path, fake_constants_db
|
|
@@ -143,25 +193,32 @@ def test_create_trial_dataset_inventory(create_trial_dataset_inventory_task):
|
|
|
143
193
|
assert len(inventory) > 20 # a bunch
|
|
144
194
|
|
|
145
195
|
|
|
146
|
-
|
|
196
|
+
@pytest.mark.parametrize("with_params", [False, True], ids=["no_params", "with_params"])
|
|
197
|
+
def test_create_trial_asdf(with_params, request, recipe_run_id, mock_input_dataset_parts):
|
|
147
198
|
"""
|
|
148
199
|
:Given: An instance of CreateTrialAsdf with L1 frames tagged in scratch
|
|
149
200
|
:When: CreateTrialAsdf is run
|
|
150
201
|
:Then: An asdf file for the dataset is tagged in scratch
|
|
151
202
|
"""
|
|
152
|
-
task =
|
|
203
|
+
task = request.getfixturevalue(
|
|
204
|
+
"create_trial_asdf_task_with_params" if with_params else "create_trial_asdf_task"
|
|
205
|
+
)
|
|
153
206
|
# When
|
|
154
207
|
task()
|
|
208
|
+
|
|
155
209
|
# Then
|
|
156
210
|
asdf_tags = [Tag.output(), Tag.asdf()]
|
|
157
211
|
filepaths = list(task.scratch.find_all(tags=asdf_tags))
|
|
158
212
|
assert len(filepaths) == 1
|
|
159
213
|
dataset_id = Sqids(min_length=6, alphabet=ascii_uppercase).encode([recipe_run_id])
|
|
160
214
|
assert filepaths[0].name == f"INSTRUMENT_L1_20240416T160000_{dataset_id}_metadata.asdf"
|
|
215
|
+
|
|
161
216
|
results = list(task.read(tags=asdf_tags, decoder=asdf_decoder))
|
|
162
217
|
assert len(results) == 1
|
|
218
|
+
|
|
163
219
|
tree = results[0]
|
|
164
220
|
assert isinstance(tree, dict)
|
|
221
|
+
|
|
165
222
|
for file_name in tree["dataset"].files.filenames:
|
|
166
223
|
# This is a slightly better than check that `not Path(file_name).is_absolute()` because it confirms
|
|
167
224
|
# we've correctly stripped the path of *all* parents (not just those that start at root).
|
|
@@ -169,6 +226,19 @@ def test_create_trial_asdf(create_trial_asdf_task, recipe_run_id):
|
|
|
169
226
|
# `scratch.workflow_base_path`
|
|
170
227
|
assert Path(file_name).name == file_name
|
|
171
228
|
|
|
229
|
+
# Only check parameters when present
|
|
230
|
+
ds = tree["dataset"]
|
|
231
|
+
assert "parameters" in ds.meta
|
|
232
|
+
parameters = ds.meta["parameters"]
|
|
233
|
+
assert isinstance(parameters, list)
|
|
234
|
+
if with_params:
|
|
235
|
+
assert parameters, f"ASDF tree must include input parameters: {parameters}"
|
|
236
|
+
assert len(parameters) == len(mock_input_dataset_parts.doc_list)
|
|
237
|
+
for param in parameters:
|
|
238
|
+
assert InputDatasetParameter.model_validate(param) in mock_input_dataset_parts.doc_list
|
|
239
|
+
else:
|
|
240
|
+
assert ds.meta["parameters"] == []
|
|
241
|
+
|
|
172
242
|
|
|
173
243
|
def test_create_trial_quality_report(create_trial_quality_report_task):
|
|
174
244
|
"""
|
{dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-common
|
|
3
|
-
Version: 11.
|
|
3
|
+
Version: 11.8.0rc1
|
|
4
4
|
Summary: Common task classes used by the DKIST science data processing pipelines
|
|
5
5
|
Author-email: NSO / AURA <dkistdc@nso.edu>
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -21,8 +21,8 @@ Requires-Dist: dkist-processing-core==6.0.0
|
|
|
21
21
|
Requires-Dist: dkist-processing-pac<4.0,>=3.1
|
|
22
22
|
Requires-Dist: dkist-service-configuration<5.0,>=4.1.7
|
|
23
23
|
Requires-Dist: dkist-spectral-lines<4.0,>=3.0.0
|
|
24
|
-
Requires-Dist: solar-wavelength-calibration<
|
|
25
|
-
Requires-Dist: globus-sdk
|
|
24
|
+
Requires-Dist: solar-wavelength-calibration<2.0,>=1.0
|
|
25
|
+
Requires-Dist: globus-sdk<4.0.0,>=3.12.0
|
|
26
26
|
Requires-Dist: gqlclient[pydantic]==1.2.3
|
|
27
27
|
Requires-Dist: sqids==0.5.1
|
|
28
28
|
Requires-Dist: matplotlib>=3.4
|
|
@@ -57,9 +57,9 @@ Requires-Dist: pytest; extra == "docs"
|
|
|
57
57
|
Requires-Dist: towncrier<22.12.0; extra == "docs"
|
|
58
58
|
Requires-Dist: dkist-sphinx-theme; extra == "docs"
|
|
59
59
|
Provides-Extra: inventory
|
|
60
|
-
Requires-Dist: dkist-inventory<2.0,>=1.
|
|
60
|
+
Requires-Dist: dkist-inventory<2.0,>=1.11.0; extra == "inventory"
|
|
61
61
|
Provides-Extra: asdf
|
|
62
|
-
Requires-Dist: dkist-inventory[asdf]<2.0,>=1.
|
|
62
|
+
Requires-Dist: dkist-inventory[asdf]<2.0,>=1.11.0; extra == "asdf"
|
|
63
63
|
Provides-Extra: quality
|
|
64
64
|
Requires-Dist: dkist-quality<3.0,>=2.0.0; extra == "quality"
|
|
65
65
|
|
{dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/RECORD
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
changelog/.gitempty,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
changelog/
|
|
2
|
+
changelog/245.feature.1.rst,sha256=BBwCgALdFPqX7ZI0Uj-z9piaGplVKbgErZ6LuMH3qbA,148
|
|
3
3
|
dkist_processing_common/__init__.py,sha256=GQ9EBnYhkOnt-qODclAoLS_g5YVhurxfg1tjVtI9rDI,320
|
|
4
4
|
dkist_processing_common/config.py,sha256=kkFm-Q6jGGoV3Zdf3PSfk3xNYd2vSH0J2R8dBBav3Og,5218
|
|
5
5
|
dkist_processing_common/manual.py,sha256=bIVVyLsbXMh-g_2L3kGROL-1TtJe0_XviHsp7Br31x8,7023
|
|
@@ -22,9 +22,9 @@ dkist_processing_common/codecs/str.py,sha256=Xqt5k8IhLc95KiiNiFwB1JWcVVc6T8AfcLr
|
|
|
22
22
|
dkist_processing_common/fonts/Lato-Regular.ttf,sha256=1jbkaDIx-THtoiLViOlE0IK_0726AvkovuRhwPGFslE,656568
|
|
23
23
|
dkist_processing_common/fonts/__init__.py,sha256=hBvZRtkoGRPlNDWCK-ZePXdSIlThCcjwBDfYaamVgAw,101
|
|
24
24
|
dkist_processing_common/models/__init__.py,sha256=6LMqemdzVZ87fRrpAsbEnTtWZ02_Gu_oajsUlwGRH_Q,74
|
|
25
|
-
dkist_processing_common/models/constants.py,sha256=
|
|
25
|
+
dkist_processing_common/models/constants.py,sha256=VDYPfrZtmBDNaWc3EvbpX7Hs87wJ6cA2BqZQJhb2B1Q,19773
|
|
26
26
|
dkist_processing_common/models/dkist_location.py,sha256=6Nk0wvv4R8ptlrV7BXon7abq4YLvmTdUmPsDN5G8nWc,971
|
|
27
|
-
dkist_processing_common/models/fits_access.py,sha256=
|
|
27
|
+
dkist_processing_common/models/fits_access.py,sha256=imKqL4-_g6gTR-IeIjZ6qkMhQX3JujdrKFrTd9gOXnw,5605
|
|
28
28
|
dkist_processing_common/models/flower_pot.py,sha256=_J7DwHM8u5kQfdPCpk5pUmALtLrM1L_h-x8JW5BSjXA,5129
|
|
29
29
|
dkist_processing_common/models/fried_parameter.py,sha256=ro_H2Eo3I88lRf1wJjZfTc_XOjhgLt4whIQR_sjAFbM,1609
|
|
30
30
|
dkist_processing_common/models/graphql.py,sha256=oSEcdVsVRytnIDEORLs4b6r3C2Lr7gqEEMHu82zpOOg,5912
|
|
@@ -39,19 +39,21 @@ dkist_processing_common/models/task_name.py,sha256=uAl7qTK4Xx1nqPAhNAe5nAXqxwPwQ
|
|
|
39
39
|
dkist_processing_common/models/telemetry.py,sha256=XVcLNgHCZsP9L7oYiklyLUoqQtWt_xjEkuf70Kbudz4,839
|
|
40
40
|
dkist_processing_common/models/wavelength.py,sha256=4UhRVoNvCHZitXo5S1oRdewadbmGfmDK6wetMV06POA,967
|
|
41
41
|
dkist_processing_common/parsers/__init__.py,sha256=XJQzHtPb78F6-qXXKXjyztc0x-aHVlgv1C_l4dR88tI,67
|
|
42
|
+
dkist_processing_common/parsers/average_bud.py,sha256=86zgcgLdDd8_Stf4RhZ9wfsmeuLXLA1jc-zcPHAz4YQ,1454
|
|
42
43
|
dkist_processing_common/parsers/cs_step.py,sha256=rL2gdstKEV5aqdPDs3a5EuUaOT_6YXDJVqIPIVKSw8M,6450
|
|
43
44
|
dkist_processing_common/parsers/dsps_repeat.py,sha256=Jg6oI9-PtFQbQHbGul6_eiRzBKr0Z2HIGOitG0G5CD4,1642
|
|
44
|
-
dkist_processing_common/parsers/experiment_id_bud.py,sha256=
|
|
45
|
-
dkist_processing_common/parsers/id_bud.py,sha256=
|
|
46
|
-
dkist_processing_common/parsers/l0_fits_access.py,sha256=
|
|
47
|
-
dkist_processing_common/parsers/l1_fits_access.py,sha256=
|
|
48
|
-
dkist_processing_common/parsers/near_bud.py,sha256=
|
|
49
|
-
dkist_processing_common/parsers/
|
|
45
|
+
dkist_processing_common/parsers/experiment_id_bud.py,sha256=LUehIqB56hmDwARph1itSUsPenFHScfrrRuZmcCi4xA,960
|
|
46
|
+
dkist_processing_common/parsers/id_bud.py,sha256=dWNr-njRqDzTnXa2WLZQEb48ul7RdeGzSsURt74978w,2340
|
|
47
|
+
dkist_processing_common/parsers/l0_fits_access.py,sha256=Ol3eo8yyNbGqbN2whhD2jBNoqhOrlwmH8DbMmCLtNk0,1033
|
|
48
|
+
dkist_processing_common/parsers/l1_fits_access.py,sha256=BWojvcFl_RmkrRWHe1WxDCsPeexervlRFPothuXAyoI,4410
|
|
49
|
+
dkist_processing_common/parsers/near_bud.py,sha256=ithuQpnAaK5MDXFhMPNoNIGuF2M94q0n6_qofGl-CdU,4006
|
|
50
|
+
dkist_processing_common/parsers/observing_program_id_bud.py,sha256=foESQTMShcp-aPGZFcLEdXIdi5Y6vFeus-W447olQEc,884
|
|
51
|
+
dkist_processing_common/parsers/proposal_id_bud.py,sha256=VvVoYM-MUivra2fMZOSAOgGQslLROZxFuwHnuAZyAjc,942
|
|
50
52
|
dkist_processing_common/parsers/quality.py,sha256=hhCT-bHODOYSp9jvgsiWfYcLYtQCSWgfuy0xZnkYXwo,1141
|
|
51
53
|
dkist_processing_common/parsers/retarder.py,sha256=AvDrMLmxuwKOIP3NNm9mtV7dV2kw_aqW92hTLd1UdK0,1507
|
|
52
|
-
dkist_processing_common/parsers/single_value_single_key_flower.py,sha256=
|
|
54
|
+
dkist_processing_common/parsers/single_value_single_key_flower.py,sha256=Xy0_55H2VInGkMKSPOQjcYiMW0DFlDOn27n5jC2PKzE,1358
|
|
53
55
|
dkist_processing_common/parsers/task.py,sha256=nuGxDl5_gjbi07jMOrCPD5J9L51lyZZ6VS25FuDC3V8,3990
|
|
54
|
-
dkist_processing_common/parsers/time.py,sha256=
|
|
56
|
+
dkist_processing_common/parsers/time.py,sha256=rbtC86d0-Dd1arsxitpixA8Vzg_GD2vE3uFQVN7vSqw,11686
|
|
55
57
|
dkist_processing_common/parsers/unique_bud.py,sha256=IkS2zZkVzn3PRsYF2ksBkUxl_HJ4TxCqBKJUs1WdL54,3310
|
|
56
58
|
dkist_processing_common/parsers/wavelength.py,sha256=P5C9mG8DAKK3GB3vWNRBI5l7pAW68lJK-kw-4eqERuQ,612
|
|
57
59
|
dkist_processing_common/tasks/__init__.py,sha256=l23ctjNsKJbHbbqaZBMeOPaOtw0hmITEljI_JJ-CVsU,627
|
|
@@ -59,11 +61,11 @@ dkist_processing_common/tasks/assemble_movie.py,sha256=1ixDG-f4ODt0vywqVccG3aodL
|
|
|
59
61
|
dkist_processing_common/tasks/base.py,sha256=itAHCvzcodo-q8_AjpWoRaM86BlcjWDpCIiUP7uwmP0,13236
|
|
60
62
|
dkist_processing_common/tasks/l1_output_data.py,sha256=D4S3kH2uRKp1b8_xF2YiWO_mGj19UJS5wKQZ4OdatGs,10568
|
|
61
63
|
dkist_processing_common/tasks/output_data_base.py,sha256=r1Bu3FX5zTVj66GTMWtaV_NdhxjyjSm661Bt2Mxmfi4,3685
|
|
62
|
-
dkist_processing_common/tasks/parse_l0_input_data.py,sha256=
|
|
64
|
+
dkist_processing_common/tasks/parse_l0_input_data.py,sha256=KguXT0Xavynu7C8NFMjsV4628LRoTvfeSuApb6v4Neg,18835
|
|
63
65
|
dkist_processing_common/tasks/quality_metrics.py,sha256=cvGF6tJ8yAvxOvkeG3tWxYwL885BrFW5X3V7_MSzL-A,12481
|
|
64
66
|
dkist_processing_common/tasks/teardown.py,sha256=rwT9lWINVDF11-az_nx-Z5ykMTX_SJCchobpU6sErgk,2360
|
|
65
67
|
dkist_processing_common/tasks/transfer_input_data.py,sha256=DAYfS-B1o-iBT9MXU-TiJG4Hv05Z0c_JzPrnFgvnK9g,5786
|
|
66
|
-
dkist_processing_common/tasks/trial_catalog.py,sha256=
|
|
68
|
+
dkist_processing_common/tasks/trial_catalog.py,sha256=43XN4Hz4uNBGEps3O5RLfFHRfyo9FZPzMwkcapniztQ,10049
|
|
67
69
|
dkist_processing_common/tasks/trial_output_data.py,sha256=CPMXXODvN5RTcu9bTF8v6AXciCl212EWP6qTiARvUNk,6837
|
|
68
70
|
dkist_processing_common/tasks/write_l1.py,sha256=Xy834RTp3F95kLcW4ba5gfHMUocfZd82ZQQKnvQcP2M,23204
|
|
69
71
|
dkist_processing_common/tasks/mixin/__init__.py,sha256=-g-DQbU7m1bclJYuFe3Yh757V-35GIDTbstardKQ7nU,68
|
|
@@ -73,10 +75,10 @@ dkist_processing_common/tasks/mixin/metadata_store.py,sha256=QeZV3BITUzCErUt7mbk
|
|
|
73
75
|
dkist_processing_common/tasks/mixin/object_store.py,sha256=zGAyRR1O6EN52p7sFQtDWxa7ASx3HJSsO4d4tJr-beE,3237
|
|
74
76
|
dkist_processing_common/tasks/mixin/quality/__init__.py,sha256=GOI_PBUxTmYp5IIuYFbwpA5Vx0jUwpdBBYYrnZMTh0E,384
|
|
75
77
|
dkist_processing_common/tasks/mixin/quality/_base.py,sha256=qt9TZZ140skFWFmabrjlGdm60OLWEfx_xZAaohr6dLM,8492
|
|
76
|
-
dkist_processing_common/tasks/mixin/quality/_metrics.py,sha256=
|
|
78
|
+
dkist_processing_common/tasks/mixin/quality/_metrics.py,sha256=k0hlthVbW7Jso9q_P0-hWGfp190kQO_oUQyGBRvxgqo,60626
|
|
77
79
|
dkist_processing_common/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
80
|
dkist_processing_common/tests/conftest.py,sha256=Tm-Yq956EAafpDtu1d7JjdVY0Unp9e4z9ak-yf4wnH4,22320
|
|
79
|
-
dkist_processing_common/tests/mock_metadata_store.py,sha256
|
|
81
|
+
dkist_processing_common/tests/mock_metadata_store.py,sha256=-uzwbLeRn19_Pq1hr97R4hpUD5K5sv8Zy1U8gG0GdSQ,9657
|
|
80
82
|
dkist_processing_common/tests/test_assemble_movie.py,sha256=dyVhowxB-Kc6GuxlDs74UrPtK9fwdUL7y5haA3Bidz0,4065
|
|
81
83
|
dkist_processing_common/tests/test_assemble_quality.py,sha256=-F22jMY6mPy65VZ1TZY2r1vsxMXOPmZHArGx70OD3BA,17832
|
|
82
84
|
dkist_processing_common/tests/test_base.py,sha256=gsyBG2R6Ufx7CzbHeGMagUwM9yCfpN4gCSZ6-aH2q48,6643
|
|
@@ -84,29 +86,29 @@ dkist_processing_common/tests/test_codecs.py,sha256=XuvG1sG8DECMPmxtDEi98TxlvTSA
|
|
|
84
86
|
dkist_processing_common/tests/test_constants.py,sha256=I_KcJs7ScCn53GYhEO6qjWrrnfZuyC1IVYOy87Pjlg4,6565
|
|
85
87
|
dkist_processing_common/tests/test_cs_step.py,sha256=RA0QD3D8eaL3YSOL_gIJ9wkngy14RQ2jbD-05KAziW4,2408
|
|
86
88
|
dkist_processing_common/tests/test_dkist_location.py,sha256=-_OoSw4SZDLFyIuOltHvM6PQjxm5hTiJQsiTGZ8Sadc,456
|
|
87
|
-
dkist_processing_common/tests/test_fits_access.py,sha256=
|
|
89
|
+
dkist_processing_common/tests/test_fits_access.py,sha256=a50B4IAAH5NH5zeudTqyy0b5uWKJwJuzQLUdK1LoOHM,12832
|
|
88
90
|
dkist_processing_common/tests/test_flower_pot.py,sha256=X9_UI3maa3ZQncV3jYHgovWnawDsdEkEB5vw6EAB96o,3151
|
|
89
91
|
dkist_processing_common/tests/test_fried_parameter.py,sha256=iXtlQIifZ6cDOkEi-YDgP3oAlss2loq08Uohgvy1byQ,1295
|
|
90
|
-
dkist_processing_common/tests/test_input_dataset.py,sha256=
|
|
92
|
+
dkist_processing_common/tests/test_input_dataset.py,sha256=wnQbZxBYywG5CEXces2WWk6I0QA7HjStaYSTVVbe5r0,8499
|
|
91
93
|
dkist_processing_common/tests/test_interservice_bus.py,sha256=QrBeZ8dh497h6nxA8-aVUIGDcSj8y9DIXIk9I_HkXr0,3001
|
|
92
94
|
dkist_processing_common/tests/test_interservice_bus_mixin.py,sha256=IptJkW7Qeu2Y742NKXEgkok2VdS600keLgCD3Y9iw3A,4131
|
|
93
95
|
dkist_processing_common/tests/test_manual_processing.py,sha256=iHF7yQPlar9niYAGXtFv28Gw3Undlds38yMfszk4ccY,1037
|
|
94
96
|
dkist_processing_common/tests/test_output_data_base.py,sha256=D8b1XKvbE3C5cGOiHq58yJ2pzQL3iL0wLZy_AkDdB9Y,3085
|
|
95
97
|
dkist_processing_common/tests/test_parameters.py,sha256=CUEUIGBPMCUXPll0G0UxFDbMXi8lmnjRwXBarGX1PAQ,14033
|
|
96
|
-
dkist_processing_common/tests/test_parse_l0_input_data.py,sha256=
|
|
98
|
+
dkist_processing_common/tests/test_parse_l0_input_data.py,sha256=9OOqeMX8ReQO67ldoMHOBKLQg7Nd5qWHOEoHygcN5Ic,11889
|
|
97
99
|
dkist_processing_common/tests/test_publish_catalog_messages.py,sha256=l6Wga1s2wNBIf4wGZ78ZIO_rtqjdidmtvlN9nMnQUAs,3222
|
|
98
100
|
dkist_processing_common/tests/test_quality.py,sha256=IPz7liXcmoqWIsY78oX07Ui0nWHxoUH2FbKGEmMle7E,10258
|
|
99
|
-
dkist_processing_common/tests/test_quality_mixin.py,sha256=
|
|
101
|
+
dkist_processing_common/tests/test_quality_mixin.py,sha256=qanm3SXEiLb0OJDawbh8ixVAG9uRglFMzwxTeYxkDsM,55369
|
|
100
102
|
dkist_processing_common/tests/test_scratch.py,sha256=WO8C1VJlkcC5IzST9Hj08CyyrINwYcN8pyteD9x38xs,16482
|
|
101
|
-
dkist_processing_common/tests/test_stems.py,sha256=
|
|
103
|
+
dkist_processing_common/tests/test_stems.py,sha256=p__51u-b8vfWLI71aLxF3w2tcWtv6M6DyHJ7_6FZMHI,38949
|
|
102
104
|
dkist_processing_common/tests/test_submit_dataset_metadata.py,sha256=LHEyjoIxJHXXssqKkr8Qn1NzzHD1FLJiD3lP8yaLiXU,3764
|
|
103
105
|
dkist_processing_common/tests/test_tags.py,sha256=w5gmVfp3Ck92KNV80lJQRMz0OYgTYzWtwVUFWv1b5i8,5024
|
|
104
106
|
dkist_processing_common/tests/test_task_name.py,sha256=kqFr59XX2K87xzfTlClzDV4-Je1dx72LvdaJ22UE8UU,1233
|
|
105
|
-
dkist_processing_common/tests/test_task_parsing.py,sha256=
|
|
107
|
+
dkist_processing_common/tests/test_task_parsing.py,sha256=2_OOmeZQWD17XAd_ECYmodJzD_iRIBKjCYdGh38BOx4,4421
|
|
106
108
|
dkist_processing_common/tests/test_teardown.py,sha256=DaliHSGsiQBZaFkf5wb3XBo6rHNPmx2bmQtVymYeBN4,5601
|
|
107
109
|
dkist_processing_common/tests/test_transfer_input_data.py,sha256=eyAAWXpTHQ8aew87-MncWpYBn4DAZrTSOL3LvlQfR5Q,12611
|
|
108
110
|
dkist_processing_common/tests/test_transfer_l1_output_data.py,sha256=PVGDJBEUk4kAeu8ivrhlCE7yd29R18t9kZLFx-mpBwY,2063
|
|
109
|
-
dkist_processing_common/tests/test_trial_catalog.py,sha256=
|
|
111
|
+
dkist_processing_common/tests/test_trial_catalog.py,sha256=CxjtVABE5Fw2EvyXR56IJ3PPi9QvEOjccH0OzzRWk30,9424
|
|
110
112
|
dkist_processing_common/tests/test_trial_output_data.py,sha256=YwmSfhNsSG-kdnvNlq7Ku0PNi_onTvU6uxn_nLiAKZw,12008
|
|
111
113
|
dkist_processing_common/tests/test_workflow_task_base.py,sha256=LTVusltNrsGUOvw9G323am4CXebgE4tJhP6gZCcS0CQ,10457
|
|
112
114
|
dkist_processing_common/tests/test_write_l1.py,sha256=alN-lozKEm6vKNdhtvzjnuPqv-NjHyUg16Op7SkMH-c,27964
|
|
@@ -118,7 +120,7 @@ docs/landing_page.rst,sha256=aPAuXFhBx73lEZ59B6E6JXxkK0LlxzD0n-HXqHrfumQ,746
|
|
|
118
120
|
docs/make.bat,sha256=mBAhtURwhQ7yc95pqwJzlhqBSvRknr1aqZ5s8NKvdKs,4513
|
|
119
121
|
docs/requirements.txt,sha256=Kbl_X4c7RQZw035YTeNB63We6I7pvXFU4T0Uflp2yDY,29
|
|
120
122
|
licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
|
|
121
|
-
dkist_processing_common-11.
|
|
122
|
-
dkist_processing_common-11.
|
|
123
|
-
dkist_processing_common-11.
|
|
124
|
-
dkist_processing_common-11.
|
|
123
|
+
dkist_processing_common-11.8.0rc1.dist-info/METADATA,sha256=k1cSXjEW_NNR3JwR7h55s9SFLH-H2k4XfT-RigHlAsQ,13325
|
|
124
|
+
dkist_processing_common-11.8.0rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
125
|
+
dkist_processing_common-11.8.0rc1.dist-info/top_level.txt,sha256=LJhd1W-Vn90K8HnQDIE4r52YDpUjjMWDnllAWHBByW0,48
|
|
126
|
+
dkist_processing_common-11.8.0rc1.dist-info/RECORD,,
|
changelog/271.misc.rst
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Move `solar-wavelength-calibration` dep to 2.0.0 and make use of new helper properties in that release.
|
{dkist_processing_common-11.7.1rc1.dist-info → dkist_processing_common-11.8.0rc1.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|