dkist-processing-cryonirsp 3.0.0rc4__tar.gz → 3.1.0__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 (142) hide show
  1. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/.pre-commit-config.yaml +8 -2
  2. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/CHANGELOG.rst +63 -0
  3. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/PKG-INFO +83 -66
  4. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/README.rst +17 -0
  5. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/SCIENCE_CHANGELOG.rst +10 -0
  6. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/parameters.py +1 -1
  7. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +29 -30
  8. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/gain.py +60 -28
  9. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/conftest.py +5 -1
  10. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +3 -4
  11. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_gain.py +155 -41
  12. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +30 -7
  13. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/PKG-INFO +83 -66
  14. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -5
  15. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/requires.txt +65 -65
  16. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/scm_file_list.json +0 -5
  17. dkist_processing_cryonirsp-3.1.0/dkist_processing_cryonirsp.egg-info/scm_version.json +8 -0
  18. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/pyproject.toml +76 -67
  19. dkist_processing_cryonirsp-3.0.0rc4/changelog/306.doc.rst +0 -1
  20. dkist_processing_cryonirsp-3.0.0rc4/changelog/306.feature.2.rst +0 -1
  21. dkist_processing_cryonirsp-3.0.0rc4/changelog/306.feature.rst +0 -2
  22. dkist_processing_cryonirsp-3.0.0rc4/changelog/306.misc.rst +0 -1
  23. dkist_processing_cryonirsp-3.0.0rc4/changelog/306.science.rst +0 -2
  24. dkist_processing_cryonirsp-3.0.0rc4/dkist_processing_cryonirsp.egg-info/scm_version.json +0 -8
  25. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/.gitignore +0 -0
  26. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/.readthedocs.yml +0 -0
  27. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/.rovodev/.review-agent.md +0 -0
  28. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/.snyk +0 -0
  29. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/bitbucket-pipelines.yml +0 -0
  30. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/changelog/.gitempty +0 -0
  31. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/__init__.py +0 -0
  32. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/codecs/__init__.py +0 -0
  33. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/codecs/fits.py +0 -0
  34. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/config.py +0 -0
  35. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  36. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/beam_boundaries.py +0 -0
  37. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/constants.py +0 -0
  38. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/dataset_extras.py +0 -0
  39. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
  40. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/fits_access.py +0 -0
  41. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/tags.py +0 -0
  42. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  43. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  44. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/check_for_gains.py +0 -0
  45. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  46. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  47. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
  48. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  49. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  50. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  51. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  52. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
  53. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  54. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  55. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  56. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  57. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  58. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  59. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  60. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  61. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  62. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  63. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  64. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/linearity_correction.py +0 -0
  65. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  66. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  67. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  68. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
  69. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  70. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/polcal_as_science.py +0 -0
  71. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  72. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
  73. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  74. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  75. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  76. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  77. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/sp_wavelength_calibration.py +0 -0
  78. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/write_dataset_extras.py +0 -0
  79. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  80. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  81. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
  82. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
  83. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  84. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  85. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
  86. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  87. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  88. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +0 -0
  89. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  90. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
  91. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
  92. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  93. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  94. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  95. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_fits_access.py +0 -0
  96. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
  97. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +0 -0
  98. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
  99. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  100. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_parse.py +0 -0
  101. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_polcal_as_science.py +0 -0
  102. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
  103. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  104. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  105. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
  106. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  107. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_sp_wavelength_calibration.py +0 -0
  108. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
  109. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  110. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_write_dataset_extras.py +0 -0
  111. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  112. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  113. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  114. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  115. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  116. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  117. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  118. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/Makefile +0 -0
  119. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/bad_pixel_calibration.rst +0 -0
  120. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/beam_angle_calculation.rst +0 -0
  121. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/beam_boundary_computation.rst +0 -0
  122. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/changelog.rst +0 -0
  123. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/ci_science_calibration.rst +0 -0
  124. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/conf.py +0 -0
  125. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/dataset_extras.rst +0 -0
  126. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/index.rst +0 -0
  127. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/l0_to_l1_cryonirsp_ci-full-trial.rst +0 -0
  128. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  129. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/l0_to_l1_cryonirsp_sp-full-trial.rst +0 -0
  130. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  131. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/landing_page.rst +0 -0
  132. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/linearization.rst +0 -0
  133. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/make.bat +0 -0
  134. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/requirements.txt +0 -0
  135. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/requirements_table.rst +0 -0
  136. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/scientific_changelog.rst +0 -0
  137. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/sp_science_calibration.rst +0 -0
  138. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/docs/wavelength_calibration.rst +0 -0
  139. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/licenses/LICENSE.rst +0 -0
  140. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/science_towncrier.sh +0 -0
  141. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/setup.cfg +0 -0
  142. {dkist_processing_cryonirsp-3.0.0rc4 → dkist_processing_cryonirsp-3.1.0}/towncrier_science.toml +0 -0
@@ -27,7 +27,13 @@ repos:
27
27
  args:
28
28
  - --convention=numpy
29
29
  - --add-ignore=D105
