dkist-processing-cryonirsp 2.1.1__tar.gz → 2.1.2__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 (137) hide show
  1. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/CHANGELOG.rst +18 -0
  2. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/PKG-INFO +80 -81
  3. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/conftest.py +31 -68
  4. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/header_models.py +5 -3
  5. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +4 -1
  6. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +4 -4
  7. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +6 -5
  8. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +1 -8
  9. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +1 -8
  10. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_ci_science.py +2 -15
  11. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_dark.py +4 -15
  12. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_fits_access.py +1 -3
  13. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_gain.py +3 -17
  14. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +3 -10
  15. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +3 -9
  16. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +1 -8
  17. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_parse.py +1 -1
  18. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_polcal_as_science.py +2 -8
  19. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_quality.py +0 -1
  20. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +1 -8
  21. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +4 -5
  22. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +1 -9
  23. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_science.py +2 -14
  24. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_solar.py +3 -3
  25. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_sp_wavelength_calibration.py +1 -8
  26. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/PKG-INFO +80 -81
  27. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/requires.txt +79 -80
  28. dkist_processing_cryonirsp-2.1.2/dkist_processing_cryonirsp.egg-info/scm_version.json +8 -0
  29. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/pyproject.toml +81 -82
  30. dkist_processing_cryonirsp-2.1.1/dkist_processing_cryonirsp.egg-info/scm_version.json +0 -8
  31. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/.gitignore +0 -0
  32. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/.pre-commit-config.yaml +0 -0
  33. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/.readthedocs.yml +0 -0
  34. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/.rovodev/.review-agent.md +0 -0
  35. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/.snyk +0 -0
  36. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/README.rst +0 -0
  37. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/SCIENCE_CHANGELOG.rst +0 -0
  38. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/bitbucket-pipelines.yml +0 -0
  39. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/changelog/.gitempty +0 -0
  40. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/__init__.py +0 -0
  41. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/codecs/__init__.py +0 -0
  42. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/codecs/fits.py +0 -0
  43. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/config.py +0 -0
  44. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  45. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/beam_boundaries.py +0 -0
  46. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/constants.py +0 -0
  47. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/dataset_extras.py +0 -0
  48. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
  49. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/fits_access.py +0 -0
  50. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/parameters.py +0 -0
  51. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/tags.py +0 -0
  52. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  53. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  54. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/check_for_gains.py +0 -0
  55. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  56. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  57. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
  58. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  59. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  60. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  61. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  62. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
  63. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  64. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  65. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  66. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  67. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  68. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  69. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  70. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  71. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  72. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  73. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  74. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  75. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  76. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  77. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  78. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  79. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  80. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
  81. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  82. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/polcal_as_science.py +0 -0
  83. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  84. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
  85. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  86. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  87. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  88. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  89. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/sp_wavelength_calibration.py +0 -0
  90. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/write_dataset_extras.py +0 -0
  91. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  92. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  93. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
  94. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  95. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
  96. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +0 -0
  97. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
  98. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  99. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  100. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  101. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
  102. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  103. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_write_dataset_extras.py +0 -0
  104. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  105. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  106. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  107. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  108. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  109. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -0
  110. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  111. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/scm_file_list.json +0 -0
  112. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  113. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/Makefile +0 -0
  114. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/bad_pixel_calibration.rst +0 -0
  115. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/beam_angle_calculation.rst +0 -0
  116. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/beam_boundary_computation.rst +0 -0
  117. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/changelog.rst +0 -0
  118. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/ci_science_calibration.rst +0 -0
  119. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/conf.py +0 -0
  120. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/dataset_extras.rst +0 -0
  121. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/index.rst +0 -0
  122. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/l0_to_l1_cryonirsp_ci-full-trial.rst +0 -0
  123. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  124. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/l0_to_l1_cryonirsp_sp-full-trial.rst +0 -0
  125. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  126. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/landing_page.rst +0 -0
  127. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/linearization.rst +0 -0
  128. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/make.bat +0 -0
  129. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/requirements.txt +0 -0
  130. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/requirements_table.rst +0 -0
  131. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/scientific_changelog.rst +0 -0
  132. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/sp_science_calibration.rst +0 -0
  133. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/docs/wavelength_calibration.rst +0 -0
  134. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/licenses/LICENSE.rst +0 -0
  135. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/science_towncrier.sh +0 -0
  136. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/setup.cfg +0 -0
  137. {dkist_processing_cryonirsp-2.1.1 → dkist_processing_cryonirsp-2.1.2}/towncrier_science.toml +0 -0
@@ -1,3 +1,21 @@
1
+ v2.1.2 (2026-09-24)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Use the "level0_spec214" file schema keyword argument in test Datasets.
8
+ With this keyword, subsequent translation of the resulting headers to
9
+ Spec 214 is not necessary. Simplify test functions that generate headers
10
+ using this change. (`#302 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/302>`__)
11
+ - Use dkist-fits-specifications v4.29.0, which includes the Trend FITS specification.
12
+ Use dkist-header-validator v6.0.0, a significant refactor that allows multi-HDU objects to be validated.
13
+ Use dkist-processing-common v14.5.0, which accommodates the changes to the header validator. (`#302 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/302>`__)
14
+ - Validators no longer have validate-and-translate methods.
15
+ Where still necessary, replace validate-and-translate calls with a call to
16
+ validate and then a call to translate. (`#302 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/302>`__)
17
+
18
+
1
19
  v2.1.1 (2026-08-28)
