dkist-processing-cryonirsp 2.1.0__tar.gz → 2.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/CHANGELOG.rst +9 -0
  2. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/PKG-INFO +19 -19
  3. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/linearity_correction.py +36 -38
  4. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_linearity_correction.py +34 -0
  5. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/PKG-INFO +19 -19
  6. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/requires.txt +18 -18
  7. dkist_processing_cryonirsp-2.1.1/dkist_processing_cryonirsp.egg-info/scm_version.json +8 -0
  8. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/pyproject.toml +20 -20
  9. dkist_processing_cryonirsp-2.1.0/dkist_processing_cryonirsp.egg-info/scm_version.json +0 -8
  10. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/.gitignore +0 -0
  11. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/.pre-commit-config.yaml +0 -0
  12. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/.readthedocs.yml +0 -0
  13. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/.rovodev/.review-agent.md +0 -0
  14. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/.snyk +0 -0
  15. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/README.rst +0 -0
  16. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/SCIENCE_CHANGELOG.rst +0 -0
  17. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/bitbucket-pipelines.yml +0 -0
  18. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/changelog/.gitempty +0 -0
  19. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/__init__.py +0 -0
  20. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/codecs/__init__.py +0 -0
  21. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/codecs/fits.py +0 -0
  22. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/config.py +0 -0
  23. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/__init__.py +0 -0
  24. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/beam_boundaries.py +0 -0
  25. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/constants.py +0 -0
  26. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/dataset_extras.py +0 -0
  27. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/exposure_conditions.py +0 -0
  28. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/fits_access.py +0 -0
  29. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/parameters.py +0 -0
  30. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/tags.py +0 -0
  31. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/models/task_name.py +0 -0
  32. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/__init__.py +0 -0
  33. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/check_for_gains.py +0 -0
  34. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/cryonirsp_l0_fits_access.py +0 -0
  35. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/cryonirsp_l1_fits_access.py +0 -0
  36. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/exposure_conditions.py +0 -0
  37. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/map_repeats.py +0 -0
  38. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/measurements.py +0 -0
  39. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/modstates.py +0 -0
  40. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/optical_density_filters.py +0 -0
  41. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/polarimetric_check.py +0 -0
  42. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/scan_step.py +0 -0
  43. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/parsers/time.py +0 -0
  44. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/__init__.py +0 -0
  45. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/assemble_movie.py +0 -0
  46. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/bad_pixel_map.py +0 -0
  47. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/beam_boundaries_base.py +0 -0
  48. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/ci_beam_boundaries.py +0 -0
  49. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/ci_science.py +0 -0
  50. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/cryonirsp_base.py +0 -0
  51. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/dark.py +0 -0
  52. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/gain.py +0 -0
  53. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/instrument_polarization.py +0 -0
  54. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/l1_output_data.py +0 -0
  55. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/make_movie_frames.py +0 -0
  56. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/mixin/__init__.py +0 -0
  57. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/mixin/corrections.py +0 -0
  58. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/mixin/shift_measurements.py +0 -0
  59. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/parse.py +0 -0
  60. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/polcal_as_science.py +0 -0
  61. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/quality_metrics.py +0 -0
  62. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/science_base.py +0 -0
  63. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/sp_beam_boundaries.py +0 -0
  64. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/sp_geometric.py +0 -0
  65. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/sp_science.py +0 -0
  66. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/sp_solar_gain.py +0 -0
  67. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/sp_wavelength_calibration.py +0 -0
  68. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/write_dataset_extras.py +0 -0
  69. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tasks/write_l1.py +0 -0
  70. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/__init__.py +0 -0
  71. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/conftest.py +0 -0
  72. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/header_models.py +0 -0
  73. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/local_trial_workflows/__init__.py +0 -0
  74. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_cals_only.py +0 -0
  75. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/local_trial_workflows/l0_to_l1.py +0 -0
  76. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/local_trial_workflows/linearize_only.py +0 -0
  77. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/local_trial_workflows/local_trial_helpers.py +0 -0
  78. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_assemble_movie.py +0 -0
  79. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_assemble_qualilty.py +0 -0
  80. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_bad_pixel_maps.py +0 -0
  81. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_ci_beam_boundaries.py +0 -0
  82. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_ci_science.py +0 -0
  83. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_corrections.py +0 -0
  84. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_cryo_base.py +0 -0
  85. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_cryo_constants.py +0 -0
  86. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_dark.py +0 -0
  87. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_fits_access.py +0 -0
  88. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_gain.py +0 -0
  89. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_instrument_polarization.py +0 -0
  90. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_make_movie_frames.py +0 -0
  91. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_parameters.py +0 -0
  92. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_parse.py +0 -0
  93. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_polcal_as_science.py +0 -0
  94. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_quality.py +0 -0
  95. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_beam_boundaries.py +0 -0
  96. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_geometric.py +0 -0
  97. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_make_movie_frames.py +0 -0
  98. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_science.py +0 -0
  99. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_solar.py +0 -0
  100. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_sp_wavelength_calibration.py +0 -0
  101. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_trial_create_quality_report.py +0 -0
  102. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_workflows.py +0 -0
  103. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_write_dataset_extras.py +0 -0
  104. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/tests/test_write_l1.py +0 -0
  105. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/workflows/__init__.py +0 -0
  106. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/workflows/ci_l0_processing.py +0 -0
  107. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/workflows/sp_l0_processing.py +0 -0
  108. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp/workflows/trial_workflows.py +0 -0
  109. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/SOURCES.txt +0 -0
  110. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/dependency_links.txt +0 -0
  111. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/scm_file_list.json +0 -0
  112. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/dkist_processing_cryonirsp.egg-info/top_level.txt +0 -0
  113. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/Makefile +0 -0
  114. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/bad_pixel_calibration.rst +0 -0
  115. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/beam_angle_calculation.rst +0 -0
  116. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/beam_boundary_computation.rst +0 -0
  117. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/changelog.rst +0 -0
  118. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/ci_science_calibration.rst +0 -0
  119. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/conf.py +0 -0
  120. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/dataset_extras.rst +0 -0
  121. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/index.rst +0 -0
  122. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/l0_to_l1_cryonirsp_ci-full-trial.rst +0 -0
  123. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/l0_to_l1_cryonirsp_ci.rst +0 -0
  124. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/l0_to_l1_cryonirsp_sp-full-trial.rst +0 -0
  125. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/l0_to_l1_cryonirsp_sp.rst +0 -0
  126. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/landing_page.rst +0 -0
  127. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/linearization.rst +0 -0
  128. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/make.bat +0 -0
  129. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/requirements.txt +0 -0
  130. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/requirements_table.rst +0 -0
  131. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/scientific_changelog.rst +0 -0
  132. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/sp_science_calibration.rst +0 -0
  133. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/docs/wavelength_calibration.rst +0 -0
  134. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/licenses/LICENSE.rst +0 -0
  135. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/science_towncrier.sh +0 -0
  136. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/setup.cfg +0 -0
  137. {dkist_processing_cryonirsp-2.1.0 → dkist_processing_cryonirsp-2.1.1}/towncrier_science.toml +0 -0
