dkist-processing-common 11.7.0rc2__py3-none-any.whl → 11.7.1rc1__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.
Files changed (29) hide show
  1. changelog/271.misc.rst +1 -0
  2. dkist_processing_common/models/constants.py +21 -357
  3. dkist_processing_common/models/fits_access.py +25 -16
  4. dkist_processing_common/parsers/experiment_id_bud.py +4 -8
  5. dkist_processing_common/parsers/id_bud.py +19 -35
  6. dkist_processing_common/parsers/l0_fits_access.py +3 -3
  7. dkist_processing_common/parsers/l1_fits_access.py +21 -47
  8. dkist_processing_common/parsers/near_bud.py +4 -4
  9. dkist_processing_common/parsers/proposal_id_bud.py +5 -11
  10. dkist_processing_common/parsers/single_value_single_key_flower.py +1 -0
  11. dkist_processing_common/parsers/time.py +27 -141
  12. dkist_processing_common/tasks/mixin/quality/_metrics.py +4 -6
  13. dkist_processing_common/tasks/parse_l0_input_data.py +1 -249
  14. dkist_processing_common/tests/test_fits_access.py +44 -19
  15. dkist_processing_common/tests/test_parse_l0_input_data.py +5 -39
  16. dkist_processing_common/tests/test_quality_mixin.py +11 -3
  17. dkist_processing_common/tests/test_stems.py +10 -127
  18. dkist_processing_common/tests/test_task_parsing.py +6 -6
  19. {dkist_processing_common-11.7.0rc2.dist-info → dkist_processing_common-11.7.1rc1.dist-info}/METADATA +2 -2
  20. {dkist_processing_common-11.7.0rc2.dist-info → dkist_processing_common-11.7.1rc1.dist-info}/RECORD +22 -28
  21. changelog/267.feature.1.rst +0 -1
  22. changelog/267.feature.2.rst +0 -1
  23. changelog/267.feature.rst +0 -1
  24. changelog/267.misc.rst +0 -1
  25. changelog/267.removal.1.rst +0 -2
  26. changelog/267.removal.rst +0 -1
  27. dkist_processing_common/parsers/average_bud.py +0 -48
  28. {dkist_processing_common-11.7.0rc2.dist-info → dkist_processing_common-11.7.1rc1.dist-info}/WHEEL +0 -0
  29. {dkist_processing_common-11.7.0rc2.dist-info → dkist_processing_common-11.7.1rc1.dist-info}/top_level.txt +0 -0
@@ -6,17 +6,14 @@ 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
10
9
  from dkist_processing_common.models.tags import StemName
11
10
  from dkist_processing_common.models.task_name import TaskName
12
- from dkist_processing_common.parsers.average_bud import TaskAverageBud
13
11
  from dkist_processing_common.parsers.cs_step import CSStepFlower
14
12
  from dkist_processing_common.parsers.cs_step import NumCSStepBud
15
13
  from dkist_processing_common.parsers.dsps_repeat import DspsRepeatNumberFlower
16
14
  from dkist_processing_common.parsers.dsps_repeat import TotalDspsRepeatsBud
17
15
  from dkist_processing_common.parsers.experiment_id_bud import ContributingExperimentIdsBud
18
16
  from dkist_processing_common.parsers.experiment_id_bud import ExperimentIdBud
19
- from dkist_processing_common.parsers.id_bud import TaskContributingIdsBud
20
17
  from dkist_processing_common.parsers.near_bud import NearFloatBud
21
18
  from dkist_processing_common.parsers.near_bud import TaskNearFloatBud
22
19
  from dkist_processing_common.parsers.proposal_id_bud import ContributingProposalIdsBud
@@ -34,11 +31,9 @@ from dkist_processing_common.parsers.time import MaximumCadenceBud
34
31
  from dkist_processing_common.parsers.time import MinimumCadenceBud
35
32
  from dkist_processing_common.parsers.time import ObsIpStartTimeBud
36
33
  from dkist_processing_common.parsers.time import ReadoutExpTimeFlower
37
- from dkist_processing_common.parsers.time import TaskDateBeginBud
38
- from dkist_processing_common.parsers.time import TaskDatetimeBudBase
39
34
  from dkist_processing_common.parsers.time import TaskExposureTimesBud
40
35
  from dkist_processing_common.parsers.time import TaskReadoutExpTimesBud
41
- from dkist_processing_common.parsers.time import TaskRoundTimeBudBase
36
+ from dkist_processing_common.parsers.time import TaskTimeBudBase
42
37
  from dkist_processing_common.parsers.time import VarianceCadenceBud
43
38
  from dkist_processing_common.parsers.unique_bud import TaskUniqueBud
