pyreduce-astro 0.7a2__tar.gz → 0.7a3__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.7a3}/CHANGELOG.md +8 -0
  2. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/PKG-INFO +1 -1
  3. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyproject.toml +1 -1
  4. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/__main__.py +90 -5
  5. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/uv.lock +1 -1
  6. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/.gitattributes +0 -0
  7. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/.gitignore +0 -0
  8. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/.pre-commit-config.yaml +0 -0
  9. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/.pyup.yml +0 -0
  10. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/.readthedocs.yaml +0 -0
  11. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/AGENTS.md +0 -0
  12. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/CLAUDE.md +0 -0
  13. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/LICENSE +0 -0
  14. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/README.md +0 -0
  15. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/README_METIS.md +0 -0
  16. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/codemeta.json +0 -0
  17. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/environment.yml +0 -0
  18. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/aj_example.py +0 -0
  19. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/crires_plus_example.py +0 -0
  20. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/custom_instrument_example.py +0 -0
  21. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/harpn_example.py +0 -0
  22. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/harps_example.py +0 -0
  23. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/harps_gridsearch.py +0 -0
  24. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/just_one_swath.py +0 -0
  25. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/jwst_miri_example.py +0 -0
  26. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/jwst_niriss_example.py +0 -0
  27. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/lick_apf_example.py +0 -0
  28. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/mcdonald_example.py +0 -0
  29. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/metis_ifu_example.py +0 -0
  30. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/metis_lss_example.py +0 -0
  31. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/micado_example.py +0 -0
  32. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/neid_example.py +0 -0
  33. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/nirspec_example.py +0 -0
  34. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/toes_example.py +0 -0
  35. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/uves_callfunc.py +0 -0
  36. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/uves_example.py +0 -0
  37. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/examples/xshooter_example.py +0 -0
  38. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/hatch_build.py +0 -0
  39. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/ipy_startup.py +0 -0
  40. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/plots_for_paper/dimensionality.py +0 -0
  41. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/plots_for_paper/settings_HARPS.json +0 -0
  42. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/plots_for_paper/wavecal_plot.py +0 -0
  43. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyproject.toml.sav +0 -0
  44. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/__init__.py +0 -0
  45. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/cli.py +0 -0
  46. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/__init__.py +0 -0
  47. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/build_extract.py +0 -0
  48. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/slit_func_2d_xi_zeta_bd.c +0 -0
  49. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/slit_func_2d_xi_zeta_bd.h +0 -0
  50. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/slit_func_bd.c +0 -0
  51. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clib/slit_func_bd.h +0 -0
  52. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/clipnflip.py +0 -0
  53. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/combine_frames.py +0 -0
  54. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/configuration.py +0 -0
  55. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/continuum_normalization.py +0 -0
  56. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/cwrappers.py +0 -0
  57. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/datasets.py +0 -0
  58. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/echelle.py +0 -0
  59. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/estimate_background_scatter.py +0 -0
  60. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/extract.py +0 -0
  61. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/extraction_width.py +0 -0
  62. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/__init__.py +0 -0
  63. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/aj.py +0 -0
  64. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/aj.yaml +0 -0
  65. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/andes.py +0 -0
  66. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/andes.yaml +0 -0
  67. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/common.py +0 -0
  68. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/common.yaml +0 -0
  69. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/crires_plus.py +0 -0
  70. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/crires_plus.yaml +0 -0
  71. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/filters.py +0 -0
  72. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/harpn.py +0 -0
  73. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/harpn.yaml +0 -0
  74. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/harps.py +0 -0
  75. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/harps.yaml +0 -0
  76. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/instrument_info.py +0 -0
  77. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/jwst_miri.py +0 -0
  78. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/jwst_miri.yaml +0 -0
  79. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/jwst_niriss.py +0 -0
  80. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/jwst_niriss.yaml +0 -0
  81. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/lick_apf.py +0 -0
  82. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/lick_apf.yaml +0 -0
  83. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/mcdonald.py +0 -0
  84. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/mcdonald.yaml +0 -0
  85. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/metis_ifu.py +0 -0
  86. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/metis_ifu.yaml +0 -0
  87. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/metis_lss.py +0 -0
  88. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/metis_lss.yaml +0 -0
  89. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/micado.py +0 -0
  90. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/micado.yaml +0 -0
  91. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/models.py +0 -0
  92. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/neid.py +0 -0
  93. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/neid.yaml +0 -0
  94. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/nirspec.py +0 -0
  95. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/nirspec.yaml +0 -0
  96. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/nte.py +0 -0
  97. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/nte.yaml +0 -0
  98. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/uves.py +0 -0
  99. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/uves.yaml +0 -0
  100. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/xshooter.py +0 -0
  101. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/instruments/xshooter.yaml +0 -0
  102. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/make_shear.py +0 -0
  103. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_crires_plus_det1.fits.gz +0 -0
  104. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_crires_plus_det2.fits.gz +0 -0
  105. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_crires_plus_det3.fits.gz +0 -0
  106. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_ctio_chiron.fits.gz +0 -0
  107. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_elodie.fits.gz +0 -0
  108. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_feros3.fits.gz +0 -0
  109. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_flames_giraffe.fits.gz +0 -0
  110. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_harps_blue.fits.gz +0 -0
  111. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_harps_red.fits.gz +0 -0
  112. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_hds_blue.fits.gz +0 -0
  113. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_hds_red.fits.gz +0 -0
  114. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_het_hrs_2x5.fits.gz +0 -0
  115. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_jwst_miri_lrs_slitless.fits.gz +0 -0
  116. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_jwst_niriss_gr700xd.fits.gz +0 -0
  117. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_lick_apf_.fits.gz +0 -0
  118. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_mcdonald.fits.gz +0 -0
  119. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_nes.fits.gz +0 -0
  120. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_nirspec_nirspec.fits.gz +0 -0
  121. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_sarg.fits.gz +0 -0
  122. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_sarg_2x2a.fits.gz +0 -0
  123. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_sarg_2x2b.fits.gz +0 -0
  124. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_subaru_hds_red.fits.gz +0 -0
  125. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_blue.fits.gz +0 -0
  126. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_blue_binned_2_2.fits.gz +0 -0
  127. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_middle.fits.gz +0 -0
  128. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_middle_2x2_split.fits.gz +0 -0
  129. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_middle_binned_2_2.fits.gz +0 -0
  130. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_red.fits.gz +0 -0
  131. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_red_2x2.fits.gz +0 -0
  132. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_red_2x2_split.fits.gz +0 -0
  133. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_uves_red_binned_2_2.fits.gz +0 -0
  134. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/masks/mask_xshooter_nir.fits.gz +0 -0
  135. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/pipeline.py +0 -0
  136. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/rectify.py +0 -0
  137. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/reduce.py +0 -0
  138. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_AJ.json +0 -0
  139. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_ANDES.json +0 -0
  140. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_CRIRES_PLUS.json +0 -0
  141. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_HARPN.json +0 -0
  142. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_HARPS.json +0 -0
  143. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_JWST_MIRI.json +0 -0
  144. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_JWST_NIRISS.json +0 -0
  145. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_LICK_APF.json +0 -0
  146. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_MCDONALD.json +0 -0
  147. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_METIS_IFU.json +0 -0
  148. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_METIS_LSS.json +0 -0
  149. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_MICADO.json +0 -0
  150. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_NEID.json +0 -0
  151. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_NIRSPEC.json +0 -0
  152. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_NTE.json +0 -0
  153. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_UVES.json +0 -0
  154. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_XSHOOTER.json +0 -0
  155. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_pyreduce.json +0 -0
  156. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/settings/settings_schema.json +0 -0
  157. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/tools/__init__.py +0 -0
  158. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/tools/combine.py +0 -0
  159. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/trace.py +0 -0
  160. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/util.py +0 -0
  161. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/MICADO_HK_3arcsec_chip5.npz +0 -0
  162. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/atlas/thar.fits +0 -0
  163. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/atlas/thar_list.txt +0 -0
  164. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/atlas/une.fits +0 -0
  165. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/convert.py +0 -0
  166. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/crires_plus_J1228_Open_det1.npz +0 -0
  167. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/crires_plus_J1228_Open_det2.npz +0 -0
  168. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/crires_plus_J1228_Open_det3.npz +0 -0
  169. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/harpn_harpn_2D.npz +0 -0
  170. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/harps_blue_2D.npz +0 -0
  171. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/harps_blue_pol_2D.npz +0 -0
  172. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/harps_red_2D.npz +0 -0
  173. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/harps_red_pol_2D.npz +0 -0
  174. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/mcdonald.npz +0 -0
  175. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/metis_lss_l_2D.npz +0 -0
  176. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/metis_lss_m_2D.npz +0 -0
  177. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/nirspec_K2.npz +0 -0
  178. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_blue_360nm_2D.npz +0 -0
  179. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_blue_390nm_2D.npz +0 -0
  180. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_blue_437nm_2D.npz +0 -0
  181. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_2x2_2D.npz +0 -0
  182. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_565nm_2D.npz +0 -0
  183. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_580nm_2D.npz +0 -0
  184. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_600nm_2D.npz +0 -0
  185. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_665nm_2D.npz +0 -0
  186. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_middle_860nm_2D.npz +0 -0
  187. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_red_580nm_2D.npz +0 -0
  188. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_red_600nm_2D.npz +0 -0
  189. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_red_665nm_2D.npz +0 -0
  190. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_red_760nm_2D.npz +0 -0
  191. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/uves_red_860nm_2D.npz +0 -0
  192. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavecal/xshooter_nir.npz +0 -0
  193. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/pyreduce/wavelength_calibration.py +0 -0
  194. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/argon.line +0 -0
  195. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/bpm_creator.py +0 -0
  196. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/create_wavelength_guess.py +0 -0
  197. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/download_files.py +0 -0
  198. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/neon.lin +0 -0
  199. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/neon.line +0 -0
  200. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/pymultispec.py +0 -0
  201. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/thar.npz +0 -0
  202. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/wavecal_creator.py +0 -0
  203. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/wavecal_creator_from_existing.py +0 -0
  204. {pyreduce_astro-0.7a2 → pyreduce_astro-0.7a3}/tools/xshooter_nir.json +0 -0