@@ -1,3 +1,12 @@
1
+ v2.1.1 (2026-08-28)
2
+ ===================
3
+
4
+ Features
5
+ --------
6
+
7
+ - Improve linearization performance by only reading header objects when constructing the ramp sets. (`#301 <https://bitbucket.org/dkistdc/dkist-processing-cryonirsp/pull-requests/301>`__)
8
+
9
+
1
10
  v2.1.0 (2026-08-25)
2
11
  ===================
3
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 2.1.0
3
+ Version: 2.1.1
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
@@ -115,15 +115,15 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
115
115
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
116
116
  Requires-Dist: billiard==4.2.4; extra == "frozen"
117
117
  Requires-Dist: bleach==6.4.0; extra == "frozen"
118
- Requires-Dist: boto3==1.43.79; extra == "frozen"
119
- Requires-Dist: botocore==1.43.79; extra == "frozen"
118
+ Requires-Dist: boto3==1.43.83; extra == "frozen"
119
+ Requires-Dist: botocore==1.43.83; extra == "frozen"
120
120
  Requires-Dist: cachetools==7.1.7; extra == "frozen"
121
121
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
122
122
  Requires-Dist: celery==5.6.3; extra == "frozen"
123
123
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
124
124
  Requires-Dist: cffi==2.1.1; extra == "frozen"
125
125
  Requires-Dist: charset-normalizer==3.5.1; extra == "frozen"
126
- Requires-Dist: click==8.4.2; extra == "frozen"
126
+ Requires-Dist: click==8.5.0; extra == "frozen"
127
127
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
128
128
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
129
129
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
@@ -132,7 +132,7 @@ Requires-Dist: comm==0.2.3; extra == "frozen"
132
132
  Requires-Dist: contourpy==1.3.3; extra == "frozen"
133
133
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
134
134
  Requires-Dist: croniter==6.2.4; extra == "frozen"
135
- Requires-Dist: cryptography==50.0.0; extra == "frozen"
135
+ Requires-Dist: cryptography==50.0.1; extra == "frozen"
136
136
  Requires-Dist: cycler==0.12.1; extra == "frozen"