30
- - repo: https://bitbucket.org/dkistdc/pre-commit-hooks
31
- rev: v1.0.2
30
+ - repo: https://bitbucket.org/dkistdc/pre-commit-hooks.git
31
+ rev: v1.1.0
32
32
  hooks:
33
33
  - id: calibration-workflow-name
34
+ - id: dkist-env-table
35
+ language_version: python3.13
36
+ require_serial: true
37
+ additional_dependencies:
38
+ - dkist-processing-common
39
+ - dkist-service-configuration
@@ -1,3 +1,66 @@
1
+ v3.1.0 (2026-10-09)
2
+ ===================
3
+
4
+ Bugfixes
5
+ --------
6
+
7
+ - Lamp gain and CI solar gain calibrations now produce a single, correctly combined gain frame per beam even when the input spans more than one exposure condition, instead of one frame per exposure condition. (`#304 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/304>`__)
8
+
9
+
10
+ v3.0.0 (2026-10-08)
11
+ ===================
12
+
13
+ Features
14
+ --------
15
+
16
+ - Replace `BeamBoundariesCalibration` task with `SpatialBeamBoundaries`, which only computes the boundaries of the illuminated region along the spatial axis.
17
+ The spectral axis (or second spatial axis, for CI) boundaries are hard-coded as a pipeline parameter. (`#306 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/306>`__)
18
+ - Save the full set of beam boundaries used to extract illuminated regions from the raw data as a dataset extra (called "BEAM_BOUNDARIES"). (`#306 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/306>`__)
19
+
20
+
21
+ Misc
22
+ ----
23
+
24
+ - Replace "y" and "x" language with "axis_0" and "axis_1", respectively, in the `BeamBoundaries` model. (`#306 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/306>`__)
25
+
26
+
27
+ Documentation
28
+ -------------
29
+
30
+ - Update online documentation "Dataset Extras" page to include information about the beam boundaries extra. (`#306 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/306>`__)
31
+
32
+
33
+ v2.1.5 (2026-10-08)
34
+ ===================
35
+
36
+ Misc
37
+ ----
38
+
39
+ - Integrated the ``dkist-env-table`` pre-commit hook and updated the README environment-variable table to match the current configuration. (`#303 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/303>`__)
40
+ - Bump `dkist-fits-specifications` to v4.30.0, which adds support for the BEAM BOUNDARIES dataset extra. (`#308 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/308>`__)
41
+ - Bump `dkist-processing-common` to v14.6.0. No major changes. (`#308 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/308>`__)
42
+
43
+
44
+ v2.1.4 (2026-10-06)
45
+ ===================
46
+
47
+ Misc
48
+ ----
49
+
50
+ - Use the immutable Bitbucket reference atlas URLs in test configuration. (`#305 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/305>`__)
51
+ - Bump `solar-wavelength-calibration` to v2.0.4, which uses git LFS for test atlas storage. (`#305 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/305>`__)
52
+
53
+
54
+ v2.1.3 (2026-09-30)
55
+ ===================
56
+
57
+ Misc
58
+ ----
59
+
60
+ - Update dkist-processing-common to 14.5.2 to restore provenance recording for
61
+ manual parse tasks and trial dataset inventory, ASDF, and quality report tasks. (`#307 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/307>`__)
62
+
63
+
1
64
  v2.1.2 (2026-09-24)
2
65
  ===================
3
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 3.0.0rc4
3
+ Version: 3.1.0
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,13 +15,13 @@ 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.30.0rc1
18
+ Requires-Dist: dkist-fits-specifications==4.30.0
19
19
  Requires-Dist: dkist-header-validator==6.0.0
20
- Requires-Dist: dkist-processing-common==14.5.1rc1
20
+ Requires-Dist: dkist-processing-common==14.6.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
24
- Requires-Dist: solar-wavelength-calibration==2.0.3
24
+ Requires-Dist: solar-wavelength-calibration==2.0.4
25
25
  Requires-Dist: dkist-service-configuration==4.3.0
26
26
  Requires-Dist: moviepy==2.1.2
27
27
  Requires-Dist: numba==0.61.2
@@ -62,26 +62,26 @@ Requires-Dist: pytest; extra == "docs"
62
62
  Requires-Dist: dkist-sphinx-theme; extra == "docs"
63
63
  Provides-Extra: frozen
64
64
  Requires-Dist: Deprecated==3.0.0; extra == "frozen"
65
- Requires-Dist: ImageIO==2.38.0; extra == "frozen"
65
+ Requires-Dist: ImageIO==2.38.1; extra == "frozen"
66
66
  Requires-Dist: Jinja2==3.1.6; extra == "frozen"
67
67
  Requires-Dist: Mako==1.4.3; extra == "frozen"
68
- Requires-Dist: MarkupSafe==3.0.3; extra == "frozen"
68
+ Requires-Dist: MarkupSafe==3.0.4; extra == "frozen"
69
69
  Requires-Dist: PeakUtils==1.3.5; extra == "frozen"
70
70
  Requires-Dist: PyJWT==2.15.1; extra == "frozen"