2
20
  ===================
3
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 2.1.1
3
+ Version: 2.1.2
4
4
  Summary: Science processing code for the Cryo-NIRSP instrument on DKIST
5
5
  Author-email: NSO / AURA <dkistdc@nso.edu>
6
6
  License: BSD-3-Clause
@@ -15,9 +15,9 @@ Requires-Python: >=3.13
15
15
  Description-Content-Type: text/x-rst
16
16
  Requires-Dist: Pillow==10.4.0
17
17
  Requires-Dist: astropy==7.0.2
18
- Requires-Dist: dkist-fits-specifications==4.28.1
19
- Requires-Dist: dkist-header-validator==5.4.0
20
- Requires-Dist: dkist-processing-common==14.4.0
18
+ Requires-Dist: dkist-fits-specifications==4.29.0
19
+ Requires-Dist: dkist-header-validator==6.0.0
20
+ Requires-Dist: dkist-processing-common==14.5.0
21
21
  Requires-Dist: dkist-processing-math==2.2.3
22
22
  Requires-Dist: dkist-processing-pac==3.1.2
23
23
  Requires-Dist: dkist-spectral-lines==3.0.1
@@ -38,7 +38,7 @@ Requires-Dist: pytest-cov; extra == "test"
38
38
  Requires-Dist: pytest-xdist; extra == "test"
39
39
  Requires-Dist: pytest-mock; extra == "test"
40
40
  Requires-Dist: hypothesis; extra == "test"
41
- Requires-Dist: dkist-data-simulator>=5.2.6; extra == "test"
41
+ Requires-Dist: dkist-data-simulator; extra == "test"
42
42
  Requires-Dist: dkist-processing-cryonirsp[inventory]; extra == "test"
43
43
  Requires-Dist: dkist-processing-cryonirsp[asdf]; extra == "test"
44
44
  Requires-Dist: dkist-processing-cryonirsp[quality]; extra == "test"
@@ -65,59 +65,58 @@ Provides-Extra: frozen
65
65
  Requires-Dist: Deprecated==1.3.1; extra == "frozen"
66
66
  Requires-Dist: ImageIO==2.37.4; extra == "frozen"
67
67
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
68
- Requires-Dist: Mako==1.4.1; extra == "frozen"
68
+ Requires-Dist: Mako==1.4.3; extra == "frozen"
69
69
  Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
70
70
  Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
71
- Requires-Dist: PyJWT==2.13.0; extra == "frozen"
71
+ Requires-Dist: PyJWT==2.15.0; extra == "frozen"
72
72
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
73
73
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
74
74
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
75
- Requires-Dist: SQLAlchemy==2.0.52; extra == "frozen"
75
+ Requires-Dist: SQLAlchemy==2.0.54; extra == "frozen"
76
76
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
77
77
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
78
- Requires-Dist: aioftp==0.28.0; extra == "frozen"
78
+ Requires-Dist: aioftp==0.28.3; extra == "frozen"
79
79
  Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
80
80
  Requires-Dist: aiohttp==3.14.3; extra == "frozen"
81
81
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
82
- Requires-Dist: aiosmtplib==5.1.2; extra == "frozen"
82
+ Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
83
83
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
84
- Requires-Dist: alembic==1.19.1; extra == "frozen"
85
- Requires-Dist: amqp==5.3.1; extra == "frozen"
84
+ Requires-Dist: alembic==1.20.0; extra == "frozen"
85
+ Requires-Dist: amqp==5.4.0; extra == "frozen"
86
86
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
87
87
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
88
- Requires-Dist: anyio==4.14.2; extra == "frozen"
88
+ Requires-Dist: anyio==4.15.1; extra == "frozen"
89
89
  Requires-Dist: apache-airflow==3.3.1; extra == "frozen"
90
90
  Requires-Dist: apache-airflow-core==3.3.1; extra == "frozen"
91
- Requires-Dist: apache-airflow-providers-celery==3.23.1; extra == "frozen"
92
- Requires-Dist: apache-airflow-providers-common-compat==1.18.0; extra == "frozen"
93
- Requires-Dist: apache-airflow-providers-common-io==1.8.0; extra == "frozen"
91
+ Requires-Dist: apache-airflow-providers-celery==3.24.0; extra == "frozen"
92
+ Requires-Dist: apache-airflow-providers-common-compat==1.19.0; extra == "frozen"
93
+ Requires-Dist: apache-airflow-providers-common-io==1.9.0; extra == "frozen"
94
94
  Requires-Dist: apache-airflow-providers-common-sql==2.1.1; extra == "frozen"
95
95
  Requires-Dist: apache-airflow-providers-postgres==7.0.2; extra == "frozen"
96
- Requires-Dist: apache-airflow-providers-smtp==3.0.3; extra == "frozen"
97
- Requires-Dist: apache-airflow-providers-standard==1.18.0; extra == "frozen"
96
+ Requires-Dist: apache-airflow-providers-smtp==3.0.4; extra == "frozen"
97
+ Requires-Dist: apache-airflow-providers-standard==1.19.0; extra == "frozen"
98
98
  Requires-Dist: apache-airflow-task-sdk==1.3.1; extra == "frozen"
99
- Requires-Dist: appnope==1.0.0; extra == "frozen"
100
99
  Requires-Dist: argcomplete==3.7.2; extra == "frozen"
101
100
  Requires-Dist: argon2-cffi==25.1.0; extra == "frozen"
