dkist-processing-common 12.2.0__tar.gz → 12.2.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/CHANGELOG.rst +0 -9
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/PKG-INFO +1 -1
- dkist_processing_common-12.2.0rc1/changelog/272.feature.rst +1 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/constants.py +8 -8
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/l1_output_data.py +18 -8
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_extra.py +5 -5
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_construct_dataset_extras.py +2 -7
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_trial_catalog.py +3 -2
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/PKG-INFO +1 -1
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/SOURCES.txt +1 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.gitignore +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.pre-commit-config.yaml +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.readthedocs.yml +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.snyk +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/README.rst +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/changelog/.gitempty +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/constants.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/graphql.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/scratch.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/_util/tags.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/array.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/asdf.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/basemodel.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/bytes.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/fits.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/iobase.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/json.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/path.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/quality.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/codecs/str.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/config.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/fonts/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/manual.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/dkist_location.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/extras.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/fits_access.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/flower_pot.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/fried_parameter.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/graphql.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/input_dataset.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/message.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/message_queue_binding.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/metric_code.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/parameters.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/quality.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/tags.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/task_name.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/telemetry.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/models/wavelength.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/average_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/cs_step.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/id_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/near_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/quality.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/retarder.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/task.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/time.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/unique_bud.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/parsers/wavelength.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/output_data_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/quality_metrics.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/teardown.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_l1.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/__init__.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/conftest.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_codecs.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_constants.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_cs_step.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_fits_access.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_parameters.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_quality.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_scratch.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_stems.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_tags.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_task_name.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_teardown.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common/tests/test_write_l1.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/requires.txt +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/dkist_processing_common.egg-info/top_level.txt +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/Makefile +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/changelog.rst +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/conf.py +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/index.rst +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/landing_page.rst +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/make.bat +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/docs/requirements.txt +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/licenses/LICENSE.rst +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/pyproject.toml +0 -0
- {dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/setup.cfg +0 -0
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
v12.2.0 (2026-01-30)
|
|
2
|
-
====================
|
|
3
|
-
|
|
4
|
-
Features
|
|
5
|
-
--------
|
|
6
|
-
|
|
7
|
-
- Add the framework for using Dataset Extras, that is, other data that can be included with the L1 FITS files generated by the regular pipeline. A new abstract class, WriteL1DatasetExtras, provides helper functionality for use in the instrument pipelines. (`#272 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/272>`__)
|
|
8
|
-
|
|
9
|
-
|
|
10
1
|
v12.1.0 (2026-01-26)
|
|
11
2
|
====================
|
|
12
3
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Add the framework for using Dataset Extras, that is, other data that can be included with the L1 FITS files generated by the regular pipeline. A new abstract class, WriteL1DatasetExtras, provides helper functionality for use in the instrument pipelines.
|
|
@@ -473,14 +473,14 @@ class ConstantsBase:
|
|
|
473
473
|
return self._db_dict[BudName.solar_gain_gos_polarizer_status]
|
|
474
474
|
|
|
475
475
|
@property
|
|
476
|
-
def dark_gos_polarizer_angle(self) ->
|
|
476
|
+
def dark_gos_polarizer_angle(self) -> float:
|
|
477
477
|
"""Return the gos polarizer angle constant for the dark task."""
|
|
478
|
-
return
|
|
478
|
+
return self._db_dict[BudName.dark_gos_polarizer_angle]
|
|
479
479
|
|
|
480
480
|
@property
|
|
481
|
-
def solar_gain_gos_polarizer_angle(self) ->
|
|
481
|
+
def solar_gain_gos_polarizer_angle(self) -> float:
|
|
482
482
|
"""Return the gos polarizer angle constant for the solar gain task."""
|
|
483
|
-
return
|
|
483
|
+
return self._db_dict[BudName.solar_gain_gos_polarizer_angle]
|
|
484
484
|
|
|
485
485
|
@property
|
|
486
486
|
def dark_gos_retarder_status(self) -> str:
|
|
@@ -493,14 +493,14 @@ class ConstantsBase:
|
|
|
493
493
|
return self._db_dict[BudName.solar_gain_gos_retarder_status]
|
|
494
494
|
|
|
495
495
|
@property
|
|
496
|
-
def dark_gos_retarder_angle(self) ->
|
|
496
|
+
def dark_gos_retarder_angle(self) -> float:
|
|
497
497
|
"""Return the gos retarder angle constant for the dark task."""
|
|
498
|
-
return
|
|
498
|
+
return self._db_dict[BudName.dark_gos_retarder_angle]
|
|
499
499
|
|
|
500
500
|
@property
|
|
501
|
-
def solar_gain_gos_retarder_angle(self) ->
|
|
501
|
+
def solar_gain_gos_retarder_angle(self) -> float:
|
|
502
502
|
"""Return the gos retarder angle constant for the solar gain task."""
|
|
503
|
-
return
|
|
503
|
+
return self._db_dict[BudName.solar_gain_gos_retarder_angle]
|
|
504
504
|
|
|
505
505
|
@property
|
|
506
506
|
def dark_gos_level0_status(self) -> str:
|
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
from abc import ABC
|
|
5
|
+
from itertools import chain
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from typing import Iterable
|
|
7
8
|
|
|
9
|
+
from dkist_processing_common.codecs.quality import quality_data_decoder
|
|
8
10
|
from dkist_processing_common.codecs.quality import quality_data_encoder
|
|
9
11
|
from dkist_processing_common.models.message import CatalogFrameMessage
|
|
10
12
|
from dkist_processing_common.models.message import CatalogFrameMessageBody
|
|
11
13
|
from dkist_processing_common.models.message import CatalogObjectMessage
|
|
12
14
|
from dkist_processing_common.models.message import CatalogObjectMessageBody
|
|
15
|
+
from dkist_processing_common.models.message import CreateQualityReportMessage
|
|
16
|
+
from dkist_processing_common.models.message import CreateQualityReportMessageBody
|
|
13
17
|
from dkist_processing_common.models.tags import Tag
|
|
14
18
|
from dkist_processing_common.tasks.mixin.globus import GlobusMixin
|
|
15
19
|
from dkist_processing_common.tasks.mixin.interservice_bus import InterserviceBusMixin
|
|
@@ -189,9 +193,7 @@ class SubmitDatasetMetadata(L1OutputDataBase):
|
|
|
189
193
|
class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
190
194
|
"""Task class for publishing Catalog and Quality Messages."""
|
|
191
195
|
|
|
192
|
-
def frame_messages(
|
|
193
|
-
self, paths: Iterable[Path], folder_modifier: str | None = None
|
|
194
|
-
) -> list[CatalogFrameMessage]:
|
|
196
|
+
def frame_messages(self, paths: Iterable[Path]) -> list[CatalogFrameMessage]:
|
|
195
197
|
"""
|
|
196
198
|
Create the frame messages.
|
|
197
199
|
|
|
@@ -199,8 +201,6 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
|
199
201
|
----------
|
|
200
202
|
paths
|
|
201
203
|
The input paths for which to publish frame messages
|
|
202
|
-
folder_modifier
|
|
203
|
-
A subdirectory to use if the files in paths are not in the base directory
|
|
204
204
|
|
|
205
205
|
Returns
|
|
206
206
|
-------
|
|
@@ -208,7 +208,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
|
208
208
|
"""
|
|
209
209
|
message_bodies = [
|
|
210
210
|
CatalogFrameMessageBody(
|
|
211
|
-
objectName=self.format_object_key(path=p
|
|
211
|
+
objectName=self.format_object_key(path=p),
|
|
212
212
|
conversationId=str(self.recipe_run_id),
|
|
213
213
|
bucket=self.destination_bucket,
|
|
214
214
|
)
|
|
@@ -237,7 +237,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
|
237
237
|
message_bodies = [
|
|
238
238
|
CatalogObjectMessageBody(
|
|
239
239
|
objectType=object_type,
|
|
240
|
-
objectName=self.format_object_key(
|
|
240
|
+
objectName=self.format_object_key(p),
|
|
241
241
|
bucket=self.destination_bucket,
|
|
242
242
|
conversationId=str(self.recipe_run_id),
|
|
243
243
|
groupId=self.constants.dataset_id,
|
|
@@ -260,7 +260,7 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
|
260
260
|
messages = []
|
|
261
261
|
messages += self.frame_messages(paths=frames)
|
|
262
262
|
frame_message_count = len(messages)
|
|
263
|
-
messages += self.frame_messages(paths=extras
|
|
263
|
+
messages += self.frame_messages(paths=extras)
|
|
264
264
|
extra_message_count = len(extras)
|
|
265
265
|
messages += self.object_messages(paths=movies, object_type="MOVIE")
|
|
266
266
|
object_message_count = len(movies)
|
|
@@ -270,4 +270,14 @@ class PublishCatalogAndQualityMessages(L1OutputDataBase, InterserviceBusMixin):
|
|
|
270
270
|
with self.telemetry_span(
|
|
271
271
|
f"Publish messages: {frame_message_count = }, {extra_message_count = }, {object_message_count = }, {dataset_has_quality_data = }"
|
|
272
272
|
):
|
|
273
|
+
messages.append(self.quality_report_message)
|
|
274
|
+
with self.telemetry_span("Publish Catalog Messages") as publish_span:
|
|
275
|
+
publish_span.set_attributes(
|
|
276
|
+
{
|
|
277
|
+
"frame_message_count": frame_message_count,
|
|
278
|
+
"extra_message_count": extra_message_count,
|
|
279
|
+
"object_message_count": object_message_count,
|
|
280
|
+
"dataset_has_quality_data": dataset_has_quality_data,
|
|
281
|
+
}
|
|
282
|
+
)
|
|
273
283
|
self.interservice_bus_publish(messages=messages)
|
|
@@ -27,7 +27,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
27
27
|
filename: str,
|
|
28
28
|
task_type: TaskName,
|
|
29
29
|
extra_name: DatasetExtraType,
|
|
30
|
-
end_time: str,
|
|
31
30
|
total_exposure: float | None = None,
|
|
32
31
|
readout_exposure: float | None = None,
|
|
33
32
|
) -> dict:
|
|
@@ -39,6 +38,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
39
38
|
self.constants.dark_observing_program_execution_ids
|
|
40
39
|
)
|
|
41
40
|
task_specific_date_begin = self.constants.dark_date_begin
|
|
41
|
+
task_specific_date_end = self.constants.dark_date_end
|
|
42
42
|
task_specific_raw_frames_per_fpa = (
|
|
43
43
|
0 # can be updated in construction of dataset extra if required
|
|
44
44
|
)
|
|
@@ -74,6 +74,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
task_specific_date_begin = self.constants.solar_gain_date_begin
|
|
77
|
+
task_specific_date_end = self.constants.solar_gain_date_end
|
|
77
78
|
task_specific_raw_frames_per_fpa = self.constants.solar_gain_num_raw_frames_per_fpa
|
|
78
79
|
task_specific_telescope_tracking_mode = (
|
|
79
80
|
self.constants.solar_gain_telescope_tracking_mode
|
|
@@ -109,6 +110,7 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
109
110
|
)
|
|
110
111
|
|
|
111
112
|
task_specific_date_begin = self.constants.polcal_date_begin
|
|
113
|
+
task_specific_date_end = self.constants.polcal_date_end
|
|
112
114
|
task_specific_raw_frames_per_fpa = self.constants.polcal_num_raw_frames_per_fpa
|
|
113
115
|
task_specific_telescope_tracking_mode = (
|
|
114
116
|
self.constants.polcal_telescope_tracking_mode
|
|
@@ -140,14 +142,14 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
140
142
|
raise ValueError(f"Unsupported task type {task_type}")
|
|
141
143
|
|
|
142
144
|
start_datetime = datetime.fromisoformat(task_specific_date_begin)
|
|
143
|
-
end_datetime = datetime.fromisoformat(
|
|
145
|
+
end_datetime = datetime.fromisoformat(task_specific_date_end)
|
|
144
146
|
|
|
145
147
|
dataset_extra_header = {
|
|
146
148
|
DatasetExtraHeaderSection.common: {
|
|
147
149
|
"BUNIT": "count",
|
|
148
150
|
"DATE": Time.now().fits,
|
|
149
151
|
"DATE-BEG": task_specific_date_begin,
|
|
150
|
-
"DATE-END":
|
|
152
|
+
"DATE-END": task_specific_date_end,
|
|
151
153
|
"TELAPSE": (end_datetime - start_datetime).total_seconds(),
|
|
152
154
|
"DATE-AVG": (start_datetime + (end_datetime - start_datetime) / 2).isoformat(),
|
|
153
155
|
"TIMESYS": "UTC",
|
|
@@ -263,7 +265,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
263
265
|
extra_name: DatasetExtraType,
|
|
264
266
|
total_exposure: float | None = None,
|
|
265
267
|
readout_exposure: float | None = None,
|
|
266
|
-
end_time: str | None = None,
|
|
267
268
|
) -> fits.Header:
|
|
268
269
|
"""Build FITS header for dataset extra file."""
|
|
269
270
|
header = fits.Header()
|
|
@@ -273,7 +274,6 @@ class WriteL1DatasetExtras(WriteL1Base, ABC):
|
|
|
273
274
|
total_exposure=total_exposure,
|
|
274
275
|
readout_exposure=readout_exposure,
|
|
275
276
|
extra_name=extra_name,
|
|
276
|
-
end_time=end_time,
|
|
277
277
|
)
|
|
278
278
|
for section in sections:
|
|
279
279
|
header.update(all_section_headers[section].items())
|
|
@@ -118,7 +118,6 @@ class ConstructDatasetExtrasTest(WriteL1DatasetExtras):
|
|
|
118
118
|
extra_name=(
|
|
119
119
|
DatasetExtraType.dark if task_type == "DARK" else DatasetExtraType.solar_gain
|
|
120
120
|
),
|
|
121
|
-
end_time="2025-01-01T00:00:00",
|
|
122
121
|
)
|
|
123
122
|
|
|
124
123
|
self.assemble_and_write_dataset_extra(data=data, header=header, filename=filename)
|
|
@@ -140,7 +139,6 @@ class ConstructDatasetExtrasTest(WriteL1DatasetExtras):
|
|
|
140
139
|
total_exposure=0.058,
|
|
141
140
|
readout_exposure=0.029,
|
|
142
141
|
extra_name=DatasetExtraType.demodulation_matrices,
|
|
143
|
-
end_time="2025-01-01T00:00:00",
|
|
144
142
|
)
|
|
145
143
|
self.assemble_and_write_dataset_extra(data=data, header=header, filename=filename)
|
|
146
144
|
|
|
@@ -217,8 +215,5 @@ def test_construct_dataset_extras(
|
|
|
217
215
|
assert header["OBSPR_ID"] == "OP1"
|
|
218
216
|
assert header["EXTOBSID"] == "OP2,OP3"
|
|
219
217
|
assert header["EXTNAME"] in ["DARK", "SOLAR GAIN", "DEMODULATION MATRICES"]
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
else:
|
|
223
|
-
assert header.get("POLANGLE") == "0.0"
|
|
224
|
-
assert header.get("RETANGLE") == "0.0"
|
|
218
|
+
assert header["TELAPSE"] == 3600
|
|
219
|
+
assert header["DATE-AVG"] == "2023-01-01T00:30:00"
|
|
@@ -7,8 +7,6 @@ from uuid import uuid4
|
|
|
7
7
|
import astropy.units as u
|
|
8
8
|
import pytest
|
|
9
9
|
from astropy.io import fits
|
|
10
|
-
from dkist_data_simulator.dataset_extras import DatasetExtraBase
|
|
11
|
-
from dkist_data_simulator.dataset_extras import InstrumentTables
|
|
12
10
|
from dkist_data_simulator.spec214.vbi import SimpleVBIDataset
|
|
13
11
|
from sqids import Sqids
|
|
14
12
|
|
|
@@ -59,6 +57,9 @@ def scratch_with_l1_frames(recipe_run_id, tmp_path) -> WorkflowFileSystem:
|
|
|
59
57
|
scratch.write(
|
|
60
58
|
file_obj, tags=[Tag.output(), Tag.frame()], relative_path=f"{uuid4().hex}.dat"
|
|
61
59
|
)
|
|
60
|
+
scratch.write(
|
|
61
|
+
file_obj, tags=[Tag.output(), Tag.extra()], relative_path=f"{uuid4().hex}.dat"
|
|
62
|
+
)
|
|
62
63
|
|
|
63
64
|
return scratch
|
|
64
65
|
|
|
File without changes
|
{dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_common-12.2.0 → dkist_processing_common-12.2.0rc1}/bitbucket-pipelines.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|