71
71
  Requires-Dist: PyYAML==6.0.3; extra == "frozen"
72
72
  Requires-Dist: PyYAML-ft==8.0.0; extra == "frozen"
73
73
  Requires-Dist: Pygments==2.21.0; extra == "frozen"
74
- Requires-Dist: SQLAlchemy==2.1.1; extra == "frozen"
74
+ Requires-Dist: SQLAlchemy==2.1.4; extra == "frozen"
75
75
  Requires-Dist: Send2Trash==2.1.0; extra == "frozen"
76
76
  Requires-Dist: a2wsgi==1.10.10; extra == "frozen"
77
77
  Requires-Dist: aioftp==0.28.3; extra == "frozen"
78
78
  Requires-Dist: aiohappyeyeballs==2.7.1; extra == "frozen"
79
- Requires-Dist: aiohttp==3.14.3; extra == "frozen"
79
+ Requires-Dist: aiohttp==3.14.4; extra == "frozen"
80
80
  Requires-Dist: aiosignal==1.4.0; extra == "frozen"
81
81
  Requires-Dist: aiosmtplib==5.1.3; extra == "frozen"
82
82
  Requires-Dist: aiosqlite==0.22.1; extra == "frozen"
83
83
  Requires-Dist: alembic==1.20.0; extra == "frozen"
84
- Requires-Dist: amqp==5.4.0; extra == "frozen"
84
+ Requires-Dist: amqp==5.4.1; extra == "frozen"
85
85
  Requires-Dist: annotated-doc==0.0.5; extra == "frozen"
86
86
  Requires-Dist: annotated-types==0.8.0; extra == "frozen"
87
87
  Requires-Dist: anyio==4.15.1; extra == "frozen"
@@ -104,18 +104,18 @@ Requires-Dist: asdf_standard==1.5.0; extra == "frozen"
104
104
  Requires-Dist: asgiref==3.12.1; extra == "frozen"
105
105
  Requires-Dist: asteval==1.0.10; extra == "frozen"
106
106
  Requires-Dist: astropy==7.0.2; extra == "frozen"
107
- Requires-Dist: astropy-iers-data==0.2026.9.28.0.59.37; extra == "frozen"
107
+ Requires-Dist: astropy-iers-data==0.2026.10.5.1.0.7; extra == "frozen"
108
108
  Requires-Dist: asttokens==3.0.2; extra == "frozen"
109
109
  Requires-Dist: async-lru==2.3.0; extra == "frozen"
110
- Requires-Dist: asyncpg==0.31.0; extra == "frozen"
110
+ Requires-Dist: asyncpg==0.32.0; extra == "frozen"
111
111
  Requires-Dist: attrs==26.1.0; extra == "frozen"
112
112
  Requires-Dist: babel==2.18.0; extra == "frozen"
113
113
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
114
- Requires-Dist: billiard==4.3.0; extra == "frozen"
114
+ Requires-Dist: billiard==4.3.1; extra == "frozen"
115
115
  Requires-Dist: bleach==6.4.0; extra == "frozen"
116
- Requires-Dist: boto3==1.43.105; extra == "frozen"
117
- Requires-Dist: botocore==1.43.105; extra == "frozen"
118
- Requires-Dist: cachetools==7.2.0; extra == "frozen"
116
+ Requires-Dist: boto3==1.43.111; extra == "frozen"
117
+ Requires-Dist: botocore==1.43.111; extra == "frozen"
118
+ Requires-Dist: cachetools==7.2.1; extra == "frozen"
119
119
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
120
120
  Requires-Dist: celery==5.6.3; extra == "frozen"
121
121
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
@@ -124,7 +124,7 @@ Requires-Dist: charset-normalizer==3.5.2; extra == "frozen"
124
124
  Requires-Dist: click==8.5.0; extra == "frozen"
125
125
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
126
126
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
127
- Requires-Dist: click-repl==0.4.0; extra == "frozen"
127
+ Requires-Dist: click-repl==0.4.1; extra == "frozen"
128
128
  Requires-Dist: cloudpickle==3.1.2; extra == "frozen"
129
129
  Requires-Dist: colorlog==6.12.0; extra == "frozen"
130
130
  Requires-Dist: comm==0.2.3; extra == "frozen"
@@ -138,15 +138,15 @@ Requires-Dist: decorator==5.3.1; extra == "frozen"
138
138
  Requires-Dist: defusedxml==0.7.1; extra == "frozen"
139
139
  Requires-Dist: dill==0.4.1; extra == "frozen"
140
140
  Requires-Dist: dkist-header-validator==6.0.0; extra == "frozen"
141
- Requires-Dist: dkist-processing-common==14.5.1rc1; extra == "frozen"
141
+ Requires-Dist: dkist-processing-common==14.6.0; extra == "frozen"
142
142
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
143
- Requires-Dist: dkist-processing-cryonirsp==3.0.0rc4; extra == "frozen"
143
+ Requires-Dist: dkist-processing-cryonirsp==3.1.0; extra == "frozen"
144
144
  Requires-Dist: dkist-processing-math==2.2.3; extra == "frozen"