102
101
  Requires-Dist: argon2-cffi-bindings==26.1.0; extra == "frozen"
103
102
  Requires-Dist: arrow==1.4.0; extra == "frozen"
104
- Requires-Dist: asdf==5.3.1; extra == "frozen"
103
+ Requires-Dist: asdf==5.4.0; extra == "frozen"
105
104
  Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
106
105
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
107
106
  Requires-Dist: asteval==1.0.10; extra == "frozen"
108
107
  Requires-Dist: astropy==7.0.2; extra == "frozen"
109
- Requires-Dist: astropy-iers-data==0.2026.8.24.0.24.29; extra == "frozen"
108
+ Requires-Dist: astropy-iers-data==0.2026.9.21.0.56.25; extra == "frozen"
110
109
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
111
110
  Requires-Dist: async-lru==2.3.0; extra == "frozen"
112
111
  Requires-Dist: asyncpg==0.31.0; extra == "frozen"
113
112
  Requires-Dist: attrs==26.1.0; extra == "frozen"
114
113
  Requires-Dist: babel==2.18.0; extra == "frozen"
115
114
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
116
- Requires-Dist: billiard==4.2.4; extra == "frozen"
115
+ Requires-Dist: billiard==4.3.0; extra == "frozen"
117
116
  Requires-Dist: bleach==6.4.0; extra == "frozen"
118
- Requires-Dist: boto3==1.43.83; extra == "frozen"
119
- Requires-Dist: botocore==1.43.83; extra == "frozen"
120
- Requires-Dist: cachetools==7.1.7; extra == "frozen"
117
+ Requires-Dist: boto3==1.43.101; extra == "frozen"
118
+ Requires-Dist: botocore==1.43.101; extra == "frozen"
119
+ Requires-Dist: cachetools==7.2.0; extra == "frozen"
121
120
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
122
121
  Requires-Dist: celery==5.6.3; extra == "frozen"
123
122
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
@@ -126,88 +125,89 @@ Requires-Dist: charset-normalizer==3.5.1; extra == "frozen"
126
125
  Requires-Dist: click==8.5.0; extra == "frozen"
127
126
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
128
127
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
129
- Requires-Dist: click-repl==0.3.0; extra == "frozen"
128
+ Requires-Dist: click-repl==0.4.0; extra == "frozen"
129
+ Requires-Dist: cloudpickle==3.1.2; extra == "frozen"
130
130
  Requires-Dist: colorlog==6.12.0; extra == "frozen"
131
131
  Requires-Dist: comm==0.2.3; extra == "frozen"
132
- Requires-Dist: contourpy==1.3.3; extra == "frozen"
132
+ Requires-Dist: contourpy==1.4.0; extra == "frozen"
133
133
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
134
134
  Requires-Dist: croniter==6.2.4; extra == "frozen"
135
135
  Requires-Dist: cryptography==50.0.1; extra == "frozen"
136
136
  Requires-Dist: cycler==0.12.1; extra == "frozen"
137
- Requires-Dist: debugpy==1.8.21; extra == "frozen"
137
+ Requires-Dist: debugpy==1.8.22; extra == "frozen"
138
138
  Requires-Dist: decorator==5.3.1; extra == "frozen"
139
139
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
140
140
  Requires-Dist: dill==0.4.1; extra == "frozen"
141
- Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
142
- Requires-Dist: dkist-processing-common==14.4.0; extra == "frozen"
141
+ Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
142
+ Requires-Dist: dkist-processing-common==14.5.0; extra == "frozen"
143
143
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
144
- Requires-Dist: dkist-processing-cryonirsp==2.1.1; extra == "frozen"
144
+ Requires-Dist: dkist-processing-cryonirsp==2.1.2; extra == "frozen"
145
145
  Requires-Dist: dkist-processing-math==2.2.3; extra == "frozen"
146
146
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
147
147
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
148
148
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
149
- Requires-Dist: dkist_fits_specifications==4.28.1; extra == "frozen"
149
+ Requires-Dist: dkist_fits_specifications==4.29.0; extra == "frozen"
150
150
  Requires-Dist: dnspython==2.8.0; extra == "frozen"
151
151
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
152
152
  Requires-Dist: executing==2.2.1; extra == "frozen"
153
153
  Requires-Dist: fastapi==0.136.3; extra == "frozen"
154
154
  Requires-Dist: fastapi-cli==0.0.32; extra == "frozen"
155
155
  Requires-Dist: fastjsonschema==2.22.2; extra == "frozen"
156
- Requires-Dist: flower==2.1.0; extra == "frozen"
157
- Requires-Dist: fonttools==4.63.0; extra == "frozen"
156
+ Requires-Dist: flower==2.2.0; extra == "frozen"
157
+ Requires-Dist: fonttools==4.66.0; extra == "frozen"
158
158
  Requires-Dist: fqdn==1.5.1; extra == "frozen"
159
159
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
160
- Requires-Dist: fsspec==2026.7.0; extra == "frozen"
160
+ Requires-Dist: fsspec==2026.9.0; extra == "frozen"
161
161
  Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
162
- Requires-Dist: googleapis-common-protos==1.75.2; extra == "frozen"
162
+ Requires-Dist: googleapis-common-protos==1.75.3; extra == "frozen"
163
163
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
164
164
  Requires-Dist: greenback==1.3.0; extra == "frozen"
