pyreduce-astro 0.7a2__tar.gz → 0.7a4__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 (204) hide show
  1. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/CHANGELOG.md +14 -0
  2. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/PKG-INFO +1 -1
  3. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/aj_example.py +4 -0
  4. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/crires_plus_example.py +4 -0
  5. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/custom_instrument_example.py +4 -0
  6. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/harpn_example.py +4 -0
  7. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/harps_example.py +4 -0
  8. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/harps_gridsearch.py +4 -0
  9. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/just_one_swath.py +4 -0
  10. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/jwst_miri_example.py +4 -0
  11. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/jwst_niriss_example.py +4 -0
  12. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/lick_apf_example.py +4 -0
  13. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/mcdonald_example.py +4 -0
  14. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/metis_ifu_example.py +4 -0
  15. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/metis_lss_example.py +4 -0
  16. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/micado_example.py +4 -0
  17. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/neid_example.py +4 -0
  18. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/nirspec_example.py +4 -0
  19. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/toes_example.py +4 -0
  20. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/uves_callfunc.py +4 -0
  21. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/uves_example.py +4 -0
  22. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/examples/xshooter_example.py +4 -0
  23. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyproject.toml +1 -1
  24. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/__main__.py +121 -5
  25. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/uv.lock +1 -1
  26. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/.gitattributes +0 -0
  27. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/.gitignore +0 -0
  28. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/.pre-commit-config.yaml +0 -0
  29. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/.pyup.yml +0 -0
  30. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/.readthedocs.yaml +0 -0
  31. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/AGENTS.md +0 -0
  32. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/CLAUDE.md +0 -0
  33. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/LICENSE +0 -0
  34. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/README.md +0 -0
  35. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/README_METIS.md +0 -0
  36. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/codemeta.json +0 -0
  37. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/environment.yml +0 -0
  38. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/hatch_build.py +0 -0
  39. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/ipy_startup.py +0 -0
  40. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/plots_for_paper/dimensionality.py +0 -0
  41. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/plots_for_paper/settings_HARPS.json +0 -0
  42. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/plots_for_paper/wavecal_plot.py +0 -0
  43. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyproject.toml.sav +0 -0
  44. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/__init__.py +0 -0
  45. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/cli.py +0 -0
  46. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/__init__.py +0 -0
  47. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/build_extract.py +0 -0
  48. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
  49. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
  50. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/slit_func_bd.c +0 -0
  51. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clib/slit_func_bd.h +0 -0
  52. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/clipnflip.py +0 -0
  53. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/combine_frames.py +0 -0
  54. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/configuration.py +0 -0
  55. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/continuum_normalization.py +0 -0
  56. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/cwrappers.py +0 -0
  57. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/datasets.py +0 -0
  58. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/echelle.py +0 -0
  59. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/estimate_background_scatter.py +0 -0
  60. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/extract.py +0 -0
  61. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/extraction_width.py +0 -0
  62. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/__init__.py +0 -0
  63. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/aj.py +0 -0
  64. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/aj.yaml +0 -0
  65. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/andes.py +0 -0
  66. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/andes.yaml +0 -0
  67. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/common.py +0 -0
  68. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/common.yaml +0 -0
  69. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/crires_plus.py +0 -0
  70. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/crires_plus.yaml +0 -0
  71. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/filters.py +0 -0
  72. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/harpn.py +0 -0
  73. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/harpn.yaml +0 -0
  74. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/harps.py +0 -0
  75. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/harps.yaml +0 -0
  76. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/instrument_info.py +0 -0
  77. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/jwst_miri.py +0 -0
  78. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/jwst_miri.yaml +0 -0
  79. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/jwst_niriss.py +0 -0
  80. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/jwst_niriss.yaml +0 -0
  81. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/lick_apf.py +0 -0
  82. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/lick_apf.yaml +0 -0
  83. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/mcdonald.py +0 -0
  84. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/mcdonald.yaml +0 -0
  85. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/metis_ifu.py +0 -0
  86. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/metis_ifu.yaml +0 -0
  87. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/metis_lss.py +0 -0
  88. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/metis_lss.yaml +0 -0
  89. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/micado.py +0 -0
  90. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/micado.yaml +0 -0
  91. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/models.py +0 -0
  92. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/neid.py +0 -0
  93. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/neid.yaml +0 -0
  94. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/nirspec.py +0 -0
  95. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/nirspec.yaml +0 -0
  96. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/nte.py +0 -0
  97. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/nte.yaml +0 -0
  98. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/uves.py +0 -0
  99. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/uves.yaml +0 -0
  100. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/xshooter.py +0 -0
  101. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/instruments/xshooter.yaml +0 -0
  102. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/make_shear.py +0 -0
  103. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
  104. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
  105. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
  106. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
  107. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_elodie.fits.gz +0 -0
  108. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_feros3.fits.gz +0 -0
  109. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
  110. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
  111. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
  112. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
  113. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
  114. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
  115. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
  116. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
  117. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
  118. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
  119. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_nes.fits.gz +0 -0
  120. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
  121. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_sarg.fits.gz +0 -0
  122. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
  123. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
  124. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
  125. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
  126. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
  127. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
  128. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
  129. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
  130. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
  131. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
  132. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
  133. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
  134. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
  135. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/pipeline.py +0 -0
  136. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/rectify.py +0 -0
  137. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/reduce.py +0 -0
  138. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_AJ.json +0 -0
  139. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_ANDES.json +0 -0
  140. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_CRIRES_PLUS.json +0 -0
  141. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_HARPN.json +0 -0
  142. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_HARPS.json +0 -0
  143. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_JWST_MIRI.json +0 -0
  144. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_JWST_NIRISS.json +0 -0
  145. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_LICK_APF.json +0 -0
  146. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_MCDONALD.json +0 -0
  147. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_METIS_IFU.json +0 -0
  148. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_METIS_LSS.json +0 -0
  149. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_MICADO.json +0 -0
  150. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_NEID.json +0 -0
  151. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_NIRSPEC.json +0 -0
  152. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_NTE.json +0 -0
  153. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_UVES.json +0 -0
  154. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_XSHOOTER.json +0 -0
  155. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_pyreduce.json +0 -0
  156. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/settings/settings_schema.json +0 -0
  157. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/tools/__init__.py +0 -0
  158. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/tools/combine.py +0 -0
  159. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/trace.py +0 -0
  160. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/util.py +0 -0
  161. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
  162. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/atlas/thar.fits +0 -0
  163. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
  164. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/atlas/une.fits +0 -0
  165. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/convert.py +0 -0
  166. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/crires_plus_J1228_Open_det1.npz +0 -0
  167. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/crires_plus_J1228_Open_det2.npz +0 -0
  168. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/crires_plus_J1228_Open_det3.npz +0 -0
  169. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
  170. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
  171. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
  172. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/harps_red_2D.npz +0 -0
  173. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
  174. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/mcdonald.npz +0 -0
  175. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
  176. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
  177. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/nirspec_K2.npz +0 -0
  178. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
  179. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
  180. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
  181. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
  182. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
  183. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
  184. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
  185. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
  186. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
  187. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
  188. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
  189. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
  190. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
  191. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
  192. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavecal/xshooter_nir.npz +0 -0
  193. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/pyreduce/wavelength_calibration.py +0 -0
  194. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/argon.line +0 -0
  195. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/bpm_creator.py +0 -0
  196. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/create_wavelength_guess.py +0 -0
  197. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/download_files.py +0 -0
  198. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/neon.lin +0 -0
  199. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/neon.line +0 -0
  200. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/pymultispec.py +0 -0
  201. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/thar.npz +0 -0
  202. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/wavecal_creator.py +0 -0
  203. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/wavecal_creator_from_existing.py +0 -0
  204. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a4}/tools/xshooter_nir.json +0 -0