145
145
  Requires-Dist: dkist-processing-pac==3.1.2; extra == "frozen"
146
146
  Requires-Dist: dkist-service-configuration==4.3.0; extra == "frozen"
147
147
  Requires-Dist: dkist-spectral-lines==3.0.1; extra == "frozen"
148
- Requires-Dist: dkist_fits_specifications==4.30.0rc1; extra == "frozen"
149
- Requires-Dist: dnspython==2.8.0; extra == "frozen"
148
+ Requires-Dist: dkist_fits_specifications==4.30.0; extra == "frozen"
149
+ Requires-Dist: dnspython==2.9.0; extra == "frozen"
150
150
  Requires-Dist: email-validator==2.3.0; extra == "frozen"
151
151
  Requires-Dist: executing==2.2.1; extra == "frozen"
152
152
  Requires-Dist: fastapi==0.136.3; extra == "frozen"
@@ -165,7 +165,7 @@ Requires-Dist: greenlet==3.5.6; extra == "frozen"
165
165
  Requires-Dist: grpcio==1.84.0; extra == "frozen"
166
166
  Requires-Dist: h11==0.16.0; extra == "frozen"
167
167
  Requires-Dist: httpcore==1.0.9; extra == "frozen"
168
- Requires-Dist: httptools==0.8.0; extra == "frozen"
168
+ Requires-Dist: httptools==0.9.0; extra == "frozen"
169
169
  Requires-Dist: httpx==0.28.1; extra == "frozen"
170
170
  Requires-Dist: humanize==4.16.0; extra == "frozen"
171
171
  Requires-Dist: idna==3.20; extra == "frozen"
@@ -179,8 +179,8 @@ Requires-Dist: itsdangerous==2.2.0; extra == "frozen"
179
179
  Requires-Dist: jedi==0.20.0; extra == "frozen"
180
180
  Requires-Dist: jmespath==1.1.0; extra == "frozen"
181
181
  Requires-Dist: joblib==1.6.0; extra == "frozen"
182
- Requires-Dist: json5==0.15.0; extra == "frozen"
183
- Requires-Dist: jsonpointer==3.1.1; extra == "frozen"
182
+ Requires-Dist: json5==0.16.0; extra == "frozen"
183
+ Requires-Dist: jsonpointer==3.2.0; extra == "frozen"
184
184
  Requires-Dist: jsonschema==4.26.0; extra == "frozen"
185
185
  Requires-Dist: jsonschema-specifications==2025.9.1; extra == "frozen"
186
186
  Requires-Dist: jupyter-events==0.12.1; extra == "frozen"
@@ -219,39 +219,39 @@ Requires-Dist: natsort==8.4.0; extra == "frozen"
219
219
  Requires-Dist: nbclient==0.11.0; extra == "frozen"
220
220
  Requires-Dist: nbconvert==7.17.1; extra == "frozen"
221
221
  Requires-Dist: nbformat==5.11.1; extra == "frozen"
222
- Requires-Dist: nest-asyncio2==1.7.3; extra == "frozen"
222
+ Requires-Dist: nest-asyncio2==1.7.4; extra == "frozen"
223
223
  Requires-Dist: networkx==3.7; extra == "frozen"
224
224
  Requires-Dist: notebook==7.6.3; extra == "frozen"
225
225
  Requires-Dist: notebook_shim==0.2.4; extra == "frozen"
226
226
  Requires-Dist: numba==0.61.2; extra == "frozen"
227
227
  Requires-Dist: numpy==2.2.5; extra == "frozen"
228
228
  Requires-Dist: object-clerk==1.0.0; extra == "frozen"