165
- Requires-Dist: greenlet==3.5.5; extra == "frozen"
166
- Requires-Dist: grpcio==1.83.1; extra == "frozen"
165
+ Requires-Dist: greenlet==3.5.6; extra == "frozen"
166
+ Requires-Dist: grpcio==1.84.0; extra == "frozen"
167
167
  Requires-Dist: h11==0.16.0; extra == "frozen"
168
168
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
169
169
  Requires-Dist: httptools==0.8.0; extra == "frozen"
170
170
  Requires-Dist: httpx==0.28.1; extra == "frozen"
171
171
  Requires-Dist: humanize==4.16.0; extra == "frozen"
172
- Requires-Dist: idna==3.19; extra == "frozen"
172
+ Requires-Dist: idna==3.20; extra == "frozen"
173
173
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
174
174
  Requires-Dist: importlib_metadata==9.0.1; extra == "frozen"
175
175
  Requires-Dist: ipykernel==7.3.0; extra == "frozen"
176
- Requires-Dist: ipython==9.17.0; extra == "frozen"
176
+ Requires-Dist: ipython==9.17.1; extra == "frozen"
177
177
  Requires-Dist: ipython_pygments_lexers==1.1.1; extra == "frozen"
178
178
  Requires-Dist: isoduration==20.11.0; extra == "frozen"
179
179
  Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
180
180
  Requires-Dist: jedi==0.20.0; extra == "frozen"
181
181
  Requires-Dist: jmespath==1.1.0; extra == "frozen"
182
- Requires-Dist: joblib==1.5.3; extra == "frozen"
182
+ Requires-Dist: joblib==1.6.0; extra == "frozen"
183
183
  Requires-Dist: json5==0.15.0; extra == "frozen"
184
184
  Requires-Dist: jsonpointer==3.1.1; extra == "frozen"
185
185
  Requires-Dist: jsonschema==4.26.0; extra == "frozen"
186
186
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
187
187
  Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
188
188
  Requires-Dist: jupyter-lsp==2.3.1; extra == "frozen"
189
- Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
189
+ Requires-Dist: jupyter_builder==1.2.3; extra == "frozen"
190
190
  Requires-Dist: jupyter_client==8.10.0; extra == "frozen"
191
191
  Requires-Dist: jupyter_core==5.9.1; extra == "frozen"
192
- Requires-Dist: jupyter_server==2.21.0; extra == "frozen"
192
+ Requires-Dist: jupyter_server==2.21.1; extra == "frozen"
193
193
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
194
- Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
194
+ Requires-Dist: jupyterlab==4.6.4; extra == "frozen"
195
195
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
196
- Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
196
+ Requires-Dist: jupyterlab_server==2.28.1; extra == "frozen"
197
197
  Requires-Dist: kiwisolver==1.5.1; extra == "frozen"
198
198
  Requires-Dist: kombu==5.6.2; extra == "frozen"
199
199
  Requires-Dist: largestinteriorrectangle==0.2.1; extra == "frozen"
200
200
  Requires-Dist: lark==1.3.1; extra == "frozen"
201
- Requires-Dist: lazy-loader==0.5; extra == "frozen"
201
+ Requires-Dist: lazy-loader==0.6; extra == "frozen"
202
202
  Requires-Dist: lazy-object-proxy==1.12.0; extra == "frozen"
203
203
  Requires-Dist: libcst==1.9.0; extra == "frozen"
204
- Requires-Dist: linkify-it-py==2.1.1; extra == "frozen"
204
+ Requires-Dist: linkify-it-py==2.2.0; extra == "frozen"
205
205
  Requires-Dist: llvmlite==0.44.0; extra == "frozen"
206
206
  Requires-Dist: lmfit==1.3.4; extra == "frozen"
207
207
  Requires-Dist: lockfile==0.12.2; extra == "frozen"
208
208
  Requires-Dist: loguru==0.7.3; extra == "frozen"
209
209
  Requires-Dist: markdown-it-py==4.2.0; extra == "frozen"
210
- Requires-Dist: matplotlib==3.11.1; extra == "frozen"
210
+ Requires-Dist: matplotlib==3.11.2; extra == "frozen"
211
211
  Requires-Dist: matplotlib-inline==0.2.2; extra == "frozen"
212
212
  Requires-Dist: mdurl==0.1.2; extra == "frozen"
213
213
  Requires-Dist: methodtools==0.4.7; extra == "frozen"
@@ -215,15 +215,15 @@ Requires-Dist: mistune==3.3.4; extra == "frozen"
215
215
  Requires-Dist: more-itertools==11.1.0; extra == "frozen"
216
216
  Requires-Dist: moviepy==2.1.2; extra == "frozen"
217
217
  Requires-Dist: msgspec==0.21.1; extra == "frozen"
218
- Requires-Dist: multidict==6.7.1; extra == "frozen"
219
- Requires-Dist: narwhals==2.25.0; extra == "frozen"
218
+ Requires-Dist: multidict==6.9.1; extra == "frozen"
219
+ Requires-Dist: narwhals==2.26.0; extra == "frozen"
220
220
  Requires-Dist: natsort==8.4.0; extra == "frozen"
221
221
  Requires-Dist: nbclient==0.11.0; extra == "frozen"
222
222
  Requires-Dist: nbconvert==7.17.1; extra == "frozen"
223
223
  Requires-Dist: nbformat==5.11.1; extra == "frozen"