137
137
  Requires-Dist: debugpy==1.8.21; extra == "frozen"
138
138
  Requires-Dist: decorator==5.3.1; extra == "frozen"
@@ -141,7 +141,7 @@ Requires-Dist: dill==0.4.1; extra == "frozen"
141
141
  Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
142
142
  Requires-Dist: dkist-processing-common==14.4.0; extra == "frozen"
143
143
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
144
- Requires-Dist: dkist-processing-cryonirsp==2.1.0; extra == "frozen"
144
+ Requires-Dist: dkist-processing-cryonirsp==2.1.1; 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"
@@ -159,11 +159,11 @@ Requires-Dist: fqdn==1.5.1; extra == "frozen"
159
159
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
160
160
  Requires-Dist: fsspec==2026.7.0; extra == "frozen"
161
161
  Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
162
- Requires-Dist: googleapis-common-protos==1.75.1; extra == "frozen"
162
+ Requires-Dist: googleapis-common-protos==1.75.2; extra == "frozen"
163
163
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
164
164
  Requires-Dist: greenback==1.3.0; extra == "frozen"
165
165
  Requires-Dist: greenlet==3.5.5; extra == "frozen"
166
- Requires-Dist: grpcio==1.83.0; extra == "frozen"
166
+ Requires-Dist: grpcio==1.83.1; 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"
@@ -171,9 +171,9 @@ Requires-Dist: httpx==0.28.1; extra == "frozen"
171
171
  Requires-Dist: humanize==4.16.0; extra == "frozen"
172
172
  Requires-Dist: idna==3.19; extra == "frozen"
173
173
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
174
- Requires-Dist: importlib_metadata==9.0.0; extra == "frozen"
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.16.1; extra == "frozen"
176
+ Requires-Dist: ipython==9.17.0; 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"
@@ -187,14 +187,14 @@ 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
189
  Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
190
- Requires-Dist: jupyter_client==8.9.1; extra == "frozen"
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.20.0; extra == "frozen"
192
+ Requires-Dist: jupyter_server==2.21.0; extra == "frozen"
193
193
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
194
194
  Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
195
195
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
196
196
  Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
197
- Requires-Dist: kiwisolver==1.5.0; extra == "frozen"
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"
@@ -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.11.4; extra == "frozen"
268
+ Requires-Dist: platformdirs==4.11.5; 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"
@@ -280,10 +280,10 @@ Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
280
280
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
281
281
  Requires-Dist: pure_eval==0.2.3; extra == "frozen"
282
282
  Requires-Dist: pycparser==3.0; extra == "frozen"
283
- Requires-Dist: pydantic==2.13.4; extra == "frozen"
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
- Requires-Dist: pydantic_core==2.46.4; extra == "frozen"
286
+ Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
287
287
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
288
288
  Requires-Dist: pygtrie==2.5.0; extra == "frozen"
289
289
  Requires-Dist: pyparsing==3.3.2; extra == "frozen"
@@ -335,7 +335,7 @@ Requires-Dist: tinycss2==1.5.1; extra == "frozen"
335
335
  Requires-Dist: tornado==6.5.8; extra == "frozen"
336
336
  Requires-Dist: tqdm==4.70.0; extra == "frozen"
337
337
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
- Requires-Dist: typer==0.27.1; extra == "frozen"
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
341
  Requires-Dist: tzdata==2026.3; extra == "frozen"
@@ -351,11 +351,11 @@ Requires-Dist: uvloop==0.22.1; extra == "frozen"
351
351
  Requires-Dist: vine==5.1.0; extra == "frozen"
352
352
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
353
353
  Requires-Dist: watchfiles==1.2.0; extra == "frozen"
354
- Requires-Dist: wcwidth==0.8.2; extra == "frozen"
354
+ Requires-Dist: wcwidth==0.8.3; extra == "frozen"
355
355
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
356
356
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
357
357
  Requires-Dist: websocket-client==1.9.0; extra == "frozen"
358
- Requires-Dist: websockets==17.0.1; extra == "frozen"
358
+ Requires-Dist: websockets==17.1; extra == "frozen"
359
359
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
360
360
  Requires-Dist: wrapt==2.3.0; extra == "frozen"
361
361
  Requires-Dist: yamale==6.1.0; extra == "frozen"
@@ -4,6 +4,8 @@ from dataclasses import dataclass
4
4
  from typing import Generator
5
5
 
6
6
  import numpy as np
7
+ from astropy.io import fits
8
+ from dkist_processing_common.codecs.fits import fits_access_header_decoder
7
9
  from dkist_processing_common.codecs.fits import fits_array_encoder