229
- Requires-Dist: opentelemetry-api==1.45.0; extra == "frozen"
230
- Requires-Dist: opentelemetry-exporter-http-transport==0.66b0; extra == "frozen"
231
- Requires-Dist: opentelemetry-exporter-otlp==1.45.0; extra == "frozen"
232
- Requires-Dist: opentelemetry-exporter-otlp-common==0.66b0; extra == "frozen"
233
- Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.45.0; extra == "frozen"
234
- Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.45.0; extra == "frozen"
235
- Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.45.0; extra == "frozen"
236
- Requires-Dist: opentelemetry-instrumentation==0.66b0; extra == "frozen"
237
- Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.66b0; extra == "frozen"
238
- Requires-Dist: opentelemetry-instrumentation-asgi==0.66b0; extra == "frozen"
239
- Requires-Dist: opentelemetry-instrumentation-botocore==0.66b0; extra == "frozen"
240
- Requires-Dist: opentelemetry-instrumentation-celery==0.66b0; extra == "frozen"
241
- Requires-Dist: opentelemetry-instrumentation-dbapi==0.66b0; extra == "frozen"
242
- Requires-Dist: opentelemetry-instrumentation-fastapi==0.66b0; extra == "frozen"
243
- Requires-Dist: opentelemetry-instrumentation-pika==0.66b0; extra == "frozen"
244
- Requires-Dist: opentelemetry-instrumentation-psycopg2==0.66b0; extra == "frozen"
245
- Requires-Dist: opentelemetry-instrumentation-pymongo==0.66b0; extra == "frozen"
246
- Requires-Dist: opentelemetry-instrumentation-redis==0.66b0; extra == "frozen"
247
- Requires-Dist: opentelemetry-instrumentation-requests==0.66b0; extra == "frozen"
248
- Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.66b0; extra == "frozen"
249
- Requires-Dist: opentelemetry-instrumentation-system-metrics==0.66b0; extra == "frozen"
229
+ Requires-Dist: opentelemetry-api==1.45.1; extra == "frozen"
230
+ Requires-Dist: opentelemetry-exporter-http-transport==0.66b1; extra == "frozen"
231
+ Requires-Dist: opentelemetry-exporter-otlp==1.45.1; extra == "frozen"
232
+ Requires-Dist: opentelemetry-exporter-otlp-common==0.66b1; extra == "frozen"
233
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.45.1; extra == "frozen"
234
+ Requires-Dist: opentelemetry-exporter-otlp-proto-grpc==1.45.1; extra == "frozen"
235
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.45.1; extra == "frozen"
236
+ Requires-Dist: opentelemetry-instrumentation==0.66b1; extra == "frozen"
237
+ Requires-Dist: opentelemetry-instrumentation-aiohttp-client==0.66b1; extra == "frozen"
238
+ Requires-Dist: opentelemetry-instrumentation-asgi==0.66b1; extra == "frozen"
239
+ Requires-Dist: opentelemetry-instrumentation-botocore==0.66b1; extra == "frozen"
240
+ Requires-Dist: opentelemetry-instrumentation-celery==0.66b1; extra == "frozen"
241
+ Requires-Dist: opentelemetry-instrumentation-dbapi==0.66b1; extra == "frozen"
242
+ Requires-Dist: opentelemetry-instrumentation-fastapi==0.66b1; extra == "frozen"
243
+ Requires-Dist: opentelemetry-instrumentation-pika==0.66b1; extra == "frozen"
244
+ Requires-Dist: opentelemetry-instrumentation-psycopg2==0.66b1; extra == "frozen"
245
+ Requires-Dist: opentelemetry-instrumentation-pymongo==0.66b1; extra == "frozen"
246
+ Requires-Dist: opentelemetry-instrumentation-redis==0.66b1; extra == "frozen"
247
+ Requires-Dist: opentelemetry-instrumentation-requests==0.66b1; extra == "frozen"
248
+ Requires-Dist: opentelemetry-instrumentation-sqlalchemy==0.66b1; extra == "frozen"
249
+ Requires-Dist: opentelemetry-instrumentation-system-metrics==0.66b1; extra == "frozen"
250
250
  Requires-Dist: opentelemetry-propagator-aws-xray==1.0.2; extra == "frozen"
251
- Requires-Dist: opentelemetry-proto==1.45.0; extra == "frozen"
252
- Requires-Dist: opentelemetry-sdk==1.45.0; extra == "frozen"
253
- Requires-Dist: opentelemetry-semantic-conventions==0.66b0; extra == "frozen"
254
- Requires-Dist: opentelemetry-util-http==0.66b0; extra == "frozen"
251
+ Requires-Dist: opentelemetry-proto==1.45.1; extra == "frozen"
252
+ Requires-Dist: opentelemetry-sdk==1.45.1; extra == "frozen"
253
+ Requires-Dist: opentelemetry-semantic-conventions==0.66b1; extra == "frozen"
254
+ Requires-Dist: opentelemetry-util-http==0.66b1; extra == "frozen"
255
255
  Requires-Dist: outcome==1.3.0.post0; extra == "frozen"
256
256
  Requires-Dist: packaging==26.3; extra == "frozen"
257
257
  Requires-Dist: pandas==3.0.6; extra == "frozen"
@@ -265,7 +265,7 @@ 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.12.2; extra == "frozen"
268
+ Requires-Dist: platformdirs==4.12.4; 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"
@@ -279,21 +279,21 @@ Requires-Dist: psycopg-binary==3.3.6; extra == "frozen"
279
279
  Requires-Dist: psycopg2-binary==2.9.13; extra == "frozen"
280
280
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
281
281
  Requires-Dist: pure_eval==0.2.4; extra == "frozen"
282
- Requires-Dist: pycparser==3.0; extra == "frozen"
283
- Requires-Dist: pydantic==2.13.5; extra == "frozen"
282
+ Requires-Dist: pycparser==3.11; extra == "frozen"
283
+ Requires-Dist: pydantic==2.14.0; 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
- Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
286
+ Requires-Dist: pydantic_core==2.50.0; extra == "frozen"
287
287
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
288
288
  Requires-Dist: pygtrie==2.6.2; extra == "frozen"