224
- Requires-Dist: nest-asyncio2==1.7.2; extra == "frozen"
225
- Requires-Dist: networkx==3.6.1; extra == "frozen"
226
- Requires-Dist: notebook==7.6.2; extra == "frozen"
224
+ Requires-Dist: nest-asyncio2==1.7.3; extra == "frozen"
225
+ Requires-Dist: networkx==3.7; extra == "frozen"
226
+ Requires-Dist: notebook==7.6.3; extra == "frozen"
227
227
  Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
228
228
  Requires-Dist: numba==0.61.2; extra == "frozen"
229
229
  Requires-Dist: numpy==2.2.5; extra == "frozen"
@@ -254,7 +254,7 @@ Requires-Dist: opentelemetry-semantic-conventions==0.65b0; extra == "frozen"
254
254
  Requires-Dist: opentelemetry-util-http==0.65b0; extra == "frozen"
255
255
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
256
256
  Requires-Dist: packaging==26.3; extra == "frozen"
257
- Requires-Dist: pandas==3.0.5; extra == "frozen"
257
+ Requires-Dist: pandas==3.0.6; extra == "frozen"
258
258
  Requires-Dist: pandocfilters==1.5.1; extra == "frozen"
259
259
  Requires-Dist: parfive==2.3.1; extra == "frozen"
260
260
  Requires-Dist: parso==0.8.7; extra == "frozen"
@@ -265,35 +265,35 @@ Requires-Dist: pexpect==4.9.0; extra == "frozen"
265
265
  Requires-Dist: pika==1.4.4; extra == "frozen"
266
266
  Requires-Dist: pillow==10.4.0; extra == "frozen"
267
267
  Requires-Dist: pip==26.2.1; extra == "frozen"
268
- Requires-Dist: platformdirs==4.11.5; extra == "frozen"
268
+ Requires-Dist: platformdirs==4.11.12; extra == "frozen"
269
269
  Requires-Dist: pluggy==1.6.0; extra == "frozen"
270
270
  Requires-Dist: pooch==1.9.0; extra == "frozen"
271
271
  Requires-Dist: proglog==0.1.12; extra == "frozen"
272
272
  Requires-Dist: prometheus_client==0.26.0; extra == "frozen"
273
273
  Requires-Dist: prompt_toolkit==3.0.53; extra == "frozen"
274
- Requires-Dist: propcache==0.5.2; extra == "frozen"
275
- Requires-Dist: protobuf==7.36.0; extra == "frozen"
274
+ Requires-Dist: propcache==0.5.4; extra == "frozen"
275
+ Requires-Dist: protobuf==7.36.2; extra == "frozen"
276
276
  Requires-Dist: psutil==7.2.2; extra == "frozen"
277
- Requires-Dist: psycopg==3.3.4; extra == "frozen"
278
- Requires-Dist: psycopg-binary==3.3.4; extra == "frozen"
279
- Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
277
+ Requires-Dist: psycopg==3.3.6; extra == "frozen"
278
+ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
279
+ Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
280
280
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
281
- Requires-Dist: pure_eval==0.2.3; extra == "frozen"
281
+ Requires-Dist: pure_eval==0.2.4; extra == "frozen"
282
282
  Requires-Dist: pycparser==3.0; extra == "frozen"
283
283
  Requires-Dist: pydantic==2.13.5; extra == "frozen"
284
284
  Requires-Dist: pydantic-extra-types==2.11.1; extra == "frozen"
285
285
  Requires-Dist: pydantic-settings==2.15.0; extra == "frozen"
286
286
  Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
287
287
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
288
- Requires-Dist: pygtrie==2.5.0; extra == "frozen"
289
- Requires-Dist: pyparsing==3.3.2; extra == "frozen"
288
+ Requires-Dist: pygtrie==2.6.2; extra == "frozen"
289
+ Requires-Dist: pyparsing==3.3.3; extra == "frozen"
290
290
  Requires-Dist: python-daemon==3.1.2; extra == "frozen"
291
291
  Requires-Dist: python-dateutil==2.9.0.post0; extra == "frozen"
292
292
  Requires-Dist: python-dotenv==1.2.3; extra == "frozen"
293
293
  Requires-Dist: python-json-logger==4.2.0; extra == "frozen"
294
294
  Requires-Dist: python-multipart==0.0.32; extra == "frozen"
295
- Requires-Dist: python-slugify==8.0.4; extra == "frozen"
296
- Requires-Dist: pytz==2026.3.post1; extra == "frozen"
295
+ Requires-Dist: python-slugify==9.1.1; extra == "frozen"
296
+ Requires-Dist: pytz==2026.4; extra == "frozen"
297
297
  Requires-Dist: pyzmq==27.2.0; extra == "frozen"
298
298
  Requires-Dist: redis==6.4.0; extra == "frozen"
299
299
  Requires-Dist: referencing==0.37.0; extra == "frozen"
@@ -303,7 +303,7 @@ Requires-Dist: rfc3986-validator==0.1.1; extra == "frozen"
303
303
  Requires-Dist: rfc3987-syntax==1.1.0; extra == "frozen"
304
304
  Requires-Dist: rich==15.0.0; extra == "frozen"
305
305
  Requires-Dist: rich-argparse==1.8.0; extra == "frozen"
306
- Requires-Dist: rich-toolkit==0.20.3; extra == "frozen"
306
+ Requires-Dist: rich-toolkit==0.20.5; extra == "frozen"
307
307
  Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
308
308
  Requires-Dist: s3transfer==0.19.2; extra == "frozen"