8
10
  from dkist_service_configuration.logging import logger
9
11
  from numba import njit
@@ -104,22 +106,22 @@ class LinearityCorrection(CryonirspTaskBase):
104
106
  Generator which yields _RampSet instances
105
107
  """
106
108
  for ramp_set_num, time_obs in enumerate(self.constants.time_obs_list):
107
- input_objects = list(
109
+ header_objects = list(
108
110
  self.read(
109
111
  tags=[
110
112
  CryonirspTag.input(),
111
113
  CryonirspTag.frame(),
112
114
  CryonirspTag.time_obs(time_obs),
113
115
  ],
114
- decoder=cryo_fits_access_decoder,
116
+ decoder=fits_access_header_decoder,
115
117
  fits_access_class=CryonirspRampFitsAccess,
116
118
  )
117
119
  )
118
120
 
119
- if not self.is_ramp_valid(input_objects):
121
+ if not self.is_ramp_valid(header_objects):
120
122
  continue
121
123
 
122
- ramp_set = self.populate_ramp_set(time_obs, ramp_set_num)
124
+ ramp_set = self.populate_ramp_set(time_obs, ramp_set_num, header_objects)
123
125
  yield ramp_set
124
126
 
125
127
  def is_ramp_valid(self, ramp_object_list: list[CryonirspRampFitsAccess]) -> bool:
@@ -193,32 +195,21 @@ class LinearityCorrection(CryonirspTaskBase):
193
195
  fits_obj = fits_obj_list[0]
194
196
  return fits_obj
195
197
 
196
- def get_ordered_exposure_time_list(self, time_obs: str, num_frames_in_ramp: int) -> np.ndarray:
197
- """
198
- Return a list of exposure times for this ramp, ordered by frame in ramp.
199
-
200
- Parameters
201
- ----------
202
- time_obs
203
- The DATE-OBS value identifying the ramp
204
- num_frames_in_ramp
205
- The number of frames in the ramp
206
-
207
- Returns
208
- -------
209
- np.ndarray of the exposure times for the NDRs in the ramp set.
210
-
211
- This method iterates through all the frames in the ramp to construct the list. While this could
212
- be incorporated into other methods that iterate through a ramp set, it is kept separate for clarity.
213
- We read one frame at a time to not have all the frames in memory simultaneously.
214
- """
215
- exp_time_list = []
216
- for frame_num in range(1, num_frames_in_ramp + 1):
217
- fits_obj = self.read_single_ramp_frame(time_obs, frame_num)
218
- exp_time_list.append(fits_obj.fpa_exposure_time_ms)
219
- return np.array(exp_time_list, dtype=np.float32)
220
-
221
- def populate_ramp_set(self, time_obs: str, idx: int) -> _RampSet | None:
198
+ @staticmethod
199
+ def get_frame_shape_from_header(header: fits.Header) -> tuple[int, ...]:
200
+ """Return the data shape using only FITS header metadata."""
201
+ axis_key = "ZNAXIS" if "ZNAXIS" in header else "NAXIS"
202
+ frame_shape = tuple(header[f"{axis_key}{axis}"] for axis in range(header[axis_key], 0, -1))
203
+ if len(frame_shape) == 3 and frame_shape[0] == 1:
204
+ frame_shape = frame_shape[1:]
205
+ return frame_shape
206
+
207
+ def populate_ramp_set(
208
+ self,
209
+ time_obs: str,
210
+ idx: int,
211
+ ramp_object_list: list[CryonirspRampFitsAccess],
212
+ ) -> _RampSet:
222
213
  """
223
214
  Populate a _RampSet dataclass for the ramp identified by time_obs.
224
215
 
@@ -228,16 +219,21 @@ class LinearityCorrection(CryonirspTaskBase):
228
219
  The DATE-OBS value identifying the ramp
229
220
  idx
230
221
  The index number representing this ramp set out of the total number of ramp sets (zero-based)
222
+ ramp_object_list
223
+ Header-only objects for all frames in the ramp
231
224
 
232
225
  Returns
233
226
  -------
234
227
  A populated _RampSet object representing the specified ramp in the input data set
235
228
 
