dkist-processing-common 10.6.1rc5__tar.gz → 10.6.3__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.
Files changed (128) hide show
  1. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/CHANGELOG.rst +38 -0
  2. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/PKG-INFO +7 -2
  3. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/README.rst +5 -0
  4. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/bitbucket-pipelines.yml +7 -1
  5. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/manual.py +1 -1
  6. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/wavelength.py +1 -0
  7. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/transfer_input_data.py +11 -6
  8. dkist_processing_common-10.6.3/dkist_processing_common/tests/test_manual_processing.py +34 -0
  9. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_transfer_input_data.py +48 -3
  10. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common.egg-info/PKG-INFO +7 -2
  11. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common.egg-info/SOURCES.txt +1 -2
  12. dkist_processing_common-10.6.1rc5/changelog/236.misc.1.rst +0 -2
  13. dkist_processing_common-10.6.1rc5/changelog/236.misc.rst +0 -3
  14. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/.gitignore +0 -0
  15. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/.pre-commit-config.yaml +0 -0
  16. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/.readthedocs.yml +0 -0
  17. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/.snyk +0 -0
  18. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/changelog/.gitempty +0 -0
  19. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/__init__.py +0 -0
  20. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/_util/__init__.py +0 -0
  21. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/_util/constants.py +0 -0
  22. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/_util/graphql.py +0 -0
  23. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/_util/scratch.py +0 -0
  24. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/_util/tags.py +0 -0
  25. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/__init__.py +0 -0
  26. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/asdf.py +0 -0
  27. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/bytes.py +0 -0
  28. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/fits.py +0 -0
  29. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/iobase.py +0 -0
  30. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/json.py +0 -0
  31. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/path.py +0 -0
  32. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/quality.py +0 -0
  33. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/codecs/str.py +0 -0
  34. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/config.py +0 -0
  35. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/fonts/Lato-Regular.ttf +0 -0
  36. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/fonts/__init__.py +0 -0
  37. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/__init__.py +0 -0
  38. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/constants.py +0 -0
  39. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/fits_access.py +0 -0
  40. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/flower_pot.py +0 -0
  41. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/graphql.py +0 -0
  42. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/message.py +0 -0
  43. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/message_queue_binding.py +0 -0
  44. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/metric_code.py +0 -0
  45. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/parameters.py +0 -0
  46. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/quality.py +0 -0
  47. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/tags.py +0 -0
  48. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/models/task_name.py +0 -0
  49. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/__init__.py +0 -0
  50. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/cs_step.py +0 -0
  51. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/dsps_repeat.py +0 -0
  52. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/experiment_id_bud.py +0 -0
  53. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/id_bud.py +0 -0
  54. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/l0_fits_access.py +0 -0
  55. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/l1_fits_access.py +0 -0
  56. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/near_bud.py +0 -0
  57. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/proposal_id_bud.py +0 -0
  58. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/quality.py +0 -0
  59. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/retarder.py +0 -0
  60. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/single_value_single_key_flower.py +0 -0
  61. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/task.py +0 -0
  62. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/time.py +0 -0
  63. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/unique_bud.py +0 -0
  64. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/parsers/wavelength.py +0 -0
  65. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/__init__.py +0 -0
  66. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/assemble_movie.py +0 -0
  67. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/base.py +0 -0
  68. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/l1_output_data.py +0 -0
  69. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/__init__.py +0 -0
  70. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/globus.py +0 -0
  71. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/input_dataset.py +0 -0
  72. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/interservice_bus.py +0 -0
  73. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/metadata_store.py +0 -0
  74. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/object_store.py +0 -0
  75. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/quality/__init__.py +0 -0
  76. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/quality/_base.py +0 -0
  77. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/mixin/quality/_metrics.py +0 -0
  78. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/output_data_base.py +0 -0
  79. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/parse_l0_input_data.py +0 -0
  80. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/quality_metrics.py +0 -0
  81. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/teardown.py +0 -0
  82. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/trial_catalog.py +0 -0
  83. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/trial_output_data.py +0 -0
  84. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tasks/write_l1.py +0 -0
  85. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/__init__.py +0 -0
  86. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/conftest.py +0 -0
  87. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_assemble_movie.py +0 -0
  88. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_assemble_quality.py +0 -0
  89. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_base.py +0 -0
  90. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_codecs.py +0 -0
  91. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_constants.py +0 -0
  92. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_cs_step.py +0 -0
  93. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_fits_access.py +0 -0
  94. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_flower_pot.py +0 -0
  95. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_input_dataset.py +0 -0
  96. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_interservice_bus.py +0 -0
  97. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_interservice_bus_mixin.py +0 -0
  98. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_output_data_base.py +0 -0
  99. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_parameters.py +0 -0
  100. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_parse_l0_input_data.py +0 -0
  101. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_publish_catalog_messages.py +0 -0
  102. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_quality.py +0 -0
  103. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_quality_mixin.py +0 -0
  104. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_scratch.py +0 -0
  105. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_stems.py +0 -0
  106. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_submit_dataset_metadata.py +0 -0
  107. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_tags.py +0 -0
  108. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_task_name.py +0 -0
  109. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_task_parsing.py +0 -0
  110. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_teardown.py +0 -0
  111. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_transfer_l1_output_data.py +0 -0
  112. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_trial_catalog.py +0 -0
  113. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_trial_output_data.py +0 -0
  114. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_workflow_task_base.py +0 -0
  115. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common/tests/test_write_l1.py +0 -0
  116. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common.egg-info/dependency_links.txt +0 -0
  117. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common.egg-info/requires.txt +0 -0
  118. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/dkist_processing_common.egg-info/top_level.txt +0 -0
  119. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/Makefile +0 -0
  120. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/changelog.rst +0 -0
  121. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/conf.py +0 -0
  122. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/index.rst +0 -0
  123. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/landing_page.rst +0 -0
  124. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/make.bat +0 -0
  125. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/docs/requirements.txt +0 -0
  126. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/licenses/LICENSE.rst +0 -0
  127. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/pyproject.toml +0 -0
  128. {dkist_processing_common-10.6.1rc5 → dkist_processing_common-10.6.3}/setup.cfg +0 -0