44
39
  from dkist_processing_common.parsers.unique_bud import UniqueBud
@@ -71,35 +66,12 @@ class FitsReaderMetadataKey(StrEnum):
71
66
  class FitsReader(FitsAccessBase):
72
67
  def __init__(self, hdu, name):
73
68
  super().__init__(hdu, name)
74
- self.thing_id: int = self.header.get(FitsReaderMetadataKey.thing_id)
75
- self.constant_thing: int = self.header.get(FitsReaderMetadataKey.constant_thing)
76
- self.near_thing: float = self.header.get(FitsReaderMetadataKey.near_thing)
77
- self.name = name
78
- self.proposal_id: str = self.header.get(FitsReaderMetadataKey.proposal_id)
79
- self.experiment_id: str = self.header.get(FitsReaderMetadataKey.experiment_id)
80
- self.ip_task_type: str = self.header.get(FitsReaderMetadataKey.ip_task_type)
81
- self.ip_start_time: str = self.header.get(FitsReaderMetadataKey.ip_start_time)
82
- self.fpa_exposure_time_ms: float = self.header.get(
83
- FitsReaderMetadataKey.fpa_exposure_time_ms
84
- )
85
- self.sensor_readout_exposure_time_ms: float = self.header.get(
86
- FitsReaderMetadataKey.sensor_readout_exposure_time_ms
87
- )
88
- self.num_raw_frames_per_fpa: int = self.header.get(
89
- FitsReaderMetadataKey.num_raw_frames_per_fpa
90
- )
91
- self.num_dsps_repeats: int = self.header.get(FitsReaderMetadataKey.num_dsps_repeats)
92
- self.current_dsps_repeat: int = self.header.get(FitsReaderMetadataKey.current_dsps_repeat)
93
- self.time_obs: str = self.header.get(FitsReaderMetadataKey.time_obs)
94
- self.gos_level3_status: str = self.header.get(FitsReaderMetadataKey.gos_level3_status)
95
- self.gos_level3_lamp_status: str = self.header.get(
96
- FitsReaderMetadataKey.gos_level3_lamp_status
69
+ for key in FitsReaderMetadataKey:
70
+ self._set_metadata_key_value(key=key, optional=True)
71
+ self._set_metadata_key_value(
72
+ FitsReaderMetadataKey.roundable_time, optional=True, default=0.0
97
73
  )
98
- self.gos_level0_status: str = self.header.get(FitsReaderMetadataKey.gos_level0_status)
99
- self.gos_retarder_status: str = self.header.get(FitsReaderMetadataKey.gos_retarder_status)
100
- self.gos_polarizer_status: str = self.header.get(FitsReaderMetadataKey.gos_polarizer_status)
101
- self.wavelength: str = self.header.get(FitsReaderMetadataKey.wavelength)
102
- self.roundable_time: float = self.header.get(FitsReaderMetadataKey.roundable_time, 0.0)
74
+ self.name = name
103
75
 
104
76
 
105
77
  @pytest.fixture()
@@ -414,38 +386,6 @@ def test_single_value_single_key_flower(basic_header_objs):
414
386
  assert petals[2].keys == ["thing2"]
415
387
 
416
388
 
417
- @pytest.mark.parametrize(
418
- "ip_task_type, expected_value",
419
- [
420
- pytest.param("dark", (1655503202.0,), id="single_task_type"),
421
- pytest.param(["dark", "gain"], (1655503202.0, 1655503203.0), id="task_type_list"),
422
- pytest.param(
423
- ["dark", "gain", "observe"],
424
- (1655503200.0, 1655503201.0, 1655503202.0, 1655503203.0, 1655503203.0),
425
- id="task_type_list2",
426
- ),
427
- ],
428
- )
429
- def test_task_datetime_base_bud(basic_header_objs, ip_task_type, expected_value):
430
- """
431
- Given: A set of headers with a datetime value that does not need to be rounded
432
- When: Ingesting headers with a `TaskDatetimeBudBase` bud and asking for the value
433
- Then: The bud's value is the list of datetimes in seconds
434
- """
435
- bud = TaskDatetimeBudBase(
436
- stem_name="datetimes",
437
- metadata_key=FitsReaderMetadataKey.time_obs,
438
- ip_task_types=ip_task_type,
439
- )
440
- assert bud.stem_name == "datetimes"
441
- for fo in basic_header_objs:
442
- key = fo.name
443
- bud.update(key, fo)
444
-
445
- petal = list(bud.petals)
446
- assert petal[0].value == expected_value
447
-
448
-
449
389
  @pytest.mark.parametrize(
450
390
  "ip_task_type, expected_value",
451
391
  [
@@ -454,13 +394,13 @@ def test_task_datetime_base_bud(basic_header_objs, ip_task_type, expected_value)
454
394
  pytest.param(["dark", "gain", "observe"], (0.0, 2.34), id="task_type_list2"),
455
395
  ],
456
396
  )
457
- def test_task_round_time_base_bud(basic_header_objs, ip_task_type, expected_value):
397
+ def test_task_time_base_bud(basic_header_objs, ip_task_type, expected_value):
458
398
  """
459
- Given: A set of headers with a time value that needs to be rounded
460
- When: Ingesting headers with a `TaskRoundTimeBudBase` bud and asking for the value
399
+ Given: A set of headers with a value that needs to be rounded
400
+ When: Ingesting headers with a `TaskTimeBudBase` bud and asking for the value
461
401
  Then: The bud's value is the header constant value
462
402
  """
463
- bud = TaskRoundTimeBudBase(
403
+ bud = TaskTimeBudBase(
464
404
  stem_name="rounded_time", metadata_key="roundable_time", ip_task_types=ip_task_type
465
405
  )
466
406
  assert bud.stem_name == "rounded_time"
@@ -582,27 +522,6 @@ def test_contributing_experiment_ids_bud(basic_header_objs):
582
522
  assert sorted(list(petal[0].value)) == ["experiment_id_1", "experiment_id_2"]
583
523
 
584
524
 
585
- def test_task_contributing_ids_bud(basic_header_objs):
586
- """
587
- Given: A set of headers with experiment ID values for different tasks
588
- When: Ingesting the headers with a TaskContributingIdsBud for the dark task
589
- Then: The Bud's petal is just the experiment ID for the dark task
590
- """
591
- bud = TaskContributingIdsBud(
592
- constant_name=BudName.experiment_id,
593
- metadata_key=MetadataKey.experiment_id,
594
- ip_task_types=TaskName.dark,
595
- )
596
- assert bud.stem_name == BudName.experiment_id.value
597
- for fo in basic_header_objs:
598
- key = fo.name
599
- bud.update(key, fo)
600
-
601
- petal = list(bud.petals)
602
- assert len(petal) == 1
603
- assert sorted(list(petal[0].value)) == ["experiment_id_2"]
604
-
605
-
606
525
  def test_exp_time_flower(basic_header_objs):
607
526
  """
608
527
  Given: A set of filepaths and associated headers with XPOSURE keywords
@@ -864,23 +783,6 @@ def test_variance_cadence_bud(basic_header_objs):
864
783
  assert petal[0].value == 0.25
865
784
 
866
785
 
867
- def test_task_date_begin_bud(basic_header_objs):
868
- """
869
- Given: A set of filepaths and associated headers with time_obs metadata keys
870
- When: Ingesting with the TaskDateBeginBud
871
- Then: The correct value is returned
872
- """
873
- bud = TaskDateBeginBud(constant_name=BudName.dark_date_begin, ip_task_types=TaskName.dark)
874
- assert bud.stem_name == BudName.dark_date_begin.value
875
- for fo in basic_header_objs:
876
- key = fo.name
877
- bud.update(key, fo)
878
-
879
- petal = list(bud.petals)
880
- assert len(petal) == 1
881
- assert petal[0].value == "2022-06-17T22:00:02.000000"
882
-
883
-
884
786
  def test_observe_wavelength_bud(basic_header_objs):
885
787
  """
886
788
  Given: A set of headers with wavelength values
@@ -1033,23 +935,4 @@ def test_retarder_name_bud_error(bad_polcal_header_objs):
1033
935
  _ = bud.bud
1034
936
 
1035
937
 
1036
- def test_task_average_bud(basic_header_objs):
1037
- """
1038
- Given: A set of headers with a differently valued header key
1039
- When: Ingesting headers with an TaskAverageBud and asking for the value
1040
- Then: The bud's value is the average of the header values of that task type
1041
- """
1042
- bud = TaskAverageBud(
1043
- constant_name="average", metadata_key="near_thing", ip_task_types="observe"
1044
- )
1045
- assert bud.stem_name == "average"
1046
- for fo in basic_header_objs:
1047
- key = fo.name
1048
- bud.update(key, fo)
1049
-
1050
- petal = list(bud.petals)
1051
- assert len(petal) == 1
1052
- assert round(petal[0].value, 3) == 1.227
1053
-
1054
-
1055
938
  # 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.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]
31
+ self._set_metadata_key_value(DummyMetadataKey.ip_task_type)
32
+ self._set_metadata_key_value(DummyMetadataKey.gos_level3_status)
33
+ self._set_metadata_key_value(DummyMetadataKey.gos_level3_lamp_status)
34
+ self._set_metadata_key_value(DummyMetadataKey.gos_level0_status)
35
+ self._set_metadata_key_value(DummyMetadataKey.gos_retarder_status)
36
+ self._set_metadata_key_value(DummyMetadataKey.gos_polarizer_status)
37
37
 
38
38
 
39
39
  @pytest.fixture
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 11.7.0rc2
3
+ Version: 11.7.1rc1
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,7 +21,7 @@ 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<2.0,>=1.0
24
+ Requires-Dist: solar-wavelength-calibration<3.0,>=2.0.0rc1
25
25
  Requires-Dist: globus-sdk>=3.12.0
26
26
  Requires-Dist: gqlclient[pydantic]==1.2.3
27
27
  Requires-Dist: sqids==0.5.1
@@ -1,10 +1,5 @@
1
1
  changelog/.gitempty,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- changelog/267.feature.1.rst,sha256=G5Xl7EwiRKAtftSUvalfF7iUL-WgqIvnQ3k6wyTYzaw,98
3
- changelog/267.feature.2.rst,sha256=1z0TqX3159m-wFvEgElBjUp0XPWQvmqMlVlf4BzO-J8,99
4
- changelog/267.feature.rst,sha256=g4bBK3EFQiQljW9lQrFh6rVOL8C6yxBYbXI4WOH8NE0,65
5
- changelog/267.misc.rst,sha256=ciUqUesBbdxh41euyLhyD3Bl6IVT2TSIGeOg3LFjIvg,105
6
- changelog/267.removal.1.rst,sha256=qiGl1FAy9ioLwfCh8EvM788wjFbOY3jM3eUJHPOzpu8,207
7
- changelog/267.removal.rst,sha256=ecpctwJ-AE59sfbsTy-j3GYaPaN8h6oWphXUMNQ42Yw,103
2
+ changelog/271.misc.rst,sha256=YxeCttyTuraW8dlIRP99Pf9XHQrjQMPdSO9bm8r2Kk0,104
8
3
  dkist_processing_common/__init__.py,sha256=GQ9EBnYhkOnt-qODclAoLS_g5YVhurxfg1tjVtI9rDI,320
9
4
  dkist_processing_common/config.py,sha256=kkFm-Q6jGGoV3Zdf3PSfk3xNYd2vSH0J2R8dBBav3Og,5218
10
5
  dkist_processing_common/manual.py,sha256=bIVVyLsbXMh-g_2L3kGROL-1TtJe0_XviHsp7Br31x8,7023
@@ -27,9 +22,9 @@ dkist_processing_common/codecs/str.py,sha256=Xqt5k8IhLc95KiiNiFwB1JWcVVc6T8AfcLr
27
22
  dkist_processing_common/fonts/Lato-Regular.ttf,sha256=1jbkaDIx-THtoiLViOlE0IK_0726AvkovuRhwPGFslE,656568
28
23
  dkist_processing_common/fonts/__init__.py,sha256=hBvZRtkoGRPlNDWCK-ZePXdSIlThCcjwBDfYaamVgAw,101
29
24
  dkist_processing_common/models/__init__.py,sha256=6LMqemdzVZ87fRrpAsbEnTtWZ02_Gu_oajsUlwGRH_Q,74
30
- dkist_processing_common/models/constants.py,sha256=zwDHNmRUajbTg6-FUYqzbT07kIMipNyLRqKn36Rf_rA,20873
25
+ dkist_processing_common/models/constants.py,sha256=oghBiVmtVk7YLkaQ2v8oZ-COHlAhmfjSvO9ZwzXCvLw,5828
31
26
  dkist_processing_common/models/dkist_location.py,sha256=6Nk0wvv4R8ptlrV7BXon7abq4YLvmTdUmPsDN5G8nWc,971
32
- dkist_processing_common/models/fits_access.py,sha256=imKqL4-_g6gTR-IeIjZ6qkMhQX3JujdrKFrTd9gOXnw,5605
27
+ dkist_processing_common/models/fits_access.py,sha256=NLxvIsaFrv4Fui1EhGzkV5XXjv-Vi8DQaLfMHOrRdzc,5949
33
28
  dkist_processing_common/models/flower_pot.py,sha256=_J7DwHM8u5kQfdPCpk5pUmALtLrM1L_h-x8JW5BSjXA,5129
34
29
  dkist_processing_common/models/fried_parameter.py,sha256=ro_H2Eo3I88lRf1wJjZfTc_XOjhgLt4whIQR_sjAFbM,1609
35
30
  dkist_processing_common/models/graphql.py,sha256=oSEcdVsVRytnIDEORLs4b6r3C2Lr7gqEEMHu82zpOOg,5912
@@ -44,20 +39,19 @@ dkist_processing_common/models/task_name.py,sha256=uAl7qTK4Xx1nqPAhNAe5nAXqxwPwQ
44
39
  dkist_processing_common/models/telemetry.py,sha256=XVcLNgHCZsP9L7oYiklyLUoqQtWt_xjEkuf70Kbudz4,839
45
40
  dkist_processing_common/models/wavelength.py,sha256=4UhRVoNvCHZitXo5S1oRdewadbmGfmDK6wetMV06POA,967
46
41
  dkist_processing_common/parsers/__init__.py,sha256=XJQzHtPb78F6-qXXKXjyztc0x-aHVlgv1C_l4dR88tI,67
47
- dkist_processing_common/parsers/average_bud.py,sha256=86zgcgLdDd8_Stf4RhZ9wfsmeuLXLA1jc-zcPHAz4YQ,1454
48
42
  dkist_processing_common/parsers/cs_step.py,sha256=rL2gdstKEV5aqdPDs3a5EuUaOT_6YXDJVqIPIVKSw8M,6450
49
43
  dkist_processing_common/parsers/dsps_repeat.py,sha256=Jg6oI9-PtFQbQHbGul6_eiRzBKr0Z2HIGOitG0G5CD4,1642
50
- dkist_processing_common/parsers/experiment_id_bud.py,sha256=LUehIqB56hmDwARph1itSUsPenFHScfrrRuZmcCi4xA,960
51
- dkist_processing_common/parsers/id_bud.py,sha256=dWNr-njRqDzTnXa2WLZQEb48ul7RdeGzSsURt74978w,2340
52
- dkist_processing_common/parsers/l0_fits_access.py,sha256=Ol3eo8yyNbGqbN2whhD2jBNoqhOrlwmH8DbMmCLtNk0,1033
53
- dkist_processing_common/parsers/l1_fits_access.py,sha256=BWojvcFl_RmkrRWHe1WxDCsPeexervlRFPothuXAyoI,4410
54
- dkist_processing_common/parsers/near_bud.py,sha256=ithuQpnAaK5MDXFhMPNoNIGuF2M94q0n6_qofGl-CdU,4006
55
- dkist_processing_common/parsers/proposal_id_bud.py,sha256=VvVoYM-MUivra2fMZOSAOgGQslLROZxFuwHnuAZyAjc,942
44
+ dkist_processing_common/parsers/experiment_id_bud.py,sha256=5ARnj6M5PEef_5-IVD1W6zl5DkYqx8eyt5-26Se-X2s,804
45
+ dkist_processing_common/parsers/id_bud.py,sha256=XohLGwVC-AD66qJe6I3AKdm5ArQIf3ryfDzPCQ5hEBk,1688
46
+ dkist_processing_common/parsers/l0_fits_access.py,sha256=gbE_4vFexOeKNLvqWvUFNxg-zBRpY1rCfRpIWHFpt_0,1009
47
+ dkist_processing_common/parsers/l1_fits_access.py,sha256=dJbbKRExoRpl94cSpgZg5SQZLh4tkV8p0vsKO8P8FLE,2814
48
+ dkist_processing_common/parsers/near_bud.py,sha256=lOHrjERKh3ooFusbd3_N-IDDpEOD9VWq2G82_wJ2c08,4002
49
+ dkist_processing_common/parsers/proposal_id_bud.py,sha256=tKW8dwh7XkECU1Z0T1E4AHj42emV3-RRVBBpVUZloTk,753
56
50
  dkist_processing_common/parsers/quality.py,sha256=hhCT-bHODOYSp9jvgsiWfYcLYtQCSWgfuy0xZnkYXwo,1141
57
51
  dkist_processing_common/parsers/retarder.py,sha256=AvDrMLmxuwKOIP3NNm9mtV7dV2kw_aqW92hTLd1UdK0,1507
58
- dkist_processing_common/parsers/single_value_single_key_flower.py,sha256=Xy0_55H2VInGkMKSPOQjcYiMW0DFlDOn27n5jC2PKzE,1358
52
+ dkist_processing_common/parsers/single_value_single_key_flower.py,sha256=3mcPOG6dEU7IHWm0Jtjx3FVzbxAJCiKtLyVwZqFd2lA,1425
59
53
  dkist_processing_common/parsers/task.py,sha256=nuGxDl5_gjbi07jMOrCPD5J9L51lyZZ6VS25FuDC3V8,3990
60
- dkist_processing_common/parsers/time.py,sha256=QDeptS9G_Pv5VkfS_G-r65fzczKK6-OvWHArjDlSBaY,11509
54
+ dkist_processing_common/parsers/time.py,sha256=z9zHV3Fz6ebEDgiPhv6H-aAS8e-sSW3EkBbPbtHpzGY,8576
61
55
  dkist_processing_common/parsers/unique_bud.py,sha256=IkS2zZkVzn3PRsYF2ksBkUxl_HJ4TxCqBKJUs1WdL54,3310
62
56
  dkist_processing_common/parsers/wavelength.py,sha256=P5C9mG8DAKK3GB3vWNRBI5l7pAW68lJK-kw-4eqERuQ,612
63
57
  dkist_processing_common/tasks/__init__.py,sha256=l23ctjNsKJbHbbqaZBMeOPaOtw0hmITEljI_JJ-CVsU,627
@@ -65,7 +59,7 @@ dkist_processing_common/tasks/assemble_movie.py,sha256=1ixDG-f4ODt0vywqVccG3aodL
65
59
  dkist_processing_common/tasks/base.py,sha256=itAHCvzcodo-q8_AjpWoRaM86BlcjWDpCIiUP7uwmP0,13236
66
60
  dkist_processing_common/tasks/l1_output_data.py,sha256=D4S3kH2uRKp1b8_xF2YiWO_mGj19UJS5wKQZ4OdatGs,10568
67
61
  dkist_processing_common/tasks/output_data_base.py,sha256=r1Bu3FX5zTVj66GTMWtaV_NdhxjyjSm661Bt2Mxmfi4,3685
68
- dkist_processing_common/tasks/parse_l0_input_data.py,sha256=Oiqbj5ZG1z06VB0KYtzY4Ko3Aj9ue-Bj9joW6YCeYDY,18413
62
+ dkist_processing_common/tasks/parse_l0_input_data.py,sha256=Gf8tA0aKqKuhkuxJqtblLL9y_ARCKoMb1cztSt_2hSU,8343
69
63
  dkist_processing_common/tasks/quality_metrics.py,sha256=cvGF6tJ8yAvxOvkeG3tWxYwL885BrFW5X3V7_MSzL-A,12481
70
64
  dkist_processing_common/tasks/teardown.py,sha256=rwT9lWINVDF11-az_nx-Z5ykMTX_SJCchobpU6sErgk,2360
71
65
  dkist_processing_common/tasks/transfer_input_data.py,sha256=DAYfS-B1o-iBT9MXU-TiJG4Hv05Z0c_JzPrnFgvnK9g,5786
@@ -79,7 +73,7 @@ dkist_processing_common/tasks/mixin/metadata_store.py,sha256=QeZV3BITUzCErUt7mbk
79
73
  dkist_processing_common/tasks/mixin/object_store.py,sha256=zGAyRR1O6EN52p7sFQtDWxa7ASx3HJSsO4d4tJr-beE,3237
80
74
  dkist_processing_common/tasks/mixin/quality/__init__.py,sha256=GOI_PBUxTmYp5IIuYFbwpA5Vx0jUwpdBBYYrnZMTh0E,384
81
75
  dkist_processing_common/tasks/mixin/quality/_base.py,sha256=qt9TZZ140skFWFmabrjlGdm60OLWEfx_xZAaohr6dLM,8492
82
- dkist_processing_common/tasks/mixin/quality/_metrics.py,sha256=k0hlthVbW7Jso9q_P0-hWGfp190kQO_oUQyGBRvxgqo,60626
76
+ dkist_processing_common/tasks/mixin/quality/_metrics.py,sha256=TtM6V7qy0U6ofFmjXNoJKkaECoPSfJsU4Ziu1UQgPZs,60457
83
77
  dkist_processing_common/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
78
  dkist_processing_common/tests/conftest.py,sha256=Tm-Yq956EAafpDtu1d7JjdVY0Unp9e4z9ak-yf4wnH4,22320
85
79
  dkist_processing_common/tests/mock_metadata_store.py,sha256=fbCvSk1-s0ojN6l538RWodPW7dx6k4eXqipemnHKO0Y,8248
@@ -90,7 +84,7 @@ dkist_processing_common/tests/test_codecs.py,sha256=XuvG1sG8DECMPmxtDEi98TxlvTSA
90
84
  dkist_processing_common/tests/test_constants.py,sha256=I_KcJs7ScCn53GYhEO6qjWrrnfZuyC1IVYOy87Pjlg4,6565
91
85
  dkist_processing_common/tests/test_cs_step.py,sha256=RA0QD3D8eaL3YSOL_gIJ9wkngy14RQ2jbD-05KAziW4,2408
92
86
  dkist_processing_common/tests/test_dkist_location.py,sha256=-_OoSw4SZDLFyIuOltHvM6PQjxm5hTiJQsiTGZ8Sadc,456
93
- dkist_processing_common/tests/test_fits_access.py,sha256=a50B4IAAH5NH5zeudTqyy0b5uWKJwJuzQLUdK1LoOHM,12832
87
+ dkist_processing_common/tests/test_fits_access.py,sha256=IYLrGRq71ve_yKJA6N-Gxz2-r9iISExwM8Zt6bB-jJI,13832
94
88
  dkist_processing_common/tests/test_flower_pot.py,sha256=X9_UI3maa3ZQncV3jYHgovWnawDsdEkEB5vw6EAB96o,3151
95
89
  dkist_processing_common/tests/test_fried_parameter.py,sha256=iXtlQIifZ6cDOkEi-YDgP3oAlss2loq08Uohgvy1byQ,1295
96
90
  dkist_processing_common/tests/test_input_dataset.py,sha256=pQ01rWAkQ2XQojyHWzAqeOdrMXshNcgEVL5I_9bBTdo,9610
@@ -99,16 +93,16 @@ dkist_processing_common/tests/test_interservice_bus_mixin.py,sha256=IptJkW7Qeu2Y
99
93
  dkist_processing_common/tests/test_manual_processing.py,sha256=iHF7yQPlar9niYAGXtFv28Gw3Undlds38yMfszk4ccY,1037
100
94
  dkist_processing_common/tests/test_output_data_base.py,sha256=D8b1XKvbE3C5cGOiHq58yJ2pzQL3iL0wLZy_AkDdB9Y,3085
101
95
  dkist_processing_common/tests/test_parameters.py,sha256=CUEUIGBPMCUXPll0G0UxFDbMXi8lmnjRwXBarGX1PAQ,14033
102
- dkist_processing_common/tests/test_parse_l0_input_data.py,sha256=I2djQFvFTpI9XaHwig8ig9r3DBCA6mamzscRISavc-k,11691
96
+ dkist_processing_common/tests/test_parse_l0_input_data.py,sha256=rwmtQJQo7SNdzPVzMOFxXS35H_nOLWYgbZsc9QuMEgc,10503
103
97
  dkist_processing_common/tests/test_publish_catalog_messages.py,sha256=l6Wga1s2wNBIf4wGZ78ZIO_rtqjdidmtvlN9nMnQUAs,3222
104
98
  dkist_processing_common/tests/test_quality.py,sha256=IPz7liXcmoqWIsY78oX07Ui0nWHxoUH2FbKGEmMle7E,10258
105
- dkist_processing_common/tests/test_quality_mixin.py,sha256=qanm3SXEiLb0OJDawbh8ixVAG9uRglFMzwxTeYxkDsM,55369
99
+ dkist_processing_common/tests/test_quality_mixin.py,sha256=L-_kSIKs8A48LGt9QaItZWZqIcRF0MhBCAZQZYdSflk,55575
106
100
  dkist_processing_common/tests/test_scratch.py,sha256=WO8C1VJlkcC5IzST9Hj08CyyrINwYcN8pyteD9x38xs,16482
107
- dkist_processing_common/tests/test_stems.py,sha256=Q-XrrTrF4joeWLh50vWpt34LrQ3mwLXqLraJszq0WLc,37460
101
+ dkist_processing_common/tests/test_stems.py,sha256=8Im6TtEEwkU6MN5wAAbq2gL4Z5bCQp-rbVH_QEdc880,32316
108
102
  dkist_processing_common/tests/test_submit_dataset_metadata.py,sha256=LHEyjoIxJHXXssqKkr8Qn1NzzHD1FLJiD3lP8yaLiXU,3764
109
103
  dkist_processing_common/tests/test_tags.py,sha256=w5gmVfp3Ck92KNV80lJQRMz0OYgTYzWtwVUFWv1b5i8,5024
110
104
  dkist_processing_common/tests/test_task_name.py,sha256=kqFr59XX2K87xzfTlClzDV4-Je1dx72LvdaJ22UE8UU,1233
111
- dkist_processing_common/tests/test_task_parsing.py,sha256=2_OOmeZQWD17XAd_ECYmodJzD_iRIBKjCYdGh38BOx4,4421
105
+ dkist_processing_common/tests/test_task_parsing.py,sha256=leXQrIWU5CIkUWRaiG0hW4NCmFtlpxHNsgl4Jz2EghA,4368
112
106
  dkist_processing_common/tests/test_teardown.py,sha256=DaliHSGsiQBZaFkf5wb3XBo6rHNPmx2bmQtVymYeBN4,5601
113
107
  dkist_processing_common/tests/test_transfer_input_data.py,sha256=eyAAWXpTHQ8aew87-MncWpYBn4DAZrTSOL3LvlQfR5Q,12611
114
108
  dkist_processing_common/tests/test_transfer_l1_output_data.py,sha256=PVGDJBEUk4kAeu8ivrhlCE7yd29R18t9kZLFx-mpBwY,2063
@@ -124,7 +118,7 @@ docs/landing_page.rst,sha256=aPAuXFhBx73lEZ59B6E6JXxkK0LlxzD0n-HXqHrfumQ,746
124
118
  docs/make.bat,sha256=mBAhtURwhQ7yc95pqwJzlhqBSvRknr1aqZ5s8NKvdKs,4513
125
119
  docs/requirements.txt,sha256=Kbl_X4c7RQZw035YTeNB63We6I7pvXFU4T0Uflp2yDY,29
126
120
  licenses/LICENSE.rst,sha256=piZaQplkzOMmH1NXg6QIdo9wwo9pPCoHkvm2-DmH76E,1462
127
- dkist_processing_common-11.7.0rc2.dist-info/METADATA,sha256=FuC_RGqyudDzG84A-n0Jo2JFgFot8c83EgvgXziplM0,13316
128
- dkist_processing_common-11.7.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
129
- dkist_processing_common-11.7.0rc2.dist-info/top_level.txt,sha256=LJhd1W-Vn90K8HnQDIE4r52YDpUjjMWDnllAWHBByW0,48
130
- dkist_processing_common-11.7.0rc2.dist-info/RECORD,,
121
+ dkist_processing_common-11.7.1rc1.dist-info/METADATA,sha256=VLi5DszJYXgtOb_O0CZV9_JCPEQe8-cPFdkJnWavVLQ,13321
122
+ dkist_processing_common-11.7.1rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
123
+ dkist_processing_common-11.7.1rc1.dist-info/top_level.txt,sha256=LJhd1W-Vn90K8HnQDIE4r52YDpUjjMWDnllAWHBByW0,48
124
+ dkist_processing_common-11.7.1rc1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- Add new bud types TaskAverageBud and TaskBeginDateBud, which is based on new TaskDatetimeBudBase.
@@ -1 +0,0 @@
1
- Add new bud type TaskContributingIdsBud, based on ContributingIdsBud, for for specific task types.
changelog/267.feature.rst DELETED
@@ -1 +0,0 @@
1
- Add new buds to parsing for what will become the dataset extras.
changelog/267.misc.rst DELETED
@@ -1 +0,0 @@
1
- Rename TimeFlowerBase and TaskTimeBudBase to RoundTimeFlowerBase and TaskRoundTimeBudBase, respectively.
@@ -1,2 +0,0 @@
1
- Remove the `_set_metadata_key_value` method from FitsAccessBase. Instead of using `setattr`, attributes
2
- are assigned explicitly in access classes using `MetadataKey` members in place of header key strings.
changelog/267.removal.rst DELETED
@@ -1 +0,0 @@
1
- Remove IdBud, which is just a TaskUniqueBud with the task set to observe, and therefore is not needed.
@@ -1,48 +0,0 @@
1
- """Pre-made flower that reads a single header key from all files with specific task types and returns the average."""
2
-
3
- from enum import StrEnum
4
- from statistics import mean
5
- from typing import Callable
6
- from typing import Hashable
7
-
8
- import numpy as np
9
-
10
- from dkist_processing_common.parsers.near_bud import TaskNearFloatBud
11
- from dkist_processing_common.parsers.task import passthrough_header_ip_task
12
-
13
-
14
- class TaskAverageBud(TaskNearFloatBud):
15
- """
16
- Pre-made bud that returns the average of a single header key from all files with specific task types.
17
-
18
- Parameters
19
- ----------
20
- constant_name
21
- The name for the constant to be defined
22
-
23
- metadata_key
24
- The metadata key associated with the constant
25
-
26
- ip_task_types
27
- Only consider objects whose parsed header IP task type matches a string in this list
28
-
29
- task_type_parsing_function
30
- The function used to convert a header into an IP task type
31
- """
32
-
33
- key_to_petal_dict: dict[str, float]
34
-
35
- def __init__(
36
- self,
37
- constant_name: str,
38
- metadata_key: str | StrEnum,
39
- ip_task_types: str | list[str],
40
- task_type_parsing_function: Callable = passthrough_header_ip_task,
41
- ):
42
- super().__init__(
43
- constant_name=constant_name,
44
- metadata_key=metadata_key,
45
- ip_task_types=ip_task_types,
46
- tolerance=np.inf,
47
- task_type_parsing_function=task_type_parsing_function,
48
- )