289
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
- Requires-Dist: python-dotenv==1.2.3; extra == "frozen"
292
+ Requires-Dist: python-dotenv==1.2.4; 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==9.1.2; extra == "frozen"
296
- Requires-Dist: pytz==2026.4; extra == "frozen"
295
+ Requires-Dist: python-slugify==9.1.3; extra == "frozen"
296
+ Requires-Dist: pytz==2026.5; 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,18 +303,18 @@ 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.5; extra == "frozen"
307
- Requires-Dist: rpds-py==2026.6.3; extra == "frozen"
306
+ Requires-Dist: rich-toolkit==0.20.6; extra == "frozen"
307
+ Requires-Dist: rpds-py==2026.9.1; extra == "frozen"
308
308
  Requires-Dist: s3transfer==0.19.2; extra == "frozen"
309
309
  Requires-Dist: scikit-image==0.25.2; extra == "frozen"
310
310
  Requires-Dist: scikit-learn==1.9.0; extra == "frozen"
311
311
  Requires-Dist: scipy==1.15.3; extra == "frozen"
312
312
  Requires-Dist: semantic-version==2.10.0; extra == "frozen"
313
- Requires-Dist: setproctitle==1.3.7; extra == "frozen"
313
+ Requires-Dist: setproctitle==1.3.8; extra == "frozen"
314
314
  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
- Requires-Dist: solar-wavelength-calibration==2.0.3; extra == "frozen"
317
+ Requires-Dist: solar-wavelength-calibration==2.0.4; extra == "frozen"
318
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"
@@ -335,10 +335,10 @@ Requires-Dist: tinycss2==1.5.1; extra == "frozen"
335
335
  Requires-Dist: tornado==6.5.10; extra == "frozen"
336
336
  Requires-Dist: tqdm==4.70.1; extra == "frozen"
337
337
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
- Requires-Dist: typer==0.27.2; extra == "frozen"
338
+ Requires-Dist: typer==0.27.3; 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.4; extra == "frozen"
341
+ Requires-Dist: tzdata==2026.5; extra == "frozen"
342
342
  Requires-Dist: tzlocal==5.4.4; extra == "frozen"
343
343
  Requires-Dist: uncertainties==3.2.3; extra == "frozen"
344
344
  Requires-Dist: universal_pathlib==0.3.10; extra == "frozen"
@@ -346,20 +346,20 @@ Requires-Dist: uri-template==1.3.0; extra == "frozen"
346
346
  Requires-Dist: urllib3==2.8.0; extra == "frozen"
347
347
  Requires-Dist: uuid6==2025.0.1; extra == "frozen"
348
348
  Requires-Dist: uvicorn==0.54.0; extra == "frozen"
349
- Requires-Dist: uvloop==0.22.1; extra == "frozen"
349
+ Requires-Dist: uvloop==0.23.0; extra == "frozen"
350
350
  Requires-Dist: vine==5.1.0; extra == "frozen"
351
351
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
352
352
  Requires-Dist: watchfiles==1.3.0; extra == "frozen"
353
- Requires-Dist: wcwidth==0.9.1; extra == "frozen"
353
+ Requires-Dist: wcwidth==0.9.2; extra == "frozen"
354
354
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
355
355
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
356
356
  Requires-Dist: websocket-client==1.9.2; extra == "frozen"
357
- Requires-Dist: websockets==17.1; extra == "frozen"
357
+ Requires-Dist: websockets==17.2; extra == "frozen"
358
358
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
359
359
  Requires-Dist: wrapt==2.5.0; extra == "frozen"
360
360
  Requires-Dist: yamale==6.1.0; extra == "frozen"
361
361
  Requires-Dist: yarl==1.25.1; extra == "frozen"
362
- Requires-Dist: zipp==4.1.0; extra == "frozen"
362
+ Requires-Dist: zipp==4.1.1; extra == "frozen"
363
363
 
364
364
  dkist-processing-cryonirsp
365
365
  ==========================
@@ -378,6 +378,8 @@ in their own package facilitates using the build_utils to test the integrity of
378
378
  Environment Variables
379
379
  ---------------------
380
380
 
381
+ .. dkist-env-table: start
382
+
381
383
  .. list-table::
382
384
  :widths: 10 90
383
385
  :header-rows: 1
@@ -469,6 +471,21 @@ Environment Variables
469
471
  * - FTS_ATLAS_DATA_DIR
470
472
  - annotation=Union[str, NoneType] required=False default=None description='Common cached directory for a downloaded FTS Atlas.'
471
473
 
474
+ .. dkist-env-table: end
475
+
476
+ Maintaining the generated table
477
+ ###############################
478
+
479
+ The hook's additional dependencies are intentionally unpinned to avoid duplicating
480
+ versions maintained in ``pyproject.toml``. Consequently, the generated table may
481
+ temporarily reflect a newer published parent configuration than the version pinned
482
+ by this project.
483
+
484
+ When developing against an upstream release candidate that changes configuration
485
+ fields, temporarily pin the relevant hook dependency in
486
+ ``.pre-commit-config.yaml`` to that RC. Remove the temporary pin after the final
487
+ upstream release is available.
488
+
472
489
  Development
473
490
  -----------
474
491
  .. code-block:: bash
@@ -15,6 +15,8 @@ in their own package facilitates using the build_utils to test the integrity of
15
15
  Environment Variables