236
- The last frame in the set is read to access the shape of the data frame.
229
+ All metadata is reused from the header-only objects loaded during ramp validation.
237
230
  """
238
- actual_num_frames_in_ramp = self.count(CryonirspTag.time_obs(time_obs))
239
- exp_times = self.get_ordered_exposure_time_list(time_obs, actual_num_frames_in_ramp)
240
- last_frame = self.read_single_ramp_frame(time_obs, actual_num_frames_in_ramp)
231
+ ordered_objects = sorted(ramp_object_list, key=lambda fo: fo.curr_frame_in_ramp)
232
+ actual_num_frames_in_ramp = len(ordered_objects)
233
+ exp_times = np.array(
234
+ [fits_obj.fpa_exposure_time_ms for fits_obj in ordered_objects], dtype=np.float32
235
+ )
236
+ last_frame = ordered_objects[-1]
241
237
  ramp_set_num = idx + 1
242
238
  # The default list of curr_frame_in_ramp tag numbers to use, which may be altered later on
243
239
  frames_to_process = np.array(range(1, actual_num_frames_in_ramp + 1), dtype=int)
@@ -246,7 +242,7 @@ class LinearityCorrection(CryonirspTaskBase):
246
242
  time_obs=time_obs,
247
243
  num_frames_in_ramp=actual_num_frames_in_ramp,
248
244
  exposure_times_ms=exp_times,
249
- frame_shape=last_frame.data.shape,
245
+ frame_shape=self.get_frame_shape_from_header(last_frame.header),
250
246
  last_frame_name=last_frame.name,
251
247
  last_frame_fits_access=CryonirspRampFitsAccess(header=last_frame.header),
252
248
  frames_to_process=frames_to_process,
@@ -301,7 +297,7 @@ class LinearityCorrection(CryonirspTaskBase):
301
297
  'LookUpTable','FastCDS','FitUpTheRamp' (ignored if data is line by line)
302
298
 
303
299
  camera_readout_mode
304
- ‘FastUpTheRamp, ‘SlowUpTheRamp’, or 'LineByLine’
300
+ 'FastUpTheRamp', 'SlowUpTheRamp', or 'LineByLine'
305
301
 
306
302
  lin_curve
307
303
  The lincurve array is the set of coefficients for a 3rd order polynomial which represents the overall
@@ -391,7 +387,7 @@ class LinearityCorrection(CryonirspTaskBase):
391
387
  e. Store the linearized chunk in the proper location in the final linearized array
392
388
  3. Return the linearized ramp, reshaping it to the original frame shape
393
389
  """
394
- thresholds_flattened = thresholds.flatten()
390
+ thresholds_flattened = thresholds.ravel(order="C")
395
391
  frame_shape = ramp_set.frame_shape
396
392
  linearized_frame = np.zeros(np.prod(frame_shape), dtype=np.float32)
397
393
  num_frame_size_elements = int(np.prod(frame_shape))
@@ -463,7 +459,9 @@ class LinearityCorrection(CryonirspTaskBase):
463
459
  for frame_num in ramp_set.frames_to_process:
464
460
  frame = self.read_single_ramp_frame(ramp_set.time_obs, frame_num).data
465
461
  frame_pos_in_stack = frame_num - ramp_set.index_offset_to_first_frame
466
- chunk_stack[:current_chunk_size, frame_pos_in_stack] = frame.flatten()[current_slice]
462
+ chunk_stack[:current_chunk_size, frame_pos_in_stack] = frame.ravel(order="C")[
463
+ current_slice
464
+ ]
467
465
  return chunk_stack
468
466
 
469
467
  def compute_linear_chunk_size(self, frame_size_nelem: int, num_frames_in_ramp: int) -> int:
@@ -209,6 +209,40 @@ class DummyRampFitsAccess:
209
209
  ip_task_type: str = "TASK"
210
210
 
211
211
 