@@ -1,6 +1,14 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [0.7a3] - 2025-12-23
5
+
6
+ ### Added
7
+ - `reduce examples` command to list/download examples from GitHub matching installed version
8
+
9
+ ### Changed
10
+ - CLI startup 12x faster via lazy imports (1.2s -> 0.1s)
11
+
4
12
  ## [0.7a2] - 2025-12-23
5
13
 
6
14
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyreduce-astro
3
- Version: 0.7a2
3
+ Version: 0.7a3
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,6 +1,6 @@
1
1
  [project]
2
2
  name = "pyreduce-astro"
3
- version = "0.7a2"
3
+ version = "0.7a3"
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,86 @@ 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("--output", "-o", default=".", help="Output directory")
165
+ def examples(filename, list_examples, download_all, output):
166
+ """List or download example scripts from GitHub.
167
+
168
+ Downloads examples matching your installed PyReduce version.
169
+
170
+ \b
171
+ Examples:
172
+ reduce examples # List available examples
173
+ reduce examples uves_example.py # Download to current dir
174
+ reduce examples --all -o ~/scripts # Download all to ~/scripts
175
+ """
176
+ import json
177
+ import os
178
+ import urllib.request
179
+ from urllib.error import HTTPError
180
+
181
+ from pyreduce import __version__
182
+
183
+ version = __version__.split("+")[0]
184
+ if version == "unknown":
185
+ raise click.ClickException(
186
+ "Cannot determine package version. Install from PyPI or a tagged release."
187
+ )
188
+
189
+ github_api = (
190
+ f"https://api.github.com/repos/ivh/PyReduce/contents/examples?ref=v{version}"
191
+ )
192
+ github_raw = f"https://raw.githubusercontent.com/ivh/PyReduce/v{version}/examples"
193
+
194
+ # Fetch list of examples from GitHub API
195
+ try:
196
+ with urllib.request.urlopen(github_api) as resp:
197
+ contents = json.loads(resp.read().decode())
198
+ except HTTPError as e:
199
+ if e.code == 404:
200
+ raise click.ClickException(
201
+ f"Tag v{version} not found on GitHub. "
202
+ "Try installing a released version."
203
+ ) from None
204
+ raise click.ClickException(f"GitHub API error: {e}") from None
205
+
206
+ example_files = sorted(f["name"] for f in contents if f["name"].endswith(".py"))
207
+
208
+ # List mode
209
+ if list_examples or (not filename and not download_all):
210
+ click.echo(f"Available examples for v{version}:")
211
+ for name in example_files:
212
+ click.echo(f" {name}")
213
+ return
214
+
215
+ # Ensure output directory exists
216
+ os.makedirs(output, exist_ok=True)
217
+
218
+ def download_file(name):
219
+ url = f"{github_raw}/{name}"
220
+ dest = os.path.join(output, name)
221
+ try:
222
+ urllib.request.urlretrieve(url, dest)
223
+ click.echo(f"Downloaded: {dest}")
224
+ except HTTPError as e:
225
+ click.echo(f"Failed to download {name}: {e}", err=True)
226
+
227
+ if download_all:
228
+ for name in example_files:
229
+ download_file(name)
230
+ else:
231
+ if filename not in example_files:
232
+ raise click.ClickException(
233
+ f"Unknown example '{filename}'. Use 'reduce examples --list' to see available."
234
+ )
235
+ download_file(filename)
236
+
237
+
156
238
  @cli.command("list-steps")
157
239
  def list_steps():
158
240
  """List all available reduction steps."""
@@ -174,6 +256,9 @@ def make_step_command(step_name):
174
256
  @click.option("--output-dir", "-o", default="reduced", help="Output directory")
175
257
  @click.option("--plot", "-p", default=0, help="Plot level")
176
258
  def cmd(instrument, target, night, arm, base_dir, input_dir, output_dir, plot):
259
+ from .configuration import get_configuration_for_instrument
260
+ from .reduce import main as reduce_main
261
+
177
262
  config = get_configuration_for_instrument(instrument)
178
263
  reduce_main(
179
264
  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.7a3"
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