@@ -1,3 +1,41 @@
1
+ v10.6.3 (2025-03-27)
2
+ ====================
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - Fix a bug where transfer input dataset fails if any of the input dataset part documents are missing. (`#241 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/241>`__)
8
+ - Pydantic model validator now returns the validated instance. (`#240 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/240>`__)
9
+
10
+ v10.6.2 (2025-03-19)
11
+ ====================
12
+
13
+ Bugfixes
14
+ --------
15
+
16
+ - Fix a bug in manual processing where a metadata store dataclass has been previously converted to
17
+ a Pydantic BaseModel. Add a test that will catch future similar bugs. (`#239 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/239>`__)
18
+
19
+
20
+ Misc
21
+ ----
22
+
23
+ - Add coverage badge to README.rst. (`#238 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/238>`__)
24
+
25
+
26
+ v10.6.1 (2025-03-14)
27
+ ====================
28
+
29
+ Misc
30
+ ----
31
+
32
+ - Convert dataclasses in the graphql model to Pydantic BaseModels for additional validation. In the
33
+ RecipeRunResponse class, configuration is converted from a JSON dictionary to its own Pydantic BaseModel.
34
+ In the InputDatasetPartResponse class, the inputDatasetPartDocument is now returned as a list of dictionaries. (`#236 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/236>`__)
35
+ - Change returns from the metadata store queries into Pydantic BaseModel instances. Remove unnecessary parsing
36
+ and error checking in the metadata store mixin. (`#236 <https://bitbucket.org/dkistdc/dkist-processing-common/pull-requests/236>`__)
37
+
38
+
1
39
  v10.6.0 (2025-03-03)
2
40
  ====================
3
41
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 10.6.1rc5
3
+ Version: 10.6.3
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
@@ -65,6 +65,8 @@ Requires-Dist: dkist-quality<2.0,>=1.2.1; extra == "quality"
65
65
  dkist-processing-common
66
66
  =======================
67
67
 
68
+ |codecov|
69
+
68
70
  This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and `dkist-processing-*instrument*` to
69
71
  form the DKIST calibration processing stack.