212
+ @pytest.mark.parametrize(
213
+ "header_values, expected_shape",
214
+ [
215
+ pytest.param(
216
+ {"NAXIS": 2, "NAXIS1": 50, "NAXIS2": 75},
217
+ (75, 50),
218
+ id="uncompressed_2d",
219
+ ),
220
+ pytest.param(
221
+ {"NAXIS": 3, "NAXIS1": 10, "NAXIS2": 20, "NAXIS3": 1},
222
+ (20, 10),
223
+ id="axis_of_length_1",
224
+ ),
225
+ pytest.param(
226
+ {
227
+ "NAXIS": 2,
228
+ "NAXIS1": 5,
229
+ "NAXIS2": 6,
230
+ "ZNAXIS": 3,
231
+ "ZNAXIS1": 30,
232
+ "ZNAXIS2": 40,
233
+ "ZNAXIS3": 1,
234
+ },
235
+ (40, 30),
236
+ id="compressed_image_with_axis_of_length_1",
237
+ ),
238
+ ],
239
+ )
240
+ def test_get_frame_shape_from_header(header_values, expected_shape):
241
+ header = fits.Header(header_values)
242
+
243
+ assert LinearityCorrection.get_frame_shape_from_header(header) == expected_shape
244
+
245
+
212
246
  @pytest.mark.parametrize(
213
247
  "arm_id",
214
248
  [pytest.param("CI", id="CI"), pytest.param("SP", id="SP")],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dkist-processing-cryonirsp
3
- Version: 2.1.0
3
+ Version: 2.1.1
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
@@ -115,15 +115,15 @@ Requires-Dist: babel==2.18.0; extra == "frozen"
115
115
  Requires-Dist: beautifulsoup4==4.15.0; extra == "frozen"
116
116
  Requires-Dist: billiard==4.2.4; extra == "frozen"
117
117
  Requires-Dist: bleach==6.4.0; extra == "frozen"
118
- Requires-Dist: boto3==1.43.79; extra == "frozen"
119
- Requires-Dist: botocore==1.43.79; extra == "frozen"
118
+ Requires-Dist: boto3==1.43.83; extra == "frozen"
119
+ Requires-Dist: botocore==1.43.83; extra == "frozen"
120
120
  Requires-Dist: cachetools==7.1.7; extra == "frozen"
121
121
  Requires-Dist: cadwyn==7.0.0; extra == "frozen"
122
122
  Requires-Dist: celery==5.6.3; extra == "frozen"
123
123
  Requires-Dist: certifi==2026.7.22; extra == "frozen"
124
124
  Requires-Dist: cffi==2.1.1; extra == "frozen"
125
125
  Requires-Dist: charset-normalizer==3.5.1; extra == "frozen"
126
- Requires-Dist: click==8.4.2; extra == "frozen"
126
+ Requires-Dist: click==8.5.0; extra == "frozen"
127
127
  Requires-Dist: click-didyoumean==0.3.1; extra == "frozen"
128
128
  Requires-Dist: click-plugins==1.1.1.2; extra == "frozen"
129
129
  Requires-Dist: click-repl==0.3.0; extra == "frozen"
@@ -132,7 +132,7 @@ Requires-Dist: comm==0.2.3; extra == "frozen"
132
132
  Requires-Dist: contourpy==1.3.3; extra == "frozen"
133
133
  Requires-Dist: cron_descriptor==2.1.0; extra == "frozen"
134
134
  Requires-Dist: croniter==6.2.4; extra == "frozen"
135
- Requires-Dist: cryptography==50.0.0; extra == "frozen"
135
+ Requires-Dist: cryptography==50.0.1; extra == "frozen"
136
136
  Requires-Dist: cycler==0.12.1; extra == "frozen"
137
137
  Requires-Dist: debugpy==1.8.21; extra == "frozen"
138
138
  Requires-Dist: decorator==5.3.1; extra == "frozen"
@@ -141,7 +141,7 @@ Requires-Dist: dill==0.4.1; extra == "frozen"
141
141
  Requires-Dist: dkist-header-validator==5.4.0; extra == "frozen"
142
142
  Requires-Dist: dkist-processing-common==14.4.0; extra == "frozen"
143
143
  Requires-Dist: dkist-processing-core==7.5.0; extra == "frozen"
144
- Requires-Dist: dkist-processing-cryonirsp==2.1.0; extra == "frozen"
144
+ Requires-Dist: dkist-processing-cryonirsp==2.1.1; 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"
@@ -159,11 +159,11 @@ Requires-Dist: fqdn==1.5.1; extra == "frozen"
159
159
  Requires-Dist: frozenlist==1.8.0; extra == "frozen"
160
160
  Requires-Dist: fsspec==2026.7.0; extra == "frozen"
161
161
  Requires-Dist: globus-sdk==4.9.0; extra == "frozen"
162
- Requires-Dist: googleapis-common-protos==1.75.1; extra == "frozen"
162
+ Requires-Dist: googleapis-common-protos==1.75.2; extra == "frozen"
163
163
  Requires-Dist: gqlclient==2.0.0; extra == "frozen"
164
164
  Requires-Dist: greenback==1.3.0; extra == "frozen"
165
165
  Requires-Dist: greenlet==3.5.5; extra == "frozen"
166
- Requires-Dist: grpcio==1.83.0; extra == "frozen"
166
+ Requires-Dist: grpcio==1.83.1; 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"
@@ -171,9 +171,9 @@ Requires-Dist: httpx==0.28.1; extra == "frozen"
171
171
  Requires-Dist: humanize==4.16.0; extra == "frozen"
172
172
  Requires-Dist: idna==3.19; extra == "frozen"
173
173
  Requires-Dist: imageio-ffmpeg==0.6.0; extra == "frozen"
174
- Requires-Dist: importlib_metadata==9.0.0; extra == "frozen"
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.16.1; extra == "frozen"
176
+ Requires-Dist: ipython==9.17.0; 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"
@@ -187,14 +187,14 @@ 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
189
  Requires-Dist: jupyter_builder==1.2.2; extra == "frozen"
190
- Requires-Dist: jupyter_client==8.9.1; extra == "frozen"
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.20.0; extra == "frozen"
192
+ Requires-Dist: jupyter_server==2.21.0; extra == "frozen"
193
193
  Requires-Dist: jupyter_server_terminals==0.5.4; extra == "frozen"
194
194
  Requires-Dist: jupyterlab==4.6.3; extra == "frozen"
195
195
  Requires-Dist: jupyterlab_pygments==0.3.0; extra == "frozen"
196
196
  Requires-Dist: jupyterlab_server==2.28.0; extra == "frozen"
197
- Requires-Dist: kiwisolver==1.5.0; extra == "frozen"
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"
@@ -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.11.4; extra == "frozen"
268
+ Requires-Dist: platformdirs==4.11.5; 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"
@@ -280,10 +280,10 @@ Requires-Dist: psycopg2-binary==2.9.12; extra == "frozen"
280
280
  Requires-Dist: ptyprocess==0.7.0; extra == "frozen"
281
281
  Requires-Dist: pure_eval==0.2.3; extra == "frozen"
282
282
  Requires-Dist: pycparser==3.0; extra == "frozen"
283
- Requires-Dist: pydantic==2.13.4; extra == "frozen"
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
- Requires-Dist: pydantic_core==2.46.4; extra == "frozen"
286
+ Requires-Dist: pydantic_core==2.46.5; extra == "frozen"
287
287
  Requires-Dist: pyerfa==2.0.1.5; extra == "frozen"
288
288
  Requires-Dist: pygtrie==2.5.0; extra == "frozen"
289
289
  Requires-Dist: pyparsing==3.3.2; extra == "frozen"
@@ -335,7 +335,7 @@ Requires-Dist: tinycss2==1.5.1; extra == "frozen"
335
335
  Requires-Dist: tornado==6.5.8; extra == "frozen"
336
336
  Requires-Dist: tqdm==4.70.0; extra == "frozen"
337
337
  Requires-Dist: traitlets==5.16.1; extra == "frozen"
338
- Requires-Dist: typer==0.27.1; extra == "frozen"
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
341
  Requires-Dist: tzdata==2026.3; extra == "frozen"
@@ -351,11 +351,11 @@ Requires-Dist: uvloop==0.22.1; extra == "frozen"
351
351
  Requires-Dist: vine==5.1.0; extra == "frozen"
352
352
  Requires-Dist: voluptuous==0.16.0; extra == "frozen"
353
353
  Requires-Dist: watchfiles==1.2.0; extra == "frozen"
354
- Requires-Dist: wcwidth==0.8.2; extra == "frozen"
354
+ Requires-Dist: wcwidth==0.8.3; extra == "frozen"
355
355
  Requires-Dist: webcolors==25.10.0; extra == "frozen"
356
356
  Requires-Dist: webencodings==0.6.1; extra == "frozen"
357
357
  Requires-Dist: websocket-client==1.9.0; extra == "frozen"
358
- Requires-Dist: websockets==17.0.1; extra == "frozen"
358
+ Requires-Dist: websockets==17.1; extra == "frozen"
359
359
  Requires-Dist: wirerope==1.0.0; extra == "frozen"
360
360
  Requires-Dist: wrapt==2.3.0; extra == "frozen"
361
361
  Requires-Dist: yamale==6.1.0; extra == "frozen"
@@ -84,15 +84,15 @@ babel==2.18.0
84
84
  beautifulsoup4==4.15.0
85
85
  billiard==4.2.4
86
86
  bleach==6.4.0
87
- boto3==1.43.79
88
- botocore==1.43.79
87
+ boto3==1.43.83
88
+ botocore==1.43.83
89
89
  cachetools==7.1.7
90
90
  cadwyn==7.0.0
91
91
  celery==5.6.3
92
92
  certifi==2026.7.22
93
93
  cffi==2.1.1
94
94
  charset-normalizer==3.5.1
95
- click==8.4.2
95
+ click==8.5.0
96
96
  click-didyoumean==0.3.1
97
97
  click-plugins==1.1.1.2
98
98
  click-repl==0.3.0
@@ -101,7 +101,7 @@ comm==0.2.3
101
101
  contourpy==1.3.3
102
102
  cron_descriptor==2.1.0
103
103
  croniter==6.2.4
104
- cryptography==50.0.0
104
+ cryptography==50.0.1
105
105
  cycler==0.12.1
106
106
  debugpy==1.8.21
107
107
  decorator==5.3.1
@@ -110,7 +110,7 @@ dill==0.4.1
110
110
  dkist-header-validator==5.4.0
111
111
  dkist-processing-common==14.4.0
112
112
  dkist-processing-core==7.5.0
113
- dkist-processing-cryonirsp==2.1.0
113
+ dkist-processing-cryonirsp==2.1.1
114
114
  dkist-processing-math==2.2.3
115
115
  dkist-processing-pac==3.1.2
116
116
  dkist-service-configuration==4.3.0
@@ -128,11 +128,11 @@ fqdn==1.5.1
128
128
  frozenlist==1.8.0
129
129
  fsspec==2026.7.0
130
130
  globus-sdk==4.9.0
131
- googleapis-common-protos==1.75.1
131
+ googleapis-common-protos==1.75.2
132
132
  gqlclient==2.0.0
133
133
  greenback==1.3.0
134
134
  greenlet==3.5.5
135
- grpcio==1.83.0
135
+ grpcio==1.83.1
136
136
  h11==0.16.0
137
137
  httpcore==1.0.9
138
138
  httptools==0.8.0
@@ -140,9 +140,9 @@ httpx==0.28.1
140
140
  humanize==4.16.0
141
141
  idna==3.19
142
142
  imageio-ffmpeg==0.6.0
143
- importlib_metadata==9.0.0
143
+ importlib_metadata==9.0.1
144
144
  ipykernel==7.3.0
145
- ipython==9.16.1
145
+ ipython==9.17.0
146
146
  ipython_pygments_lexers==1.1.1
147
147
  isoduration==20.11.0
148
148
  itsdangerous==2.2.0
@@ -156,14 +156,14 @@ jsonschema-specifications==2025.9.1
156
156
  jupyter-events==0.12.1
157
157
  jupyter-lsp==2.3.1
158
158
  jupyter_builder==1.2.2
159
- jupyter_client==8.9.1
159
+ jupyter_client==8.10.0
160
160
  jupyter_core==5.9.1
161
- jupyter_server==2.20.0
161
+ jupyter_server==2.21.0
162
162
  jupyter_server_terminals==0.5.4
163
163
  jupyterlab==4.6.3
164
164
  jupyterlab_pygments==0.3.0
165
165
  jupyterlab_server==2.28.0
166
- kiwisolver==1.5.0
166
+ kiwisolver==1.5.1
167
167
  kombu==5.6.2
168
168
  largestinteriorrectangle==0.2.1
169
169
  lark==1.3.1
@@ -234,7 +234,7 @@ pexpect==4.9.0
234
234
  pika==1.4.4
235
235
  pillow==10.4.0
236
236
  pip==26.2.1
237
- platformdirs==4.11.4
237
+ platformdirs==4.11.5
238
238
  pluggy==1.6.0
239
239
  pooch==1.9.0
240
240
  proglog==0.1.12
@@ -249,10 +249,10 @@ psycopg2-binary==2.9.12
249
249
  ptyprocess==0.7.0
250
250
  pure_eval==0.2.3
251
251
  pycparser==3.0
252
- pydantic==2.13.4
252
+ pydantic==2.13.5
253
253
  pydantic-extra-types==2.11.1
254
254
  pydantic-settings==2.15.0
255
- pydantic_core==2.46.4
255
+ pydantic_core==2.46.5
256
256
  pyerfa==2.0.1.5
257
257
  pygtrie==2.5.0
258
258
  pyparsing==3.3.2
@@ -304,7 +304,7 @@ tinycss2==1.5.1
304
304
  tornado==6.5.8
305
305
  tqdm==4.70.0
306
306
  traitlets==5.16.1
307
- typer==0.27.1
307
+ typer==0.27.2
308
308
  typing-inspection==0.4.4
309
309
  typing_extensions==4.16.0
310
310
  tzdata==2026.3
@@ -320,11 +320,11 @@ uvloop==0.22.1
320
320
  vine==5.1.0
321
321
  voluptuous==0.16.0
322
322
  watchfiles==1.2.0
323
- wcwidth==0.8.2
323
+ wcwidth==0.8.3
324
324
  webcolors==25.10.0
325
325
  webencodings==0.6.1
326
326
  websocket-client==1.9.0
327
- websockets==17.0.1
327
+ websockets==17.1
328
328
  wirerope==1.0.0
329
329
  wrapt==2.3.0
330
330
  yamale==6.1.0
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.1.1",
3
+ "distance": 0,
4
+ "node": "g0e54814b1aae39ec917b9ef64c2fa224a97dc15e",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-28"
8
+ }