309
309
  Requires-Dist: scikit-image==0.25.2; extra == "frozen"
@@ -315,11 +315,11 @@ Requires-Dist: shellingham==1.5.4; extra == "frozen"
315
315
  Requires-Dist: six==1.17.0; extra == "frozen"
316
316
  Requires-Dist: sniffio==1.3.1; extra == "frozen"
317
317
  Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
318
- Requires-Dist: soupsieve==2.9.2; extra == "frozen"
318
+ Requires-Dist: soupsieve==2.10; extra == "frozen"
319
319
  Requires-Dist: sqids==0.5.1; extra == "frozen"
320
320
  Requires-Dist: sqlparse==0.6.0; extra == "frozen"
321
321
  Requires-Dist: stack-data==0.6.3; extra == "frozen"
322
- Requires-Dist: starlette==1.6.0; extra == "frozen"
322
+ Requires-Dist: starlette==1.7.0; extra == "frozen"
323
323
  Requires-Dist: structlog==26.1.0; extra == "frozen"
324
324
  Requires-Dist: sunpy==6.1.1; extra == "frozen"
325
325
  Requires-Dist: svcs==26.2.0; extra == "frozen"
@@ -329,37 +329,36 @@ Requires-Dist: tenacity==8.5.0; extra == "frozen"
329
329
  Requires-Dist: termcolor==3.3.0; extra == "frozen"
330
330
  Requires-Dist: terminado==0.18.1; extra == "frozen"
331
331
  Requires-Dist: text-unidecode==1.3; extra == "frozen"
332
- Requires-Dist: threadpoolctl==3.6.0; extra == "frozen"
333
- Requires-Dist: tifffile==2026.8.23; extra == "frozen"
332
+ Requires-Dist: threadpoolctl==3.7.0; extra == "frozen"
333
+ Requires-Dist: tifffile==2026.9.20; extra == "frozen"
334
334
  Requires-Dist: tinycss2==1.5.1; extra == "frozen"
335
- Requires-Dist: tornado==6.5.8; extra == "frozen"
336
- Requires-Dist: tqdm==4.70.0; extra == "frozen"
335
+ Requires-Dist: tornado==6.5.10; extra == "frozen"
336
+ Requires-Dist: tqdm==4.70.1; extra == "frozen"
337
337
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
338
  Requires-Dist: typer==0.27.2; extra == "frozen"
339
339
  Requires-Dist: typing-inspection==0.4.4; extra == "frozen"
340
340
  Requires-Dist: typing_extensions==4.16.0; extra == "frozen"
341
- Requires-Dist: tzdata==2026.3; extra == "frozen"
341
+ Requires-Dist: tzdata==2026.4; extra == "frozen"
342
342
  Requires-Dist: tzlocal==5.4.4; extra == "frozen"
343
- Requires-Dist: uc-micro-py==2.0.0; extra == "frozen"
344
343
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
345
344
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
346
345
  Requires-Dist: uri-template==1.3.0; extra == "frozen"
347
- Requires-Dist: urllib3==2.7.0; extra == "frozen"
346
+ Requires-Dist: urllib3==2.8.0; extra == "frozen"
348
347
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
349
- Requires-Dist: uvicorn==0.52.4; extra == "frozen"
348
+ Requires-Dist: uvicorn==0.53.0; extra == "frozen"
350
349
  Requires-Dist: uvloop==0.22.1; extra == "frozen"
351
350
  Requires-Dist: vine==5.1.0; extra == "frozen"
352
351
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
353
- Requires-Dist: watchfiles==1.2.0; extra == "frozen"
354
- Requires-Dist: wcwidth==0.8.3; extra == "frozen"
352
+ Requires-Dist: watchfiles==1.3.0; extra == "frozen"
353
+ Requires-Dist: wcwidth==0.9.1; extra == "frozen"
355
354
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
356
355
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
357
- Requires-Dist: websocket-client==1.9.0; extra == "frozen"
356
+ Requires-Dist: websocket-client==1.9.2; extra == "frozen"
358
357
  Requires-Dist: websockets==17.1; extra == "frozen"
359
358
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
360
- Requires-Dist: wrapt==2.3.0; extra == "frozen"
359
+ Requires-Dist: wrapt==2.4.1; extra == "frozen"
361
360
  Requires-Dist: yamale==6.1.0; extra == "frozen"
362
- Requires-Dist: yarl==1.24.5; extra == "frozen"
361
+ Requires-Dist: yarl==1.25.1; extra == "frozen"
363
362
  Requires-Dist: zipp==4.1.0; extra == "frozen"
364
363
 
365
364
  dkist-processing-cryonirsp
@@ -1,12 +1,11 @@
1
1
  import json
2
- from collections.abc import Iterable
3
2
  from dataclasses import asdict
4
3
  from dataclasses import dataclass
5
4
  from dataclasses import field
6
5
  from dataclasses import is_dataclass
7
6
  from random import randint
8
- from typing import Any
9
7
  from typing import Callable
8
+ from typing import Generator
10
9
  from typing import Type
11
10
  from typing import TypeVar
12
11
 
@@ -16,9 +15,7 @@ from astropy.io import fits
16
15
  from astropy.time import Time
17
16
  from astropy.time import TimeDelta
18
17
  from dkist_data_simulator.spec122 import Spec122Dataset
19
- from dkist_header_validator import spec122_validator
20
18
  from dkist_header_validator.translator import sanitize_to_spec214_level1