70
72
 
@@ -173,3 +175,6 @@ then the Bitbucket pipeline will fail. To be able to use the same tag you must d
173
175
  # Re-tag with the same version
174
176
  git tag vWHATEVER.THE.VERSION
175
177
  git push --tags origin main
178
+
179
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-common/graph/badge.svg?token=3QSLGSEF3O
180
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-common
@@ -1,6 +1,8 @@
1
1
  dkist-processing-common
2
2
  =======================
3
3
 
4
+ |codecov|
5
+
4
6
  This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and `dkist-processing-*instrument*` to
5
7
  form the DKIST calibration processing stack.
6
8
 
@@ -109,3 +111,6 @@ then the Bitbucket pipeline will fail. To be able to use the same tag you must d
109
111
  # Re-tag with the same version
110
112
  git tag vWHATEVER.THE.VERSION
111
113
  git push --tags origin main
114
+
115
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-common/graph/badge.svg?token=3QSLGSEF3O
116
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-common
@@ -18,24 +18,28 @@ definitions:
18
18
  - chmod 755 ci_scripts/latest/execute_script.sh
19
19
  artifacts:
20
20
  - ci_scripts/latest/execute_script.sh
21
+
21
22
  - step: &lint
22
23
  caches:
23
24
  - pip
24
25
  name: Lint
25
26
  script:
26
27
  - ./ci_scripts/latest/execute_script.sh lint_python.sh
28
+
27
29
  - step: &changelog
28
30
  caches:
29
31
  - pip
30
32
  name: Changelog
31
33
  script:
32
34
  - ./ci_scripts/latest/execute_script.sh check_changelog.sh
35
+
33
36
  - step: &scan
34
37
  caches:
35
38
  - pip
36
39
  name: Scan
37
40
  script:
38
41
  - ./ci_scripts/latest/execute_script.sh scan_python.sh
42
+
39
43
  - step: &test
40
44
  caches:
41
45
  - pip
@@ -43,7 +47,9 @@ definitions:
43
47
  script:
44
48
  - pip install -U pip
45
49
  - pip install .[test]
46
- - pytest -v -n auto -m "not development" --cov dkist_processing_common
50
+ - pytest -v -n auto -m "not development" --cov dkist_processing_common --cov-report=xml --cov-report=term-missing
51
+ - ./ci_scripts/latest/execute_script.sh upload_coverage.sh
52
+
47
53
  services:
48
54
  - redis
49
55
  - broker
@@ -182,7 +182,7 @@ def writing_metadata_store_record_provenance(self, is_task_manual: bool, library
182
182
  workflowVersion=self.workflow_version,
183
183
  )