@@ -1,6 +1,20 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [0.7a4] - 2025-12-23
5
+
6
+ ### Added
7
+ - `reduce examples --run` flag to download and execute examples directly
8
+ - PEP 723 inline metadata in examples for `uv run` compatibility
9
+
10
+ ## [0.7a3] - 2025-12-23
11
+
12
+ ### Added
13
+ - `reduce examples` command to list/download examples from GitHub matching installed version
14
+
15
+ ### Changed
16
+ - CLI startup 12x faster via lazy imports (1.2s -> 0.1s)
17
+
4
18
  ## [0.7a2] - 2025-12-23
5
19
 
6
20
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyreduce-astro
3
- Version: 0.7a2
3
+ Version: 0.7a4
4
4
  Summary: A data reduction package for echelle spectrographs
5
5
  Project-URL: Homepage, https://github.com/ivh/PyReduce
6
6
  Project-URL: Documentation, https://pyreduce-astro.readthedocs.io
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  AJ instrument example: Fiber bundle tracing with direct function calls.
3
7
 
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a CRIRES+ dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample UVES dataset, and runs the full extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a HARPS-N dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample HARPS dataset, and runs the full extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  import os.path
2
6
 
3
7
  import matplotlib.pyplot as plt
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  import matplotlib.pyplot as plt
2
6
  import numpy as np