21
- from dkist_header_validator.translator import translate_spec122_to_spec214_l0
22
19
  from dkist_processing_common.codecs.array import array_encoder
23
20
  from dkist_processing_common.codecs.basemodel import basemodel_encoder
24
21
  from dkist_processing_common.codecs.fits import fits_array_encoder
@@ -40,57 +37,38 @@ from dkist_processing_cryonirsp.tests.header_models import CryonirspHeaders
40
37
 
41
38
 
42
39
  def generate_fits_frame(
43
- header_generator: Iterable, shape=None, *, signal: float = 150.0
40
+ header: fits.Header | Generator[fits.Header],
41
+ shape: tuple[int, ...] | None = None,
42
+ signal: float = 150.0,
43
+ data: np.ndarray | None = None,
44
44
  ) -> fits.HDUList:
45
- shape = shape or (1, 10, 10)
46
- generated_header = next(header_generator)
47
- translated_header = translate_spec122_to_spec214_l0(generated_header)
48
- del translated_header["COMMENT"]
49
- hdu = fits.PrimaryHDU(data=np.ones(shape=shape) * signal, header=fits.Header(translated_header))
50
- return fits.HDUList([hdu])
51
-
52
-
53
- def generate_full_cryonirsp_fits_frame(
54
- header_generator: Iterable, data: np.ndarray | None = None
55
- ) -> fits.HDUList:
56
- if data is None:
57
- data = np.ones(shape=(1, 2000, 2560))
58
- data[0, 1000:, :] *= np.arange(1000)[:, None][::-1, :] # Make beam 2 different and flip it
59
- generated_header = next(header_generator)
60
- translated_header = translate_spec122_to_spec214_l0(generated_header)
61
- del translated_header["COMMENT"]
62
- hdu = fits.PrimaryHDU(data=data, header=fits.Header(translated_header))
63
- return fits.HDUList([hdu])
64
-
65
-
66
- def generate_214_l0_fits_frame(
67
- s122_header: fits.Header | dict[str, Any], data: np.ndarray | None = None
68
- ) -> fits.HDUList:
69
- """Convert S122 header into 214 L0"""
70
- if data is None:
71
- data = np.ones((1, 10, 10))
72
- translated_header = translate_spec122_to_spec214_l0(s122_header)
73
- del translated_header["COMMENT"]
74
- hdu = fits.PrimaryHDU(data=data, header=fits.Header(translated_header))
45
+ """
46
+ Make a frame from a header or a header generator and optional data parameters.
47
+ """
48
+ if not isinstance(data, np.ndarray):
49
+ shape = shape or (1, 10, 10)
50
+ data = np.ones(shape) * signal
51
+ if not isinstance(header, fits.Header):
52
+ header = next(header)
53
+ hdu = fits.PrimaryHDU(data=data, header=header)
75
54
  return fits.HDUList([hdu])
76
55
 
77
56
 