184
184
  self.write(
185
- data=asdict(params),
185
+ data=params.model_dump(),
186
186
  encoder=json_encoder,
187
187
  tags=["PROVENANCE_RECORD"],
188
188
  relative_path=f"{self.task_name}_provenance.json",
@@ -26,3 +26,4 @@ class WavelengthRange(BaseModel):
26
26
  """Validate that the max wavelength is greater than the min wavelength."""
27
27
  if self.min > self.max:
28
28
  raise ValueError("min is greater than max. Values may be reversed.")
29
+ return self
@@ -20,12 +20,17 @@ class TransferL0Data(WorkflowTaskBase, GlobusMixin, InputDatasetMixin):
20
20
 
21
21
  def download_input_dataset(self):
22
22
  """Get the input dataset document parts and save it to scratch with the appropriate tags."""
23
- if doc := self.metadata_store_input_dataset_observe_frames.inputDatasetPartDocument:
24
- self.write(doc, tags=Tag.input_dataset_observe_frames(), encoder=json_encoder)
25
- if doc := self.metadata_store_input_dataset_calibration_frames.inputDatasetPartDocument:
26
- self.write(doc, tags=Tag.input_dataset_calibration_frames(), encoder=json_encoder)
27
- if doc := self.metadata_store_input_dataset_parameters.inputDatasetPartDocument:
28
- self.write(doc, tags=Tag.input_dataset_parameters(), encoder=json_encoder)
23
+ if observe_frames := self.metadata_store_input_dataset_observe_frames:
24
+ observe_doc = observe_frames.inputDatasetPartDocument
25
+ self.write(observe_doc, tags=Tag.input_dataset_observe_frames(), encoder=json_encoder)
26
+ if calibration_frames := self.metadata_store_input_dataset_calibration_frames:
27
+ calibration_doc = calibration_frames.inputDatasetPartDocument
28
+ self.write(
29
+ calibration_doc, tags=Tag.input_dataset_calibration_frames(), encoder=json_encoder
30
+ )
31
+ if parameters := self.metadata_store_input_dataset_parameters:
32
+ parameters_doc = parameters.inputDatasetPartDocument
33
+ self.write(parameters_doc, tags=Tag.input_dataset_parameters(), encoder=json_encoder)
29
34
 
30
35
  def format_transfer_items(
31
36
  self, input_dataset_objects: list[InputDatasetObject]
@@ -0,0 +1,34 @@
1
+ import pytest
2
+
3
+ from dkist_processing_common.manual import ManualProcessing
4
+ from dkist_processing_common.tasks import WorkflowTaskBase
5
+
6
+
7
+ class ProvenanceTask(WorkflowTaskBase):
8
+ record_provenance = True
9
+
10
+ def run(self):
11
+ ...
12
+
13
+
14
+ @pytest.fixture(scope="function")
15
+ def manual_processing_run(tmp_path, recipe_run_id):
16
+ with ManualProcessing(
17
+ recipe_run_id=recipe_run_id,
18
+ workflow_path=tmp_path,
19
+ workflow_name="manual",
20
+ workflow_version="manual",
21
+ ) as manual_processing_run:
22
+ yield manual_processing_run
23
+
24
+
25
+ def test_manual_record_provenance(tmp_path, recipe_run_id, manual_processing_run):
26
+ """
27
+ Given: A WorkflowTaskBase subclass with provenance recording turned on
28
+ When: Running the task with the ManualProcessing wrapper
29
+ Then: The provenance record exists on disk
30
+ """
31
+ manual_processing_run.run_task(task=ProvenanceTask)
32
+ directory = tmp_path / str(recipe_run_id)
33
+ provenance_file = directory / "ProvenanceTask_provenance.json"
34
+ assert provenance_file.exists()
@@ -17,10 +17,20 @@ class TransferL0DataTask(TransferL0Data):
17
17
  ...
18
18
 
19
19
 
20
- @pytest.fixture
21
- def transfer_l0_data_task(recipe_run_id, tmp_path, mocker):
20
+ class FakeGQLClientMissingPart(FakeGQLClient):
21
+ """Same metadata mocker with calibration input dataset part missing."""
22
+
23
+ def execute_gql_query(self, **kwargs):
24
+ original_response = super().execute_gql_query(**kwargs)
25
+ # Remove calibration frames part
26
+ del original_response[0].recipeInstance.inputDataset.inputDatasetInputDatasetParts[2]
27
+ return original_response
28
+
29
+
30
+ def _transfer_l0_data_task_with_client(recipe_run_id, tmp_path, mocker, client_cls):
22
31
  mocker.patch(
23
- "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient", new=FakeGQLClient
32
+ "dkist_processing_common.tasks.mixin.metadata_store.GraphQLClient",
33
+ new=client_cls,
24
34
  )
25
35
  with TransferL0DataTask(
26
36
  recipe_run_id=recipe_run_id,
@@ -35,6 +45,18 @@ def transfer_l0_data_task(recipe_run_id, tmp_path, mocker):
35
45
  task._purge()
36
46
 
37
47
 
48
+ @pytest.fixture
49
+ def transfer_l0_data_task(recipe_run_id, tmp_path, mocker):
50
+ yield from _transfer_l0_data_task_with_client(recipe_run_id, tmp_path, mocker, FakeGQLClient)
51
+
52
+
53
+ @pytest.fixture
54
+ def transfer_l0_data_task_missing_part(recipe_run_id, tmp_path, mocker):
55
+ yield from _transfer_l0_data_task_with_client(
56
+ recipe_run_id, tmp_path, mocker, FakeGQLClientMissingPart
57
+ )
58
+
59
+
38
60
  def test_download_dataset(transfer_l0_data_task):
39
61
  """
40
62
  :Given: a TransferL0Data task with a valid input dataset
@@ -63,6 +85,29 @@ def test_download_dataset(transfer_l0_data_task):
63
85
  assert parameters_doc_from_file == expected_parameters_doc
64
86
 
65
87
 
88
+ def test_download_dataset_missing_part(transfer_l0_data_task_missing_part):
89
+ """
90
+ :Given: a TransferL0Data task with a valid input dataset without calibration frames
91
+ :When: downloading the dataset documents from the metadata store
92
+ :Then: the correct number of documents are written to disk
93
+ """
94
+ # Given
95
+ task = transfer_l0_data_task_missing_part
96
+ # When
97
+ task.download_input_dataset()
98
+ # Then
99
+ observe_doc_from_file = next(
100
+ task.read(tags=Tag.input_dataset_observe_frames(), decoder=json_decoder)
101
+ )
102
+ parameters_doc_from_file = next(
103
+ task.read(tags=Tag.input_dataset_parameters(), decoder=json_decoder)
104
+ )
105
+ with pytest.raises(StopIteration):
106
+ calibration_doc_from_file = next(
107
+ task.read(tags=Tag.input_dataset_calibration_frames(), decoder=json_decoder)
108
+ )
109
+
110
+
66
111
  def test_format_frame_transfer_items(transfer_l0_data_task):
67
112
  """
68
113
  :Given: a TransferL0Data task with a downloaded input dataset
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: dkist-processing-common
3
- Version: 10.6.1rc5
3
+ Version: 10.6.3
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
@@ -65,6 +65,8 @@ Requires-Dist: dkist-quality<2.0,>=1.2.1; extra == "quality"
65
65
  dkist-processing-common
66
66
  =======================
67
67
 
68
+ |codecov|
69
+
68
70
  This repository works in concert with `dkist-processing-core <https://pypi.org/project/dkist-processing-core/>`_ and `dkist-processing-*instrument*` to
69
71
  form the DKIST calibration processing stack.
70
72
 
@@ -173,3 +175,6 @@ then the Bitbucket pipeline will fail. To be able to use the same tag you must d
173
175
  # Re-tag with the same version
174
176
  git tag vWHATEVER.THE.VERSION
175
177
  git push --tags origin main
178
+
179
+ .. |codecov| image:: https://codecov.io/bb/dkistdc/dkist-processing-common/graph/badge.svg?token=3QSLGSEF3O
180
+ :target: https://codecov.io/bb/dkistdc/dkist-processing-common
@@ -7,8 +7,6 @@ README.rst
7
7
  bitbucket-pipelines.yml
8
8
  pyproject.toml
9
9
  changelog/.gitempty
10
- changelog/236.misc.1.rst
11
- changelog/236.misc.rst
12
10
  dkist_processing_common/__init__.py
13
11
  dkist_processing_common/config.py
14
12
  dkist_processing_common/manual.py
@@ -96,6 +94,7 @@ dkist_processing_common/tests/test_flower_pot.py
96
94
  dkist_processing_common/tests/test_input_dataset.py
97
95
  dkist_processing_common/tests/test_interservice_bus.py
98
96
  dkist_processing_common/tests/test_interservice_bus_mixin.py
97
+ dkist_processing_common/tests/test_manual_processing.py
99
98
  dkist_processing_common/tests/test_output_data_base.py
100
99
  dkist_processing_common/tests/test_parameters.py
101
100
  dkist_processing_common/tests/test_parse_l0_input_data.py
@@ -1,2 +0,0 @@
1
- Change returns from the metadata store queries into Pydantic BaseModel instances. Remove unnecessary parsing
2
- and error checking in the metadata store mixin.
@@ -1,3 +0,0 @@
1
- Convert dataclasses in the graphql model to Pydantic BaseModels for additional validation. In the
2
- RecipeRunResponse class, configuration is converted from a JSON dictionary to its own Pydantic BaseModel.
3
- In the InputDatasetPartResponse class, the inputDatasetPartDocument is now returned as a list of dictionaries.