3
7
  from astropy.io import fits
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a JWST MIRI dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample JWST NIRISS dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a Lick APF dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a McDonald Observatory dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a simulated METIS dataset, and runs the full extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a simulated METIS dataset, and runs the full extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a ScopeSim simulated MICADO dataset (with updated spectral layout and updated line lists), and runs the full extraction.
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a NEID dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample NIRSPEC dataset, and runs the extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  import numpy as np
2
6
 
3
7
  from pyreduce.configuration import get_configuration_for_instrument
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Example showing direct function calls for each step.
3
7
 
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample UVES dataset, and runs the full extraction
@@ -1,3 +1,7 @@
1
+ # /// script
2
+ # requires-python = ">=3.13"
3
+ # dependencies = ["pyreduce-astro>=0.7"]
4
+ # ///
1
5
  """
2
6
  Simple usage example for PyReduce
3
7
  Loads a sample XSHOOTER dataset, and runs the extraction
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pyreduce-astro"
3
- version = "0.7a2"
3
+ version = "0.7a4"
4
4
  requires-python = ">=3.11"
5
5
  description = "A data reduction package for echelle spectrographs"
6
6
  readme = "README.md"
@@ -11,11 +11,6 @@ Usage:
11
11
 
12
12
  import click
13
13
 
14
- from . import datasets
15
- from .configuration import get_configuration_for_instrument
16
- from .reduce import main as reduce_main
17
- from .tools.combine import combine as tools_combine
18
-
19
14
  ALL_STEPS = (
20
15
  "bias",
21
16
  "flat",
@@ -89,6 +84,9 @@ def run(
89
84
  INSTRUMENT: Name of the instrument (e.g., UVES, HARPS, XSHOOTER)
90
85
  TARGET: Target star name or regex pattern
91
86
  """
87
+ from .configuration import get_configuration_for_instrument
88
+ from .reduce import main as reduce_main
89
+
92
90
  # Parse steps
93
91
  if steps:
94
92
  steps = tuple(s.strip() for s in steps.split(","))
@@ -128,6 +126,8 @@ def combine(files, output, plot):
128
126
 
129
127
  FILES: Input .final.fits files to combine
130
128
  """
129
+ from .tools.combine import combine as tools_combine
130
+
131
131
  tools_combine(list(files), output, plot=plot)
132
132
 
133
133
 
@@ -138,6 +138,8 @@ def download(instrument):
138
138
 
139
139
  INSTRUMENT: Name of the instrument (e.g., UVES, HARPS)
140
140
  """
141
+ from . import datasets
142
+
141
143
  instrument = instrument.upper()
142
144
  dataset_func = getattr(datasets, instrument, None)
143
145
  if dataset_func is None:
@@ -153,6 +155,117 @@ def download(instrument):
153
155
  click.echo(f"Dataset downloaded to: {path}")
154
156
 
155
157
 