16
16
  ---------------------
17
17
 
18
+ .. dkist-env-table: start
19
+
18
20
  .. list-table::
19
21
  :widths: 10 90
20
22
  :header-rows: 1
@@ -106,6 +108,21 @@ Environment Variables
106
108
  * - FTS_ATLAS_DATA_DIR
107
109
  - annotation=Union[str, NoneType] required=False default=None description='Common cached directory for a downloaded FTS Atlas.'
108
110
 
111
+ .. dkist-env-table: end
112
+
113
+ Maintaining the generated table
114
+ ###############################
115
+
116
+ The hook's additional dependencies are intentionally unpinned to avoid duplicating
117
+ versions maintained in ``pyproject.toml``. Consequently, the generated table may
118
+ temporarily reflect a newer published parent configuration than the version pinned
119
+ by this project.
120
+
121
+ When developing against an upstream release candidate that changes configuration
122
+ fields, temporarily pin the relevant hook dependency in
123
+ ``.pre-commit-config.yaml`` to that RC. Remove the temporary pin after the final
124
+ upstream release is available.
125
+
109
126
  Development
110
127
  -----------
111
128
  .. code-block:: bash
@@ -1,3 +1,13 @@
1
+ v3.0.0 (2026-10-08)
2
+ ===================
3
+
4
+
5
+
6
+
7
+ - The task that computes the boundaries of the useful, illuminated regions of the INPUT data has been simplified and made more robust to data with very high
8
+ dynamic range. This improvement will most affect data taken at 1430nm, but will slightly change the final array shape for all data. (`#306 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/306>`__)
9
+
10
+
1
11
  v2.0.0 (2026-07-17)
2
12
  ===================
3
13
 
