dkist-processing-common 14.5.2__tar.gz → 14.6.1__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-14.5.2 → dkist_processing_common-14.6.1}/.pre-commit-config.yaml +9 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/CHANGELOG.rst +20 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/PKG-INFO +18 -1
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/README.rst +17 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/extras.py +1 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/quality_metrics.py +11 -6
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_l1.py +1 -2
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_quality.py +53 -1
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/PKG-INFO +18 -1
- dkist_processing_common-14.6.1/dkist_processing_common.egg-info/scm_version.json +8 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/pyproject.toml +9 -0
- dkist_processing_common-14.5.2/dkist_processing_common.egg-info/scm_version.json +0 -8
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/.gitignore +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/.readthedocs.yml +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/.rovodev/.review-agent.md +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/.snyk +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/bitbucket-pipelines.yml +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/changelog/.gitempty +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/constants.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/graphql.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/scratch.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/_util/tags.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/array.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/asdf.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/basemodel.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/bytes.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/fits.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/iobase.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/json.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/path.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/quality.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/codecs/str.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/config.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/fonts/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/manual.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/constants.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/dkist_location.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/fits_access.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/flower_pot.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/fried_parameter.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/graphql.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/input_dataset.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/message.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/message_queue_binding.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/metric_code.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/parameters.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/quality.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/tags.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/task_name.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/telemetry.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/models/wavelength.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/average_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/cs_step.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/id_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/lookup_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/near_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/observing_program_id_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/quality.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/retarder.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/task.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/time.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/unique_bud.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/parsers/wavelength.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/assemble_movie.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/l1_output_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/globus.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/output_data_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/teardown.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/transfer_input_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/trial_catalog.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/trial_output_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_extra.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tasks/write_l1_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/__init__.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/conftest.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/mock_metadata_store.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_codecs.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_constants.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_construct_dataset_extras.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_cs_step.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_dkist_location.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_fits_access.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_flower_pot.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_fried_parameter.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_input_dataset.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_manual_processing.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_output_data_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_parameters.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_scratch.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_stems.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_tags.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_task_name.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_task_parsing.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_teardown.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_transfer_input_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/tests/test_write_l1.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/SOURCES.txt +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/requires.txt +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/scm_file_list.json +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common.egg-info/top_level.txt +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/Makefile +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/changelog.rst +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/conf.py +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/index.rst +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/landing_page.rst +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/make.bat +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/docs/requirements.txt +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/licenses/LICENSE.rst +0 -0
- {dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/setup.cfg +0 -0
|
@@ -29,3 +29,12 @@ repos:
|
|
|
29
29
|
args:
|
|
30
30
|
- --convention=numpy
|
|
31
31
|
- --add-ignore=D105
|
|
32
|
+
- repo: https://bitbucket.org/dkistdc/pre-commit-hooks.git
|
|
33
|
+
rev: v1.1.0
|
|
34
|
+
hooks:
|
|
35
|
+
- id: dkist-env-table
|
|
36
|
+
language_version: python3.13
|
|
37
|
+
require_serial: true
|
|
38
|
+
additional_dependencies:
|
|
39
|
+
- dkist-processing-core
|
|
40
|
+
- dkist-service-configuration
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
v14.6.1 (2026-10-14)
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
Bugfixes
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
- Exclude negative light-level readings from the LIGHT_LEVEL quality plot and summary statistics. Omit the metric when only negative readings remain. (`#355 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/355>`__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
v14.6.0 (2026-10-08)
|
|
11
|
+
====================
|
|
12
|
+
|
|
13
|
+
Misc
|
|
14
|
+
----
|
|
15
|
+
|
|
16
|
+
- Add `beam_boundaries` to the `DatasetExtraType` model. This is a new extra produced by `dkist-processing-cryonirsp`. (`#352 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/352>`__)
|
|
17
|
+
- Integrated the ``dkist-env-table`` pre-commit hook and updated the README environment-variable table to match the current configuration. (`#351 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/351>`__)
|
|
18
|
+
- Always write the IDSOBSID key to L1 output data. We will never be in a situation where the input dataset does NOT contain an observe frame part. (`#353 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/353>`__)
|
|
19
|
+
|
|
20
|
+
|
|
1
21
|
v14.5.2 (2026-09-30)
|
|
2
22
|
====================
|
|
3
23
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-common
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.6.1
|
|
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
|
|
@@ -100,6 +100,8 @@ dkist-processing-common is deployed to `PyPI <https://pypi.org/project/dkist-pro
|
|
|
100
100
|
Environment Variables
|
|
101
101
|
---------------------
|
|
102
102
|
|
|
103
|
+
.. dkist-env-table: start
|
|
104
|
+
|
|
103
105
|
.. list-table::
|
|
104
106
|
:widths: 10 90
|
|
105
107
|
:header-rows: 1
|
|
@@ -189,6 +191,21 @@ Environment Variables
|
|
|
189
191
|
* - DOCS_BASE_URL
|
|
190
192
|
- annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
|
|
191
193
|
|
|
194
|
+
.. dkist-env-table: end
|
|
195
|
+
|
|
196
|
+
Maintaining the generated table
|
|
197
|
+
###############################
|
|
198
|
+
|
|
199
|
+
The hook's additional dependencies are intentionally unpinned to avoid duplicating
|
|
200
|
+
versions maintained in ``pyproject.toml``. Consequently, the generated table may
|
|
201
|
+
temporarily reflect a newer published parent configuration than the version pinned
|
|
202
|
+
by this project.
|
|
203
|
+
|
|
204
|
+
When developing against an upstream release candidate that changes configuration
|
|
205
|
+
fields, temporarily pin the relevant hook dependency in
|
|
206
|
+
``.pre-commit-config.yaml`` to that RC. Remove the temporary pin after the final
|
|
207
|
+
upstream release is available.
|
|
208
|
+
|
|
192
209
|
Development
|
|
193
210
|
-----------
|
|
194
211
|
|
|
@@ -35,6 +35,8 @@ dkist-processing-common is deployed to `PyPI <https://pypi.org/project/dkist-pro
|
|
|
35
35
|
Environment Variables
|
|
36
36
|
---------------------
|
|
37
37
|
|
|
38
|
+
.. dkist-env-table: start
|
|
39
|
+
|
|
38
40
|
.. list-table::
|
|
39
41
|
:widths: 10 90
|
|
40
42
|
:header-rows: 1
|
|
@@ -124,6 +126,21 @@ Environment Variables
|
|
|
124
126
|
* - DOCS_BASE_URL
|
|
125
127
|
- annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
|
|
126
128
|
|
|
129
|
+
.. dkist-env-table: end
|
|
130
|
+
|
|
131
|
+
Maintaining the generated table
|
|
132
|
+
###############################
|
|
133
|
+
|
|
134
|
+
The hook's additional dependencies are intentionally unpinned to avoid duplicating
|
|
135
|
+
versions maintained in ``pyproject.toml``. Consequently, the generated table may
|
|
136
|
+
temporarily reflect a newer published parent configuration than the version pinned
|
|
137
|
+
by this project.
|
|
138
|
+
|
|
139
|
+
When developing against an upstream release candidate that changes configuration
|
|
140
|
+
fields, temporarily pin the relevant hook dependency in
|
|
141
|
+
``.pre-commit-config.yaml`` to that RC. Remove the temporary pin after the final
|
|
142
|
+
upstream release is available.
|
|
143
|
+
|
|
127
144
|
Development
|
|
128
145
|
-----------
|
|
129
146
|
|
|
@@ -620,10 +620,13 @@ class QualityL1Metrics(WorkflowTaskBase, QualityMixin):
|
|
|
620
620
|
self.write(metric, tags=Tag.quality("GENERIC"), encoder=basemodel_encoder)
|
|
621
621
|
|
|
622
622
|
def compute_and_write_light_level(self, l1_quality_data: L1QualityData) -> None:
|
|
623
|
-
"""Write LIGHT_LEVEL quality metric."""
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
623
|
+
"""Write LIGHT_LEVEL quality metric using only nonnegative measurements."""
|
|
624
|
+
datetimes: list[datetime] = []
|
|
625
|
+
light_level_values: list[float] = []
|
|
626
|
+
for date, light_level in zip(l1_quality_data.datetimes, l1_quality_data.light_level_values):
|
|
627
|
+
if light_level >= 0:
|
|
628
|
+
datetimes.append(date)
|
|
629
|
+
light_level_values.append(light_level)
|
|
627
630
|
|
|
628
631
|
# don't write anything if there is no data
|
|
629
632
|
if not light_level_values:
|
|
@@ -642,8 +645,10 @@ class QualityL1Metrics(WorkflowTaskBase, QualityMixin):
|
|
|
642
645
|
series_data=series_data,
|
|
643
646
|
)
|
|
644
647
|
|
|
645
|
-
statement =
|
|
646
|
-
|
|
648
|
+
statement = (
|
|
649
|
+
f"Average Light Level for L1 dataset: "
|
|
650
|
+
f"{round(np.mean(light_level_values), 2)} ± {round(np.std(light_level_values), 2)} adu"
|
|
651
|
+
)
|
|
647
652
|
|
|
648
653
|
metric = QualityMetric(
|
|
649
654
|
name="Light Level",
|
|
@@ -181,8 +181,7 @@ class WriteL1Frame(WriteL1Base, ABC):
|
|
|
181
181
|
# Keywords to support reprocessing
|
|
182
182
|
if parameters := self.metadata_store_input_dataset_parameters:
|
|
183
183
|
header["IDSPARID"] = parameters.inputDatasetPartId
|
|
184
|
-
|
|
185
|
-
header["IDSOBSID"] = observe_frames.inputDatasetPartId
|
|
184
|
+
header["IDSOBSID"] = self.metadata_store_input_dataset_observe_frames.inputDatasetPartId
|
|
186
185
|
if calibration_frames := self.metadata_store_input_dataset_calibration_frames:
|
|
187
186
|
header["IDSCALID"] = calibration_frames.inputDatasetPartId
|
|
188
187
|
header["WKFLNAME"] = self.workflow_name
|
|
@@ -1084,7 +1084,7 @@ def test_compute_and_write_light_level(
|
|
|
1084
1084
|
all_statements = metric.statement
|
|
1085
1085
|
assert isinstance(all_statements, list)
|
|
1086
1086
|
assert len(all_statements) == 1
|
|
1087
|
-
assert all_statements[
|
|
1087
|
+
assert all_statements == ["Average Light Level for L1 dataset: 0.45 ± 0.2 adu"]
|
|
1088
1088
|
assert metric.warnings is None
|
|
1089
1089
|
# data
|
|
1090
1090
|
all_plot_data = metric.plot_data
|
|
@@ -1112,6 +1112,58 @@ def test_compute_and_write_light_level(
|
|
|
1112
1112
|
assert len(time_series.x_values) == 7
|
|
1113
1113
|
|
|
1114
1114
|
|
|
1115
|
+
def test_light_level_excludes_negative_values(
|
|
1116
|
+
quality_l1_task_no_scratch_data: QualityL1Metrics, l1_quality_data: L1QualityData
|
|
1117
|
+
):
|
|
1118
|
+
"""
|
|
1119
|
+
Given: negative, zero, and positive light levels with distinct timestamps
|
|
1120
|
+
When: the light level quality metric is written
|
|
1121
|
+
Then: only nonnegative readings and their timestamps contribute to the plot and statistics
|
|
1122
|
+
"""
|
|
1123
|
+
task = quality_l1_task_no_scratch_data
|
|
1124
|
+
l1_quality_data.light_level_values = (-1.0, 0.0, 2.0, -0.01, 4.0, -2.0, 6.0)
|
|
1125
|
+
original_quality_data = l1_quality_data.model_dump()
|
|
1126
|
+
|
|
1127
|
+
task.compute_and_write_light_level(l1_quality_data)
|
|
1128
|
+
|
|
1129
|
+
metrics = list(
|
|
1130
|
+
task.read(tags=[Tag.quality("GENERIC")], decoder=basemodel_decoder, model=QualityMetric)
|
|
1131
|
+
)
|
|
1132
|
+
assert len(metrics) == 1
|
|
1133
|
+
metric = metrics[0]
|
|
1134
|
+
time_series = metric.plot_data[0].series_data[""]
|
|
1135
|
+
assert time_series.x_values == tuple(l1_quality_data.datetimes[i] for i in (1, 2, 4, 6))
|
|
1136
|
+
assert time_series.y_values == (0.0, 2.0, 4.0, 6.0)
|
|
1137
|
+
assert metric.statement == ["Average Light Level for L1 dataset: 3.0 ± 2.24 adu"]
|
|
1138
|
+
assert l1_quality_data.model_dump() == original_quality_data
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
def test_light_level_all_negative_values(
|
|
1142
|
+
quality_l1_task_with_calibrated_frames: QualityL1Metrics,
|
|
1143
|
+
):
|
|
1144
|
+
"""
|
|
1145
|
+
Given: calibrated frames whose light levels are all negative
|
|
1146
|
+
When: the L1 quality workflow task runs
|
|
1147
|
+
Then: light level is omitted, other metrics are written, and FITS headers retain their readings
|
|
1148
|
+
"""
|
|
1149
|
+
task = quality_l1_task_with_calibrated_frames
|
|
1150
|
+
frame_paths = list(task.read(tags=[Tag.calibrated(), Tag.frame()]))
|
|
1151
|
+
for frame_path in frame_paths:
|
|
1152
|
+
with fits.open(frame_path, mode="update") as hdul:
|
|
1153
|
+
hdul[0].header["LIGHTLVL"] = -1.0
|
|
1154
|
+
|
|
1155
|
+
task()
|
|
1156
|
+
|
|
1157
|
+
metrics = list(
|
|
1158
|
+
task.read(tags=[Tag.quality("GENERIC")], decoder=basemodel_decoder, model=QualityMetric)
|
|
1159
|
+
)
|
|
1160
|
+
assert "LIGHT_LEVEL" not in {metric.metric_code for metric in metrics}
|
|
1161
|
+
assert "HEALTH_STATUS" in {metric.metric_code for metric in metrics}
|
|
1162
|
+
for frame_path in frame_paths:
|
|
1163
|
+
with fits.open(frame_path) as hdul:
|
|
1164
|
+
assert hdul[0].header["LIGHTLVL"] == -1.0
|
|
1165
|
+
|
|
1166
|
+
|
|
1115
1167
|
def test_no_calibration_frames_no_l1_metrics(quality_l1_task_no_scratch_data: QualityL1Metrics):
|
|
1116
1168
|
"""
|
|
1117
1169
|
Given: No calibrated frames
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dkist-processing-common
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.6.1
|
|
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
|
|
@@ -100,6 +100,8 @@ dkist-processing-common is deployed to `PyPI <https://pypi.org/project/dkist-pro
|
|
|
100
100
|
Environment Variables
|
|
101
101
|
---------------------
|
|
102
102
|
|
|
103
|
+
.. dkist-env-table: start
|
|
104
|
+
|
|
103
105
|
.. list-table::
|
|
104
106
|
:widths: 10 90
|
|
105
107
|
:header-rows: 1
|
|
@@ -189,6 +191,21 @@ Environment Variables
|
|
|
189
191
|
* - DOCS_BASE_URL
|
|
190
192
|
- annotation=str required=False default='my_test_url' description='Base URL for the documentation site.'
|
|
191
193
|
|
|
194
|
+
.. dkist-env-table: end
|
|
195
|
+
|
|
196
|
+
Maintaining the generated table
|
|
197
|
+
###############################
|
|
198
|
+
|
|
199
|
+
The hook's additional dependencies are intentionally unpinned to avoid duplicating
|
|
200
|
+
versions maintained in ``pyproject.toml``. Consequently, the generated table may
|
|
201
|
+
temporarily reflect a newer published parent configuration than the version pinned
|
|
202
|
+
by this project.
|
|
203
|
+
|
|
204
|
+
When developing against an upstream release candidate that changes configuration
|
|
205
|
+
fields, temporarily pin the relevant hook dependency in
|
|
206
|
+
``.pre-commit-config.yaml`` to that RC. Remove the temporary pin after the final
|
|
207
|
+
upstream release is available.
|
|
208
|
+
|
|
192
209
|
Development
|
|
193
210
|
-----------
|
|
194
211
|
|
|
@@ -151,3 +151,12 @@ profile = "black"
|
|
|
151
151
|
force_single_line = true
|
|
152
152
|
combine_as_imports = false
|
|
153
153
|
line_length = 100
|
|
154
|
+
|
|
155
|
+
[tool.dkist-env-table]
|
|
156
|
+
object = "dkist_processing_common.config:common_configurations"
|
|
157
|
+
readme = "README.rst"
|
|
158
|
+
source-root = "."
|
|
159
|
+
watch = [
|
|
160
|
+
"dkist_processing_common/config.py",
|
|
161
|
+
"pyproject.toml",
|
|
162
|
+
]
|
|
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
|
{dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dkist_processing_common-14.5.2 → dkist_processing_common-14.6.1}/dkist_processing_common/manual.py
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
|