158
+ @cli.command()
159
+ @click.argument("filename", required=False)
160
+ @click.option(
161
+ "--list", "-l", "list_examples", is_flag=True, help="List available examples"
162
+ )
163
+ @click.option("--all", "-a", "download_all", is_flag=True, help="Download all examples")
164
+ @click.option("--run", "-r", is_flag=True, help="Run the example after downloading")
165
+ @click.option("--output", "-o", default=".", help="Output directory")
166
+ def examples(filename, list_examples, download_all, run, output):
167
+ """List, download, or run example scripts from GitHub.
168
+
169
+ Downloads examples matching your installed PyReduce version.
170
+
171
+ \b
172
+ Examples:
173
+ reduce examples # List available examples
174
+ reduce examples uves_example.py # Download to current dir
175
+ reduce examples -r uves_example.py # Download and run
176
+ reduce examples --all -o ~/scripts # Download all to ~/scripts
177
+ """
178
+ import json
179
+ import os
180
+ import subprocess
181
+ import sys
182
+ import tempfile
183
+ import urllib.request
184
+ from urllib.error import HTTPError
185
+
186
+ from pyreduce import __version__
187
+
188
+ version = __version__.split("+")[0]
189
+ if version == "unknown":
190
+ raise click.ClickException(
191
+ "Cannot determine package version. Install from PyPI or a tagged release."
192
+ )
193
+
194
+ github_api = (
195
+ f"https://api.github.com/repos/ivh/PyReduce/contents/examples?ref=v{version}"
196
+ )
197
+ github_raw = f"https://raw.githubusercontent.com/ivh/PyReduce/v{version}/examples"
198
+
199
+ # Fetch list of examples from GitHub API
200
+ try:
201
+ with urllib.request.urlopen(github_api) as resp:
202
+ contents = json.loads(resp.read().decode())
203
+ except HTTPError as e:
204
+ if e.code == 404:
205
+ raise click.ClickException(
206
+ f"Tag v{version} not found on GitHub. "
207
+ "Try installing a released version."
208
+ ) from None
209
+ raise click.ClickException(f"GitHub API error: {e}") from None
210
+
211
+ example_files = sorted(f["name"] for f in contents if f["name"].endswith(".py"))
212
+
213
+ # List mode
214
+ if list_examples or (not filename and not download_all):
215
+ click.echo(f"Available examples for v{version}:")
216
+ for name in example_files:
217
+ click.echo(f" {name}")
218
+ return
219
+
220
+ if run and download_all:
221
+ raise click.ClickException("Cannot use --run with --all")
222
+
223
+ # Run mode: download to temp and execute
224
+ if run:
225
+ if filename not in example_files:
226
+ raise click.ClickException(
227
+ f"Unknown example '{filename}'. Use 'reduce examples --list' to see available."
228
+ )
229
+ url = f"{github_raw}/{filename}"
230
+ with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False) as f:
231
+ try:
232
+ with urllib.request.urlopen(url) as resp:
233
+ f.write(resp.read().decode())
234
+ temp_path = f.name
235
+ except HTTPError as e:
236
+ raise click.ClickException(
237
+ f"Failed to download {filename}: {e}"
238
+ ) from None
239
+ try:
240
+ click.echo(f"Running {filename}...")
241
+ result = subprocess.run([sys.executable, temp_path], check=False)
242
+ sys.exit(result.returncode)
243
+ finally:
244
+ os.unlink(temp_path)
245
+
246
+ # Ensure output directory exists
247
+ os.makedirs(output, exist_ok=True)
248
+
249
+ def download_file(name):
250
+ url = f"{github_raw}/{name}"
251
+ dest = os.path.join(output, name)
252
+ try:
253
+ urllib.request.urlretrieve(url, dest)
254
+ click.echo(f"Downloaded: {dest}")
255
+ except HTTPError as e:
256
+ click.echo(f"Failed to download {name}: {e}", err=True)
257
+
258
+ if download_all:
259
+ for name in example_files:
260
+ download_file(name)
261
+ else:
262
+ if filename not in example_files:
263
+ raise click.ClickException(
264
+ f"Unknown example '{filename}'. Use 'reduce examples --list' to see available."
265
+ )
266
+ download_file(filename)
267
+
268
+
156
269
  @cli.command("list-steps")
157
270
  def list_steps():
158
271
  """List all available reduction steps."""
@@ -174,6 +287,9 @@ def make_step_command(step_name):
174
287
  @click.option("--output-dir", "-o", default="reduced", help="Output directory")
175
288
  @click.option("--plot", "-p", default=0, help="Plot level")
176
289
  def cmd(instrument, target, night, arm, base_dir, input_dir, output_dir, plot):
290
+ from .configuration import get_configuration_for_instrument
291
+ from .reduce import main as reduce_main
292
+
177
293
  config = get_configuration_for_instrument(instrument)
178
294
  reduce_main(
179
295
  instrument=instrument,
@@ -1456,7 +1456,7 @@ wheels = [
1456
1456
 
1457
1457
  [[package]]
1458
1458
  name = "pyreduce-astro"
1459
- version = "0.7.0a2"
1459
+ version = "0.7a4"
1460
1460
  source = { editable = "." }
1461
1461
  dependencies = [
1462
1462
  { name = "astropy" },
File without changes
File without changes
File without changes
File without changes
File without changes