@@ -140,7 +140,7 @@ class CryonirspParameters(ParameterBase, ParameterWavelengthMixin, ParameterArmI
140
140
 
141
141
  @property
142
142
  def beam_boundaries_detector_margin_px(self) -> int:
143
- """Return the distance away from a detector edge to hard-code boundaries that otherwise would run up to the edge."""
143
+ """Return the padding amount from the detector edge that sets a hard limit on the illumination regions."""
144
144
  return self._find_most_recent_past_value("cryonirsp_beam_boundaries_detector_margin_px")
145
145
 
146
146
  @property
@@ -6,6 +6,7 @@ import numpy as np
6
6
  from dkist_processing_common.codecs.fits import fits_array_encoder
7
7
  from dkist_processing_math.statistics import average_numpy_arrays
8
8
  from dkist_service_configuration.logging import logger
9
+ from scipy import stats
9
10
 
10
11
  from dkist_processing_cryonirsp.codecs.fits import cryo_fits_array_decoder
11
12
  from dkist_processing_cryonirsp.models.beam_boundaries import BeamBoundaries
@@ -20,7 +21,10 @@ __all__ = ["SpatialBeamBoundariesBase"]
20
21
 
21
22
  class SpatialBeamBoundariesBase(CryonirspTaskBase):
22
23
  """
23
- Task class for calculating the beam boundaries for later use during calibration.
24
+ Task class for calculating the illuminated beam boundaries in the spatial dimension for later use during calibration.
25
+
26
+ For CI data the term "spatial" here refers to the same chip dimension that corresponds to the spatial dimension in
27
+ SP data (numpy axis 0).
24
28
 
25
29
  Parameters
26
30
  ----------
@@ -49,7 +53,7 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
49
53
 
50
54
  i. Extract the beam's spectral extent
51
55
 
52
- #. Collapse along the spectal dimension to form a 1D spatial signal
56
+ #. Collapse along the spectral dimension to form a 1D spatial signal
53
57
 
54
58
  #. Use a moving window comparison to construct a profile showing sharp changes in intensity
55
59
 
@@ -57,10 +61,10 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
57
61
 
58
62
  #. Adjust the regions so all beams have the same shape
59
63
 
60
- #. Write the computed spatial bounds, and the spectral bounds from `parameters`, to scratch
64
+ #. Write the computed spatial bounds and the spectral bounds from `parameters` to scratch
61
65
 
62
- NOTE: When this method referrs to the "spectral" dimension for CI data we really mean the spatial dimension that
63
- corresponds to the chip axis that is the spectral dimensino in SP data.
66
+ NOTE: When this method refers to the "spectral" dimension for CI data we really mean the spatial dimension that
67
+ corresponds to the chip axis that is the spectral dimension in SP data (numpy axis 1).
64
68
 
65
69
  Returns
66
70
  -------
@@ -92,8 +96,9 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
92
96
  beam_boundaries.append((min_edge, max_edge))
93
97
 
94
98
  with self.telemetry_span("Matching beam sizes"):
99
+ spatial_size = beam_array.shape[0]
95
100
  matched_spatial_boundaries = self.match_beam_sizes(
96
- beam_boundaries, full_spatial_size=beam_array.shape[0]
101
+ beam_boundaries, full_spatial_size=spatial_size
97
102
  )
98
103
 
99
104
  with self.telemetry_span("Writing beam boundaries"):
@@ -131,12 +136,13 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
131
136
  )
132
137
  averaged_gain_data = average_numpy_arrays(lin_corr_gain_arrays)
133
138
  spatial_edge_mask = self.parameters.beam_boundaries_detector_margin_px
134
- averaged_gain_data[:spatial_edge_mask, :] = averaged_gain_data[spatial_edge_mask + 1, :][
135
- None, :
136
- ]
137
- averaged_gain_data[-spatial_edge_mask:, :] = averaged_gain_data[
138
- -(spatial_edge_mask + 1), :
139
- ][None, :]
139
+
140
+ # Fill in the masked edge regions with a spatial constant copied from the first pixel past the masked region
141
+ start_edge_good_signal = averaged_gain_data[spatial_edge_mask + 1, :]
142
+ end_edge_good_signal = averaged_gain_data[-(spatial_edge_mask + 1), :]
143
+
144
+ averaged_gain_data[:spatial_edge_mask, :] = start_edge_good_signal[None, :]
145
+ averaged_gain_data[-spatial_edge_mask:, :] = end_edge_good_signal[None, :]
140
146
  return averaged_gain_data
141
147
 
142
148
  @staticmethod
@@ -152,19 +158,9 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
152
158
  moving_mean = np.convolve(spatial_signal, np.ones(window), "valid") / window
153
159
 
154
160
  profile = np.full_like(spatial_signal, np.nan)
155
- profile[window : -window + 1] = moving_mean[window:] - moving_mean[:-window]
161
+ profile[window : len(profile) - (window - 1)] = moving_mean[window:] - moving_mean[:-window]
156
162
  return profile
157
163
 
158
- @staticmethod
159
- def robust_sigma(array: np.ndarray) -> float:
160
- """
161
- Robust estimation of the standard deviation based on the median absolute difference.
162
-
163
- Assuming the values in array are roughly normally distributed.
164
- """
165
- median = np.nanmedian(array)
166
- return 1.4826 * np.nanmedian(np.abs(array - median))
167
-
168
164
  @staticmethod
169
165
  def find_edges(
170
166
  edge_profile: np.ndarray, threshold_sigma: float, detector_margin: int
@@ -173,7 +169,7 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
173
169
  Identify peaks in an edge profile.
174
170
 
175
171
  The location of the maximum change in the profile is taken to be the minimum edge of the illuminated beam while
176
- the location of the most negative change in the profile is taken to be the maximum edge illumintated beam.
172
+ the location of the most negative change in the profile is taken to be the maximum edge illuminated beam.
177
173
 
178
174
  Both edges are checked to ensure they are significant enough by comparing their value to a threshold controlled
179
175
  by ``threshold_sigma``. Edges that are below the threshold are interpreted as being essentially at the edge of
@@ -183,7 +179,9 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
183
179
  -------
184
180
  `[min_edge_idx, max_edge_idx]`
185
181
  """
186
- threshold = threshold_sigma * SpatialBeamBoundariesBase.robust_sigma(edge_profile)
182
+ threshold = threshold_sigma * stats.median_abs_deviation(
183
+ edge_profile, nan_policy="omit", scale="normal"
184
+ )
187
185
  num_pix = len(edge_profile)
188
186
 
189
187
  bottom_candidate = np.nanargmax(edge_profile)
@@ -191,11 +189,11 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
191
189
 
192
190
  if bottom_candidate > top_candidate:
193
191
  # If the edges appear flipped around
194
- # This could potentially happen if there is some sharp signal right at the edge of the otherwise-unillumintaed
195
- # detector that gets interpreted as a spurious edge. In this case we make the assumption that the true begining
192
+ # This could potentially happen if there is some sharp signal right at the edge of the otherwise-unilluminated
193
+ # detector that gets interpreted as a spurious edge. In this case we make the assumption that the true beginning
196
194
  # of illumination is in the first half of the detector and the true end of illumination is in the second half.
197
195
  logger.info(
198
- "Edge profile increasing/decreasing peaks appear to be swapped. This is likely due to spurious edges. Restricting seach to half the chip for each."
196
+ "Edge profile increasing/decreasing peaks appear to be swapped. This is likely due to spurious edges. Restricting search to half the chip for each."
199
197
  )
200
198
  half_idx = edge_profile.size // 2
201
199
  bottom_candidate = np.nanargmax(edge_profile[:half_idx])
@@ -218,9 +216,10 @@ class SpatialBeamBoundariesBase(CryonirspTaskBase):
218
216
 
219
217
  output_list = []
220
218
  for spatial_boundaries, spectral_slice in zip(spatial_boundary_list, spectral_slices):
219
+ spatial_min, spatial_max = spatial_boundaries
221
220
  boundary_obj = BeamBoundaries(
222
- axis_0_min=spatial_boundaries[0],
223
- axis_0_max=spatial_boundaries[1],
221
+ axis_0_min=spatial_min,
222
+ axis_0_max=spatial_max,
224
223
  axis_1_min=spectral_slice.start,
225
224
  axis_1_max=spectral_slice.stop,
226
225
  )