78
- def generate_214_l1_fits_frame(
79
- s122_header: fits.Header, data: np.ndarray | None = None
57
+ def generate_single_214_l1_fits_frame(
58
+ header: fits.Header, data: np.ndarray | None = None
80
59
  ) -> fits.HDUList:
81
- """Convert S122 header into 214 L1 only.
60
+ """
61
+ Convert header into 214 L1 only.
82
62
 
83
63
  This does NOT include populating all L1 headers, just removing 214 L0 only headers.
84
-
85
- NOTE: The stuff you care about will be in hdulist[1]
86
64
  """
87
- l0_s214_hdul = generate_214_l0_fits_frame(s122_header, data)
88
- l0_header = l0_s214_hdul[0].header
89
- l0_header["DNAXIS"] = 5
90
- l0_header["DAAXES"] = 2
91
- l0_header["DEAXES"] = 3
92
- l1_header = sanitize_to_spec214_level1(input_headers=l0_header)
93
- hdu = fits.CompImageHDU(header=l1_header, data=l0_s214_hdul[0].data)
65
+ if data is None:
66
+ data = np.ones((1, 10, 10))
67
+ header["DNAXIS"] = 5
68
+ header["DAAXES"] = 2
69
+ header["DEAXES"] = 3
70
+ l1_header = sanitize_to_spec214_level1(header)
71
+ hdu = fits.CompImageHDU(header=l1_header, data=data)
94
72
 
95
73
  return fits.HDUList([fits.PrimaryHDU(), hdu])
96
74
 
@@ -283,14 +261,7 @@ def cryonirsp_ci_headers() -> fits.Header:
283
261
  A header with some common by-frame CI keywords
284
262
  """
285
263
  ds = CryonirspCIHeaders(dataset_shape=(2, 10, 10), array_shape=(1, 10, 10), time_delta=1)
286
- header_list = [
287
- spec122_validator.validate_and_translate_to_214_l0(d.header(), return_type=fits.HDUList)[
288
- 0
289
- ].header
290
- for d in ds
291
- ]
292
-
293
- return header_list[0]
264
+ return fits.Header(ds.header())
294
265
 
295
266
 
296
267
  @pytest.fixture()
@@ -314,14 +285,7 @@ def cryonirsp_headers() -> fits.Header:
314
285
  A header with some common by-frame keywords
315
286
  """
316
287
  ds = CryonirspHeaders(dataset_shape=(2, 10, 10), array_shape=(1, 10, 10), time_delta=1)
317
- header_list = [
318
- spec122_validator.validate_and_translate_to_214_l0(d.header(), return_type=fits.HDUList)[
319
- 0
320
- ].header
321
- for d in ds
322
- ]
323
-
324
- return header_list[0]
288
+ return fits.Header(ds.header())
325
289
 
326
290
 
327
291
  @pytest.fixture()
@@ -595,15 +559,14 @@ def _write_frames_to_task(
595
559
 
596
560
  frame = next(frame_generator)
597
561
 
598
- header = frame.header()
562
+ header = fits.Header(frame.header())
599
563
  data = frame.data
600
564
  frame_tags = tags + tag_func(frame)
601
- translated_header = fits.Header(translate_spec122_to_spec214_l0(header))
602
- translated_header = change_translated_headers(translated_header)
603
- ramp_tags = tag_ramp_frames(translated_header)
565
+ header = change_translated_headers(header)
566
+ ramp_tags = tag_ramp_frames(header)
604
567
  frame_tags = frame_tags + ramp_tags
605
568
 
606
- task.write(data=data, header=translated_header, tags=frame_tags, encoder=fits_array_encoder)
569
+ task.write(data=data, header=header, tags=frame_tags, encoder=fits_array_encoder)
607
570
  num_frames += 1
608
571
 
609
572
  return num_frames
@@ -24,6 +24,7 @@ class CryonirspHeaders(Spec122Dataset):
24
24
  time_delta: 10,
25
25
  instrument: str = "cryonirsp",
26
26
  exp_time: float = 15.0,
27
+ file_schema="level0_spec214",
27
28
  **kwargs,
28
29
  ):
29
30
  super().__init__(
@@ -31,6 +32,7 @@ class CryonirspHeaders(Spec122Dataset):
31
32
  array_shape=array_shape,
32
33
  time_delta=time_delta,
33
34
  instrument=instrument,
35
+ file_schema=file_schema,
34
36
  **kwargs,
35
37
  )
36
38
  self.add_constant_key("WAVELNTH", 1083.0)
@@ -130,7 +132,7 @@ class CryonirspHeadersValidNonLinearizedFrames(CryonirspHeaders):
130
132
  roi_y_origin: int,
131
133
  roi_y_size: int,
132
134
  date_obs: str,
133
- exposure_time: float,
135
+ exposure_time_per_frame: float,
134
136
  arm_id: str,
135
137
  **kwargs,
136
138
  ):
@@ -144,7 +146,7 @@ class CryonirspHeadersValidNonLinearizedFrames(CryonirspHeaders):
144
146
  self.add_constant_key("CAM__036", roi_x_size)
145
147
  self.add_constant_key("CAM__037", roi_y_size)
146
148
  self.add_constant_key("DATE-OBS", date_obs)
147
- self.add_constant_key("TEXPOSUR", exposure_time)
149
+ self.add_constant_key("TEXPOSUR", exposure_time_per_frame)
148
150
  self.add_constant_key("CNFILTNP", AllowableOpticalDensityFilterNames.G358.value)
149
151
  self.add_constant_key("DKIST011", "1999-12-31T23:59:59")
150
152
 
@@ -153,7 +155,7 @@ class CryonirspHeadersValidNonLinearizedFrames(CryonirspHeaders):
153
155
  def current_frame_number(self, key: str):
154
156
  return self.index
155
157
 
156
- @key_function("XPOSURE")
158
+ @key_function("CAM__004")
157
159
  # set the exposure time for each frame in the ramp
158
160
  def exposure_time(self, key: float):
159
161
  return 100 * self.index * 0.01
@@ -156,7 +156,10 @@ def spoof_obs_lin_parsed_constants(
156
156
  def run(self) -> None:
157
157
  self.constants._update(
158
158
  {
159
- CryonirspBudName.observe_exposure_conditions_list.value: self.constants.solar_gain_exposure_conditions_list
159
+ CryonirspBudName.observe_exposure_conditions_list.value: [
160
+ i.model_dump_json()
161
+ for i in self.constants.solar_gain_exposure_conditions_list
162
+ ]
160
163
  }
161
164
  )
162
165
 
@@ -8,6 +8,7 @@ from random import randint
8
8
  import asdf
9
9
  from astropy.io import fits
10
10
  from dkist_header_validator import spec122_validator
11
+ from dkist_header_validator.translator import translate_spec122_to_spec214_l0
11
12
  from dkist_processing_common.codecs.basemodel import basemodel_decoder
12
13
  from dkist_processing_common.codecs.basemodel import basemodel_encoder
13
14
  from dkist_processing_common.models.input_dataset import InputDatasetFilePointer
@@ -544,11 +545,10 @@ def translate_122_to_214_task(suffix: str):
544
545
  hdu = hdl[1] if len(hdl) > 1 else hdl[0]
545
546
  hdl_header = hdu.header
546
547
  hdl_data = hdu.data
547
- header = spec122_validator.validate_and_translate_to_214_l0(
548
- hdl_header, return_type=fits.HDUList
549
- )[0].header
548
+ spec122_validator.validate(hdl_header)
549
+ translated_header = translate_spec122_to_spec214_l0(hdl_header)
550
550
 
551
- comp_hdu = fits.CompImageHDU(header=header, data=hdl_data)
551
+ comp_hdu = fits.CompImageHDU(header=translated_header, data=hdl_data)
552
552
  comp_hdl = fits.HDUList([fits.PrimaryHDU(), comp_hdu])
553
553
  comp_hdl.writeto(translated_file_name, overwrite=True)
554
554