pyuvdata 3.2.6__tar.gz → 3.2.8__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 (298) hide show
  1. pyuvdata-3.2.8/.github/dependabot.yml +8 -0
  2. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/macosx_windows_ci.yaml +20 -3
  3. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/numba_test.yaml +8 -4
  4. pyuvdata-3.2.8/.github/workflows/publish-to-test-pypi.yaml +111 -0
  5. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/workflows/warning_test.yaml +9 -5
  6. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.gitignore +3 -0
  7. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.pre-commit-config.yaml +6 -1
  8. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/CHANGELOG.md +111 -9
  9. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/PKG-INFO +14 -12
  10. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/README.md +2 -2
  11. pyuvdata-3.2.8/ci/prefetch_test_data.py +67 -0
  12. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_min_deps_tests.yml +1 -1
  13. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_min_versions_tests.yml +1 -1
  14. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests.yml +2 -2
  15. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests_mac_arm.yml +2 -2
  16. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/pyuvdata_tests_windows.yml +2 -2
  17. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/test_requirements.txt +1 -1
  18. pyuvdata-3.2.8/docs/Images/mwa_fa_proj.png +0 -0
  19. pyuvdata-3.2.8/docs/Images/mwa_fa_resp.png +0 -0
  20. pyuvdata-3.2.8/docs/Images/short_dipole_fa_projection.png +0 -0
  21. pyuvdata-3.2.8/docs/Images/short_dipole_fa_response.png +0 -0
  22. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/analytic_beam_tutorial.rst +37 -10
  23. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/analytic_beams.rst +4 -3
  24. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/beam_interface_tutorial.rst +1 -1
  25. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conventions.rst +14 -11
  26. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvcal.py +1 -1
  27. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvdata.py +2 -2
  28. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calh5.tex +1 -1
  29. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_memo.tex +1 -1
  30. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/tutorial_data_note.rst +1 -1
  31. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvbeam_tutorial.rst +97 -24
  32. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvcal_tutorial.rst +3 -3
  33. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/uvdata_tutorial.rst +7 -6
  34. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/environment.yaml +2 -2
  35. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/pyproject.toml +20 -15
  36. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/analytic_beam.py +180 -25
  37. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/beam_interface.py +28 -18
  38. pyuvdata-3.2.8/src/pyuvdata/data/mwa_config_data/mwa_lna_impedance.txt +452 -0
  39. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_analytic_beam.py +2 -10
  40. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data.yaml +2 -0
  41. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data_registry.txt +2 -0
  42. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/datasets.py +3 -1
  43. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/parameter.py +4 -1
  44. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/testing/warning_check.py +1 -1
  45. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/__init__.py +2 -0
  46. pyuvdata-3.2.8/src/pyuvdata/utils/averaging.py +195 -0
  47. pyuvdata-3.2.8/src/pyuvdata/utils/averaging_numba.py +173 -0
  48. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bltaxis.py +1 -1
  49. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.c +22025 -18000
  50. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.py +2 -2
  51. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/frequency.py +39 -0
  52. pyuvdata-3.2.8/src/pyuvdata/utils/gain_interpolate.py +1319 -0
  53. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fhd.py +1 -1
  54. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phase_center_catalog.py +4 -4
  55. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.c +19434 -15815
  56. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.py +68 -59
  57. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/plotting.py +20 -5
  58. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/pol.py +5 -5
  59. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/times.py +6 -6
  60. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/tools.py +157 -7
  61. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/types.py +1 -0
  62. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/uvcalibrate.py +271 -11
  63. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbase.py +224 -9
  64. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/beamfits.py +1 -1
  65. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/initializers.py +23 -11
  66. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/mwa_beam.py +413 -101
  67. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.c +19522 -15897
  68. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.py +503 -73
  69. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calfits.py +1 -1
  70. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/fhd_cal.py +2 -2
  71. pyuvdata-3.2.8/src/pyuvdata/uvcal/miriad_cal.py +434 -0
  72. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/ms_cal.py +35 -50
  73. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/uvcal.py +372 -10
  74. pyuvdata-3.2.8/src/pyuvdata/uvdata/aipy_extracts.py +1403 -0
  75. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.c +22332 -18364
  76. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/fhd.py +1 -1
  77. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_parser.py +1 -1
  78. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/miriad.py +43 -460
  79. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/ms.py +71 -34
  80. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mwa_corr_fits.py +7 -7
  81. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.cpp +20711 -17855
  82. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvdata.py +756 -967
  83. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvfits.py +6 -6
  84. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvh5.py +1 -1
  85. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/uvflag.py +10 -4
  86. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/PKG-INFO +14 -12
  87. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/SOURCES.txt +16 -0
  88. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/requires.txt +7 -5
  89. pyuvdata-3.2.8/src/pyuvdata.egg-info/scm_file_list.json +285 -0
  90. pyuvdata-3.2.8/src/pyuvdata.egg-info/scm_version.json +8 -0
  91. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/conftest.py +39 -14
  92. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_analytic_beam.py +155 -18
  93. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_beam_interface.py +28 -13
  94. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_telescopes.py +9 -8
  95. pyuvdata-3.2.8/tests/utils/test_averaging.py +433 -0
  96. pyuvdata-3.2.8/tests/utils/test_gain_interpolate.py +970 -0
  97. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_phasing.py +95 -141
  98. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_tools.py +48 -0
  99. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_uvcalibrate.py +554 -0
  100. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/conftest.py +74 -3
  101. pyuvdata-3.2.8/tests/uvbeam/test_mwa_beam.py +559 -0
  102. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_uvbeam.py +255 -78
  103. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_fhd_cal.py +2 -1
  104. pyuvdata-3.2.8/tests/uvcal/test_miriad_cal.py +374 -0
  105. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_ms_cal.py +79 -1
  106. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_uvcal.py +255 -1
  107. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_aipy_extracts.py +59 -0
  108. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_fhd.py +1 -1
  109. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir.py +1 -1
  110. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_miriad.py +112 -22
  111. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_ms.py +100 -25
  112. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mwa_corr_fits.py +6 -6
  113. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvdata.py +448 -48
  114. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvfits.py +2 -6
  115. pyuvdata-3.2.6/.github/workflows/publish-to-test-pypi.yaml +0 -86
  116. pyuvdata-3.2.6/src/pyuvdata/uvdata/aipy_extracts.py +0 -755
  117. pyuvdata-3.2.6/tests/uvbeam/test_mwa_beam.py +0 -303
  118. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.circleci/config.yml +0 -0
  119. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.codecov.yml +0 -0
  120. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.coveragerc +0 -0
  121. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/CITATION.cff +0 -0
  122. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/CONTRIBUTING.md +0 -0
  123. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  124. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/.readthedocs.yml +0 -0
  125. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/CODE_OF_CONDUCT.md +0 -0
  126. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/LICENSE +0 -0
  127. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/ci/azure-piplines.yml +0 -0
  128. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/abs_gains.png +0 -0
  129. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/airy_beam_100MHz.png +0 -0
  130. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/airy_beam_200MHz.png +0 -0
  131. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall.png +0 -0
  132. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall_spw0.png +0 -0
  133. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/beam_coordinate_figure.png +0 -0
  134. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/dipole_mwa_power.png +0 -0
  135. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/efield_power_beam_cut.png +0 -0
  136. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield.png +0 -0
  137. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield_phase.png +0 -0
  138. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_efield_zoom.png +0 -0
  139. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_power_healpix_zoom.png +0 -0
  140. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_power_zoom.png +0 -0
  141. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/hera_pstokes.png +0 -0
  142. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_off_zenith_power.png +0 -0
  143. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_cross_power.png +0 -0
  144. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield.png +0 -0
  145. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield_abs.png +0 -0
  146. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_power.png +0 -0
  147. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/select_beam_cut.png +0 -0
  148. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Images/short_dipole_beam.png +0 -0
  149. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/Makefile +0 -0
  150. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/_templates/breadcrumbs.html +0 -0
  151. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/beam_interface.rst +0 -0
  152. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conf.py +0 -0
  153. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/conftest.py +0 -0
  154. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/cst_settings_yaml.rst +0 -0
  155. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/developer_docs.rst +0 -0
  156. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/fast_calh5_meta.rst +0 -0
  157. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/fast_uvh5_meta.rst +0 -0
  158. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_index.py +0 -0
  159. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_telescope.py +0 -0
  160. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvbeam.py +0 -0
  161. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/make_uvflag.py +0 -0
  162. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/AIPSMEM117.PDF +0 -0
  163. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/Far_field_spherical_FEKO_draft2.pdf +0 -0
  164. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/GPS.G1-X-00006_Datum_Transformations.pdf +0 -0
  165. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/aasjournal.bst +0 -0
  166. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/app_icrs_frame_comp.png +0 -0
  167. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/beamfits_memo.pdf +0 -0
  168. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/beamfits_memo.tex +0 -0
  169. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calfits_memo.pdf +0 -0
  170. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calfits_memo.tex +0 -0
  171. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/calh5.pdf +0 -0
  172. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/making_release.md +0 -0
  173. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/miriad-uvvars.pdf +0 -0
  174. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/ncp_icrs_app.png +0 -0
  175. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.bib +0 -0
  176. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.pdf +0 -0
  177. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/phasing.tex +0 -0
  178. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/simple_interferometer.png +0 -0
  179. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_diagram.pdf +0 -0
  180. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/references/uvh5_memo.pdf +0 -0
  181. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/requirements.txt +0 -0
  182. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/tutorial.rst +0 -0
  183. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/docs/utility_functions.rst +0 -0
  184. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/paper.bib +0 -0
  185. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/paper.md +0 -0
  186. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/check_uvfits_equal.py +0 -0
  187. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/convert_to_uvfits.py +0 -0
  188. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/fhd_batch_convert.py +0 -0
  189. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/make_bad_fhd_files.pro +0 -0
  190. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/pyuvdata_inspect.py +0 -0
  191. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/readwrite_uvfits.py +0 -0
  192. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/renumber_ants.py +0 -0
  193. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/test_cover_noinstall.sh +0 -0
  194. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/test_coverage.sh +0 -0
  195. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/truncate_fhd_files.pro +0 -0
  196. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/scripts/uvfits_memtest.py +0 -0
  197. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/setup.cfg +0 -0
  198. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/setup.py +0 -0
  199. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/__init__.py +0 -0
  200. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/README.md +0 -0
  201. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/__init__.py +0 -0
  202. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/hera_ant_pos.csv +0 -0
  203. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/jpl_major_bodies.json +0 -0
  204. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa128_ant_layouts.npz +0 -0
  205. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_ant_pos.csv +0 -0
  206. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/Chebychev_coeff.h5 +0 -0
  207. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.h5 +0 -0
  208. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.txt +0 -0
  209. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_40kHz.h5 +0 -0
  210. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_80kHz.h5 +0 -0
  211. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/sigma1.h5 +0 -0
  212. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/docstrings.py +0 -0
  213. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/telescopes.py +0 -0
  214. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/testing/__init__.py +0 -0
  215. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/antenna.py +0 -0
  216. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/apply_uvflag.py +0 -0
  217. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/array_collapse.py +0 -0
  218. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls.py +0 -0
  219. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls_numba.py +0 -0
  220. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.pyx +0 -0
  221. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/history.py +0 -0
  222. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/__init__.py +0 -0
  223. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/antpos.py +0 -0
  224. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fits.py +0 -0
  225. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/hdf5.py +0 -0
  226. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/ms.py +0 -0
  227. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.pyx +0 -0
  228. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/utils/redundancy.py +0 -0
  229. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/__init__.py +0 -0
  230. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/cst_beam.py +0 -0
  231. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/feko_beam.py +0 -0
  232. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.pyx +0 -0
  233. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/__init__.py +0 -0
  234. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calh5.py +0 -0
  235. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/initializers.py +0 -0
  236. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/__init__.py +0 -0
  237. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.pyx +0 -0
  238. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/initializers.py +0 -0
  239. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir.py +0 -0
  240. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_meta_data.py +0 -0
  241. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/aipy_compat.h +0 -0
  242. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/bug.c +0 -0
  243. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/dio.c +0 -0
  244. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/headio.c +0 -0
  245. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.c +0 -0
  246. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.h +0 -0
  247. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/io.h +0 -0
  248. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maskio.c +0 -0
  249. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maxdimc.h +0 -0
  250. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad.h +0 -0
  251. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.h +0 -0
  252. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.pyx +0 -0
  253. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/pack.c +0 -0
  254. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/sysdep.h +0 -0
  255. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/uvio.c +0 -0
  256. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/__init__.py +0 -0
  257. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/dependency_links.txt +0 -0
  258. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/top_level.txt +0 -0
  259. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/__init__.py +0 -0
  260. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_docstrings.py +0 -0
  261. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_parameter.py +0 -0
  262. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_uvbase.py +0 -0
  263. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/test_warning_check.py +0 -0
  264. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/__init__.py +0 -0
  265. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/conftest.py +0 -0
  266. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/__init__.py +0 -0
  267. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/test_hdf5.py +0 -0
  268. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/io/test_ms.py +0 -0
  269. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_apply_uvflag.py +0 -0
  270. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_array_collapse.py +0 -0
  271. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bls.py +0 -0
  272. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bls_numba.py +0 -0
  273. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_bltaxis.py +0 -0
  274. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_coordinates.py +0 -0
  275. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_phase_center_catalog.py +0 -0
  276. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_plotting.py +0 -0
  277. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_pol.py +0 -0
  278. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_redundancy.py +0 -0
  279. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/utils/test_times.py +0 -0
  280. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/__init__.py +0 -0
  281. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_beamfits.py +0 -0
  282. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_cst_beam.py +0 -0
  283. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_feko_beam.py +0 -0
  284. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvbeam/test_initializers.py +0 -0
  285. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/__init__.py +0 -0
  286. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/conftest.py +0 -0
  287. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_calfits.py +0 -0
  288. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_calh5.py +0 -0
  289. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvcal/test_initializers.py +0 -0
  290. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/__init__.py +0 -0
  291. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/conftest.py +0 -0
  292. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_import_errors.py +0 -0
  293. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_initializers.py +0 -0
  294. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir_meta_data.py +0 -0
  295. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_mir_parser.py +0 -0
  296. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvdata/test_uvh5.py +0 -0
  297. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvflag/__init__.py +0 -0
  298. {pyuvdata-3.2.6 → pyuvdata-3.2.8}/tests/uvflag/test_uvflag.py +0 -0
@@ -0,0 +1,8 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: "/"
5
+ schedule:
6
+ interval: monthly
7
+ cooldown:
8
+ default-days: 14
@@ -12,11 +12,16 @@ concurrency:
12
12
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
13
13
  cancel-in-progress: true
14
14
 
15
+ permissions: {}
16
+
15
17
  jobs:
16
18
  tests:
17
19
  name: Run Tests
18
20
  env:
19
21
  PYTHON: ${{ matrix.python-version }}
22
+ # Keep the test data in the workspace rather than the per-OS default cache
23
+ # location, so it can be cached with a single path on every runner.
24
+ PYUVDATA_DATA_DIR: ${{ github.workspace }}/pooch_cache
20
25
  runs-on: ${{ matrix.os }}
21
26
  defaults:
22
27
  run:
@@ -33,12 +38,13 @@ jobs:
33
38
  - env_name: pyuvdata_tests_mac_arm
34
39
  os: macos-latest
35
40
  steps:
36
- - uses: actions/checkout@main
41
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
37
42
  with:
38
43
  fetch-depth: 0
44
+ persist-credentials: false
39
45
 
40
46
  - name: Setup Miniforge
41
- uses: conda-incubator/setup-miniconda@v3
47
+ uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
42
48
  with:
43
49
  miniforge-version: latest
44
50
  python-version: ${{ matrix.python-version }}
@@ -56,6 +62,16 @@ jobs:
56
62
  exit 1;
57
63
  fi
58
64
 
65
+ - name: Restore cached test data
66
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
67
+ with:
68
+ path: pooch_cache
69
+ key: pooch-${{ runner.os }}-${{ hashFiles('src/pyuvdata/datasets.py') }}
70
+
71
+ - name: Download any test data not already cached
72
+ run: |
73
+ python ci/prefetch_test_data.py "$PYUVDATA_DATA_DIR"
74
+
59
75
  - name: Install
60
76
  run: |
61
77
  CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install .
@@ -64,8 +80,9 @@ jobs:
64
80
  run: |
65
81
  python -m pytest -n auto --dist=loadfile --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:./coverage.xml
66
82
 
67
- - uses: codecov/codecov-action@v5
83
+ - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
68
84
  if: success()
69
85
  with:
70
86
  token: ${{secrets.CODECOV_TOKEN}} #required
71
87
  files: ./coverage.xml #optional
88
+ fail_ci_if_error: true
@@ -12,17 +12,20 @@ concurrency:
12
12
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
13
13
  cancel-in-progress: true
14
14
 
15
+ permissions: {}
16
+
15
17
  jobs:
16
18
  numba_test:
17
19
  name: Numba Utils Tests
18
20
  runs-on: ubuntu-latest
19
21
  steps:
20
- - uses: actions/checkout@main
22
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
21
23
  with:
22
24
  fetch-depth: 0
25
+ persist-credentials: false
23
26
 
24
27
  - name: Setup Python
25
- uses: actions/setup-python@v5
28
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
26
29
  with:
27
30
  python-version-file: pyproject.toml
28
31
 
@@ -37,10 +40,11 @@ jobs:
37
40
 
38
41
  - name: Run Tests
39
42
  run: |
40
- NUMBA_DISABLE_JIT=1 pytest tests/utils/test_bls_numba.py -n auto --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml
43
+ NUMBA_DISABLE_JIT=1 pytest tests/utils/test_bls_numba.py tests/utils/test_gain_interpolate.py tests/utils/test_averaging.py -n auto --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml
41
44
 
42
- - uses: codecov/codecov-action@v5
45
+ - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
43
46
  if: success()
44
47
  with:
45
48
  token: ${{secrets.CODECOV_TOKEN}} #required
46
49
  files: ./coverage.xml #optional
50
+ fail_ci_if_error: true
@@ -0,0 +1,111 @@
1
+ name: Publish Python distributions to PyPI and TestPyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ pull_request:
7
+ branches: main
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
11
+ cancel-in-progress: true
12
+
13
+ permissions: {}
14
+
15
+ jobs:
16
+ build_wheels:
17
+ name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
18
+ runs-on: ${{ matrix.buildplat[0] }}
19
+ env:
20
+ PYUVDATA_DATA_DIR: ${{ github.workspace }}/pooch_cache
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ buildplat:
25
+ - [ubuntu-latest, manylinux, x86_64]
26
+ - [macos-15-intel, macosx, x86_64]
27
+ - [macos-latest, macosx, arm64]
28
+ - [windows-latest, win, AMD64]
29
+ python: ["cp311", "cp312", "cp313", "cp314"]
30
+ exclude:
31
+ # exclude intel macs on python 3.14 because there's no compatible numba wheel
32
+ - buildplat: [macos-15-intel, macosx, x86_64]
33
+ python: "cp314"
34
+ steps:
35
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
36
+ with:
37
+ fetch-depth: 0
38
+ persist-credentials: false
39
+
40
+ # Only for the prefetch step below
41
+ - name: Setup Python
42
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
43
+ with:
44
+ python-version-file: pyproject.toml
45
+
46
+ # Suppress the cache-poisoning audit for this step, since the only way to fix it
47
+ # is to allow for lookup-only , which would stop the cache from being restored.
48
+ # Known issue: https://github.com/zizmorcore/zizmor/issues/2071 -- the ignore can
49
+ # get removed once the issue is implemented in zizmor.
50
+ - name: Restore cached test data
51
+ if: github.event_name != 'release'
52
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 # zizmor: ignore[cache-poisoning]
53
+ with:
54
+ path: pooch_cache
55
+ key: pooch-${{ runner.os }}-${{ hashFiles('src/pyuvdata/datasets.py') }}
56
+
57
+ - name: Download any test data not already cached
58
+ shell: bash
59
+ run: |
60
+ python -m pip install pooch pyyaml
61
+ python ci/prefetch_test_data.py "$PYUVDATA_DATA_DIR"
62
+
63
+ - name: Build wheels
64
+ uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
65
+ env:
66
+ CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
67
+ CIBW_ARCHS: ${{ matrix.buildplat[2] }}
68
+ CIBW_TEST_REQUIRES: "-r ci/test_requirements.txt"
69
+ CIBW_TEST_COMMAND: "pytest {project}/tests -n auto"
70
+ CIBW_ENVIRONMENT: PYUVDATA_DATA_DIR='${{ env.PYUVDATA_DATA_DIR }}'
71
+ CIBW_ENVIRONMENT_LINUX: PYUVDATA_DATA_DIR=/project/pooch_cache
72
+
73
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
74
+ with:
75
+ name: cibw-wheels-${{ matrix.python }}-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }}
76
+ path: ./wheelhouse/*.whl
77
+
78
+ make_sdist:
79
+ name: Make SDist
80
+ runs-on: ubuntu-latest
81
+ steps:
82
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
83
+ with:
84
+ fetch-depth: 0
85
+ persist-credentials: false
86
+
87
+ - name: Build SDist
88
+ run: pipx run build --sdist
89
+
90
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
91
+ with:
92
+ name: cibw-sdist
93
+ path: dist/*.tar.gz
94
+
95
+ upload_all:
96
+ needs: [build_wheels, make_sdist]
97
+ runs-on: ubuntu-latest
98
+ permissions:
99
+ # IMPORTANT: this permission is mandatory for Trusted Publishing
100
+ id-token: write
101
+ steps:
102
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
103
+ with:
104
+ # unpacks all CIBW artifacts into dist/
105
+ pattern: cibw-*
106
+ path: dist
107
+ merge-multiple: true
108
+
109
+ - name: Upload to PyPI
110
+ if: startsWith(github.ref, 'refs/tags')
111
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -12,6 +12,8 @@ concurrency:
12
12
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
13
13
  cancel-in-progress: true
14
14
 
15
+ permissions: {}
16
+
15
17
  jobs:
16
18
  warning_test:
17
19
  name: Warning Test
@@ -31,12 +33,13 @@ jobs:
31
33
  pip-options: "test"
32
34
  coverage: false
33
35
  steps:
34
- - uses: actions/checkout@main
36
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
35
37
  with:
36
38
  fetch-depth: 0
39
+ persist-credentials: false
37
40
 
38
41
  - name: Setup Python
39
- uses: actions/setup-python@v5
42
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
40
43
  with:
41
44
  python-version: ${{ matrix.python-version }}
42
45
 
@@ -51,10 +54,11 @@ jobs:
51
54
 
52
55
  - name: Run Tests
53
56
  run: |
54
- pytest -W error -n auto ${{ env.PYTEST_OPTIONS }}
57
+ pytest -W error -n auto ${PYTEST_OPTIONS}
55
58
 
56
- - uses: codecov/codecov-action@v5
57
- if: success()
59
+ - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
60
+ if: matrix.coverage == true && success()
58
61
  with:
59
62
  token: ${{secrets.CODECOV_TOKEN}} #required
60
63
  files: ./coverage.xml #optional
64
+ fail_ci_if_error: true
@@ -84,3 +84,6 @@ src/pyuvdata/uvdata/corr_fits.c
84
84
  src/pyuvdata/uvdata/src/miriad_wrap.cpp
85
85
 
86
86
  .vscode/
87
+
88
+ # test data cache populated by ci/prefetch_test_data.py
89
+ pooch_cache/
@@ -17,7 +17,7 @@ repos:
17
17
  args: ['--fix=no']
18
18
 
19
19
  - repo: https://github.com/astral-sh/ruff-pre-commit
20
- rev: v0.15.9
20
+ rev: v0.16.7
21
21
  hooks:
22
22
  - id: ruff
23
23
  - id: ruff-format
@@ -28,3 +28,8 @@ repos:
28
28
  - id: bandit
29
29
  args: ["-c", "pyproject.toml", "--recursive"]
30
30
  additional_dependencies: ["bandit[toml]"]
31
+
32
+ - repo: https://github.com/zizmorcore/zizmor-pre-commit
33
+ rev: v1.30.1
34
+ hooks:
35
+ - id: zizmor
@@ -3,6 +3,108 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  ## [Unreleased]
5
5
 
6
+ ## [3.2.8] - 2025-09-18
7
+
8
+ ### Fixed
9
+ - A bug in `UVData.read_ms` where visibility units could not be parsed when stored in
10
+ a MeasurementSet as a singleton entry/list.
11
+ - A bug in `UVData.write_ms` which caused `corrected_data` and `model_data` not to be
12
+ reordered in the same way that, e.g., `UVData.data_array` was on write.
13
+ - A bug in `UVData.write_ms` which caused `corrected_data` and `model_data` not to be
14
+ conjugated (and inconsistent with `UVData.data_array`) when a mixture of baseline
15
+ conjugation schemes was present.
16
+ - A bug in `UVData.read_ms_cal` and `UVData.write_ms_cal` where gains tables where not
17
+ being conjugated correctly.
18
+ - A bug where the Jones array stored in calibration tables generated ny `UVCal.write_ms_cal`
19
+ could be incorrectly ordered.
20
+ - A bug where `utils.gain_interpolate.time_interp_cal` was not unwrapping phase gains
21
+ along the time axis correctly (mistakenly was using the Jones axis instead).
22
+ - A bug where calling `UVData.conjugate_bls` was not reordering `nsample_array` and
23
+ `flag_array` cross-polarization entries.
24
+ - A bug in `UVData.phase` where near-field phasing ignored `select_mask` and applied the
25
+ near-field correction to every record, overwriting the w-coordinate and rotating the
26
+ visibilities of records belonging to other phase centers.
27
+
28
+ ### Changed
29
+ - `UVData.read_ms` and `UVData.write_ms` now always flip conjugation scheme on read and
30
+ write for non-pyuvdata generated MeasurementSets (it was previously believed that when
31
+ ant1 > ant2, the conjugation scheme may be flipped, but that was a misreading of CASA's
32
+ codebase).
33
+
34
+ ## [3.2.7] - 2025-08-20
35
+
36
+ ### Added
37
+ - Support for reading Miriad bandpass, gains, delays, and leakage calibration tables
38
+ into `UVCal` via `UVCal.read_miriad_cal`.
39
+ - A new utility function `utils.averaging.mapped_average`, which performs a weighted
40
+ average of an array along a single axis using an arbitrary map of input to output
41
+ positions.
42
+ - A `chan_map` keyword to `UVData.frequency_average`, which allows for mapping input to
43
+ output channels, allowing for more sophisiticated averaging schemes (e.g., unevenly
44
+ sized bins).
45
+ - The keywords `weight_by_nsample` and `sum_nsample` to `UVData.frequency_average`,
46
+ which control whether channels are weighted by `nsample_array` in the average, and
47
+ whether `nsample_array` records the summed or the fractional number of samples.
48
+ - A new method `UVCal.interpolate_in_time`, which allows for UVCal calibration tables
49
+ to be "upsampled" in time.
50
+ - A new module (`gain_interpolate.py`) for performing time-based interpolation of
51
+ calibration solutions.
52
+ - A new option for `uvcalibrate`, called `apply_to_weights`, which allows for the values
53
+ in `UVData.nsample_array` to be adjusted in a manner consistent with the expected
54
+ inverse variance (e.g., if the visibilities are scaled up by a factor of 2 in amplitude,
55
+ `nsample_array` is scaled down by a factor of 4).
56
+ - The options `interpolate` and `interp_kwargs` were added to `uvcalibrate`, which allow
57
+ the solutions to be interpolated onto the times of the data being calibrated (via
58
+ `UVCal.interpolate_in_time`), rather than requiring the two to already match.
59
+ - The options `uvd_select_kwargs` and `uvc_select_kwargs` were added to `uvcalibrate`,
60
+ which allow the calibration to be applied to a subset of the data, and with a subset of
61
+ the solutions, respectively. An additional option, `flag_unselected`, allows users to
62
+ specify whether to flag unselected records in the `UVData` object.
63
+ - A new function `utils.tools.mask_slicify`, which converts a boolean mask into a slice
64
+ if possible, otherwise into an array of index positions.
65
+ - Support for two new types of beams in UVBeam and AnalyticBeam: feed_aligned_response
66
+ and feed_aligned_projection beams which result from an E-field beam decomposition
67
+ used in some analysis codes.
68
+ - Added more options for controlling labels on beam plots.
69
+ - Support for MWA Average Embedded Element beams in UVBeam.
70
+
71
+ ### Changed
72
+ - Moved the miriad telescope, antenna and frequency axis handling on to the
73
+ `aipy_extracts.UV` object so that it is shared between the `UVData` and `UVCal` readers,
74
+ adding `UV.get_telescope`, `UV.get_freq_axis` and `UV.get_data_antennas` methods.
75
+ - Changed how `UVCal.read_ms_cal` groups together calibration solutions based on time.
76
+ Previously solution timestamps needed to be within the default tolerance for
77
+ `UVCal.time_array` (1 millisecond), but testing suggests that CASA-based processes
78
+ have some "slop" in them on the order of tens of milliseconds, and therefore the
79
+ time tolerance was increased to 250 ms. This can be controlled through the keyword
80
+ `time_atol` (specified in seconds).
81
+ - Refactored `UVData.frequency_average` and `UVData.downsample_in_time` to use the new
82
+ numba-based `utils.averaging.mapped_average` routine, which is significantly faster and
83
+ uses less memory (substantially so for `UVData.frequency_average`).
84
+ - `uvcalibrate` now records more detail in `UVData.history`, including which records
85
+ were calibrated when a selection was used, whether the rest were flagged, and how the
86
+ solutions were interpolated if `interpolate` was set.
87
+ - Updating code to no longer set shapes directly on ndarrays (deprecated in NumPy 2.5)
88
+ - Require lunarsky>1.0 to drop spiceypy requirement
89
+
90
+ ### Fixed
91
+ - A bug where `UVData.frequency_average` would either raise an IndexError or zero out
92
+ fully-flagged channels in all spectral windows but the first, rather than recording
93
+ the average of the flagged values.
94
+ - A bug where `UVCal.pol_convention` was not being properly set when reading in
95
+ FHD calibration solutions due to a typo.
96
+ - A bug where `UVData.scan_number_array` was not properly updated when objects
97
+ were resampled in time.
98
+ - A bug where `UVData.scan_number_array` was not properly updated in the
99
+ `UVData.inflate_by_redundancy` method.
100
+ - A bug where `UVData.scan_number_array` was not properly updated when objects
101
+ were added or concatenated. The fix involved a major refactoring that should prevent
102
+ similar bugs in the future by using UVParameter forms to detect which attributes
103
+ to update on UVData objects.
104
+
105
+ ### Removed
106
+ - Spiceypy error catching in tests
107
+
6
108
  ## [3.2.6] - 2025-03-13
7
109
 
8
110
  ### Added
@@ -34,9 +136,9 @@ better default colormaps for phase.
34
136
  fringe-stopped data.
35
137
 
36
138
  ### Fixed
37
- - A backwards compatibiilty issue with feed arrays in old beamfits files which
139
+ - A backwards compatibility issue with feed arrays in old beamfits files which
38
140
  could specify feeds as "e" or "n".
39
- - Compatiblity with numpy>=2.3
141
+ - Compatibility with numpy>=2.3
40
142
 
41
143
  ## [3.2.4] - 2025-09-15
42
144
 
@@ -686,7 +788,7 @@ to allow the function name to be passed into the methods, with sensible defaulti
686
788
  `Nspws` (which used to only be required for baseline and antenna types). These
687
789
  parameters all already exist on UVData and UVCal objects and UVFlag objects initialized
688
790
  from them will inherit them. UVFlag objects will also inherit these parameters when
689
- they are converted between types using UVData and UVCalobjects.
791
+ they are converted between types using UVData and UVCal objects.
690
792
  - The `UVFlag.set_telescope_params` method, similar to the ones on UVData and UVCal,
691
793
  to set several of these new parameters.
692
794
 
@@ -1150,7 +1252,7 @@ taken at 2 seconds.
1150
1252
  - Added handling for `object_name` and `extra_keywords` to `sum_vis` and `diff_vis` methods and added the `override_params` option to override other parameters.
1151
1253
 
1152
1254
  ### Changed
1153
- - Changed to use Astropy sites for telescope locations when avaliable. This results in a small change for our known position for the MWA.
1255
+ - Changed to use Astropy sites for telescope locations when available. This results in a small change for our known position for the MWA.
1154
1256
  - Modified `UVData.read` to do faster concatenation of files, changed the interface to `UVData.fast_concat` to allow lists of `UVData` objects to be passed in.
1155
1257
 
1156
1258
  ### Fixed
@@ -1175,7 +1277,7 @@ taken at 2 seconds.
1175
1277
 
1176
1278
  ### Changed
1177
1279
  - When `flex_spw=True`, the `channel_width` attribute of UVData is expected to be an array of type=float and shape=(`Nfreqs`,). Individual channels are allowed to have different channel widths.
1178
- - Changed `freq_array` to be of shape (1, `Nfreqs`) (formerley (`Nspws`, `Nfreqs`)).
1280
+ - Changed `freq_array` to be of shape (1, `Nfreqs`) (formerly (`Nspws`, `Nfreqs`)).
1179
1281
  - Changed `data_array`, `flag_array`, `nsample_array` to be of shape (`Nblts`, 1, `Nfreqs`, `Npols`) (formerly (`Nblts`, `Nspws`, `Nfreqs`, `Npols`)).
1180
1282
  - Changed UVH5 metadata byte conversion method from tobytes() to bytes()
1181
1283
 
@@ -1276,7 +1378,7 @@ controlled by the `method` keyword.
1276
1378
 
1277
1379
  ### Removed
1278
1380
  - Previously deprecated code marked for removal in version > 1.5:
1279
- - reading multiple files with file format specific read functions (e.g. read_mirad). Multi-file reads can only be performed with `uvdata.read`
1381
+ - reading multiple files with file format specific read functions (e.g. read_miriad). Multi-file reads can only be performed with `uvdata.read`
1280
1382
  - `read_metadata` keyword in various specific read functions (e.g. `read_miriad`)
1281
1383
  - `metadata_only` keyword in `select` and `get_redundancies`
1282
1384
  - `uvdata.miriad.read_miriad_metadata`
@@ -1315,7 +1417,7 @@ controlled by the `method` keyword.
1315
1417
  - The `phase_center` and `phase_data` keywords to `read_mwa_corr_fits` in favor of `phase_to_pointing_center` and the `phase_center_radec` keyword in the generic `read` method.
1316
1418
  - Support for reading only the header (not all the metadata) of uvfits files.
1317
1419
  - The `read_uvfits_metadata` and `read_uvfits_data` methods on the UVFITS object.
1318
- - The `read_miriad_metadata` method on the Mirad object.
1420
+ - The `read_miriad_metadata` method on the Miriad object.
1319
1421
 
1320
1422
  ## [1.4.2] - 2019-10-15
1321
1423
 
@@ -1402,7 +1504,7 @@ controlled by the `method` keyword.
1402
1504
  - Added preliminary `UVFlag` module from hera_qm to pyuvdata. Will eventually promote to `UVBase` object, but for now this is undocumented functionality.
1403
1505
 
1404
1506
  ### Deprecated
1405
- - Defined 'east' and 'north' as the allowed 'x_orientation' values in UVData and UVCal, Backwards compatiblity support exists for 'E' and 'N' values
1507
+ - Defined 'east' and 'north' as the allowed 'x_orientation' values in UVData and UVCal, Backwards compatibility support exists for 'E' and 'N' values
1406
1508
  - `UVData.order_pols` method in favor of `UVData.reorder_pols`.
1407
1509
 
1408
1510
  ### Fixed
@@ -1504,7 +1606,7 @@ controlled by the `method` keyword.
1504
1606
  - new method to calculate uvws from antenna positions
1505
1607
  - `UVBeam.get_beam_area` and `UVBeam.get_beam_sq_area` functions to calculate beam integrals, including for pseudo-Stokes beams
1506
1608
  - beam interpolation methods, to any set of points and to healpix pixel centers
1507
- - a script to renumber antennas for CASA compatiblity if there are fewer than 256 antennas but numbers higher than that
1609
+ - a script to renumber antennas for CASA compatibility if there are fewer than 256 antennas but numbers higher than that
1508
1610
  - memo describing the beam fits file format
1509
1611
  - method to peak normalize UVBeam objects
1510
1612
  - support for reading FHD calibrations into UVCal objects
@@ -1,18 +1,19 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyuvdata
3
- Version: 3.2.6
3
+ Version: 3.2.8
4
4
  Summary: A pythonic interface for radio astronomy interferometry data
5
5
  Author-email: Bryna Hazelton <brynah@phys.washington.edu>, Adam Beardsley <adam.beardsley@winona.edu>, Daniel Jacobs <daniel.c.jacobs@gmail.com>, Garrett Keating <garrett.keating@cfa.harvard.edu>, Nicholas Kern <nkern@mit.edu>, Matthew Kolopanis <matthew.kolopanis@gmail.com>, Adam Lanman <alanman@mit.edu>, Paul La Plante <paul.laplante@unlv.edu>, Steven Murray <murray.steveng@gmail.com>, Jonathan Pober <jonathan_pober@brown.edu>, Pyxie Star <pyxiestar@gmail.com>
6
6
  Maintainer-email: Bryna Hazelton <brynah@phys.washington.edu>, Matthew Kolopanis <matthew.kolopanis@gmail.com>, Garrett Keating <garrett.keating@cfa.harvard.edu>, Steven Murray <murray.steveng@gmail.com>
7
+ License-Expression: BSD-2-Clause
7
8
  Project-URL: Repository, https://github.com/RadioAstronomySoftwareGroup/pyuvdata
8
9
  Project-URL: Documentation, https://pyuvdata.readthedocs.io
9
10
  Keywords: radio astronomy,interferometry
10
- Classifier: License :: OSI Approved :: BSD License
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Science/Research
13
- Classifier: Programming Language :: Python :: 3.11
14
- Classifier: Programming Language :: Python :: 3.12
15
- Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Operating System :: POSIX :: Linux
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Operating System :: Microsoft :: Windows
16
17
  Classifier: Topic :: Scientific/Engineering :: Astronomy
17
18
  Requires-Python: >=3.11
18
19
  Description-Content-Type: text/markdown
@@ -31,13 +32,12 @@ Provides-Extra: astroquery
31
32
  Requires-Dist: astroquery>=0.4.4; extra == "astroquery"
32
33
  Provides-Extra: casa
33
34
  Requires-Dist: python-casacore>=3.5.2; extra == "casa"
34
- Requires-Dist: numpy<2.0,>=1.23; extra == "casa"
35
35
  Provides-Extra: hdf5-compression
36
36
  Requires-Dist: hdf5plugin>=3.3.1; extra == "hdf5-compression"
37
37
  Provides-Extra: healpix
38
38
  Requires-Dist: astropy_healpix>=1.0.2; extra == "healpix"
39
39
  Provides-Extra: lunar
40
- Requires-Dist: lunarsky>=0.2.5; extra == "lunar"
40
+ Requires-Dist: lunarsky>=1.0; extra == "lunar"
41
41
  Provides-Extra: novas
42
42
  Requires-Dist: novas; extra == "novas"
43
43
  Requires-Dist: novas_de405; extra == "novas"
@@ -45,15 +45,17 @@ Provides-Extra: plotting
45
45
  Requires-Dist: matplotlib>=3.7; extra == "plotting"
46
46
  Provides-Extra: all
47
47
  Requires-Dist: pyuvdata[astroquery,casa,hdf5_compression,healpix,lunar,novas,plotting]; extra == "all"
48
+ Provides-Extra: datasets
49
+ Requires-Dist: pooch>=1.8; extra == "datasets"
48
50
  Provides-Extra: tutorial
49
51
  Requires-Dist: pyuvdata[plotting]; extra == "tutorial"
50
- Requires-Dist: pooch>=1.8; extra == "tutorial"
52
+ Requires-Dist: pyuvdata[datasets]; extra == "tutorial"
51
53
  Provides-Extra: test
54
+ Requires-Dist: pyuvdata[datasets]; extra == "test"
52
55
  Requires-Dist: coverage; extra == "test"
53
56
  Requires-Dist: cython>=3.0; extra == "test"
54
- Requires-Dist: pooch>=1.8; extra == "test"
55
57
  Requires-Dist: pre-commit; extra == "test"
56
- Requires-Dist: pytest>=8.2.0; extra == "test"
58
+ Requires-Dist: pytest<9.1,>=8.2.0; extra == "test"
57
59
  Requires-Dist: pytest-xdist; extra == "test"
58
60
  Requires-Dist: pytest-cases>=3.9.1; extra == "test"
59
61
  Requires-Dist: pytest-cov; extra == "test"
@@ -203,7 +205,7 @@ Please cite both of our JOSS papers:
203
205
 
204
206
  *Keating et al., (2025). pyuvdata v3: an interface for astronomical interferometric data sets in Python. Journal of Open Source Software, 10(109), 7482, https://doi.org/10.21105/joss.07482* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2025JOSS...10.7482K)]
205
207
 
206
- *Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometeric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
208
+ *Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
207
209
 
208
210
  # Installation
209
211
  Simple installation via conda is available for users, developers should follow
@@ -236,7 +238,7 @@ Optional:
236
238
  * astropy-healpix >= 1.0.2 (for working with beams in HEALPix formats)
237
239
  * astroquery >= 0.4.4 (for enabling phasing to ephemeris objects using JPL-Horizons)
238
240
  * hdf5plugin >= 3.3.1 (for enabling bitshuffle and other hdf5 compression filters in uvh5 files)
239
- * lunarsky >=0.2.5 (for working with simulated datasets for lunar telescopes)
241
+ * lunarsky >=1.0 (for working with simulated datasets for lunar telescopes)
240
242
  * matplotlib>=3.7 (for making plots)
241
243
  * novas and novas_de405 (for using the NOVAS library for astrometry)
242
244
  * pooch >= 1.8 (for downloading test data for tutorials)
@@ -135,7 +135,7 @@ Please cite both of our JOSS papers:
135
135
 
136
136
  *Keating et al., (2025). pyuvdata v3: an interface for astronomical interferometric data sets in Python. Journal of Open Source Software, 10(109), 7482, https://doi.org/10.21105/joss.07482* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2025JOSS...10.7482K)]
137
137
 
138
- *Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometeric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
138
+ *Hazelton et al, (2017), pyuvdata: an interface for astronomical interferometric datasets in python, Journal of Open Source Software, 2(10), 140, doi:10.21105/joss.00140* [[ADS Link](https://ui.adsabs.harvard.edu/abs/2017JOSS....2..140H)]
139
139
 
140
140
  # Installation
141
141
  Simple installation via conda is available for users, developers should follow
@@ -168,7 +168,7 @@ Optional:
168
168
  * astropy-healpix >= 1.0.2 (for working with beams in HEALPix formats)
169
169
  * astroquery >= 0.4.4 (for enabling phasing to ephemeris objects using JPL-Horizons)
170
170
  * hdf5plugin >= 3.3.1 (for enabling bitshuffle and other hdf5 compression filters in uvh5 files)
171
- * lunarsky >=0.2.5 (for working with simulated datasets for lunar telescopes)
171
+ * lunarsky >=1.0 (for working with simulated datasets for lunar telescopes)
172
172
  * matplotlib>=3.7 (for making plots)
173
173
  * novas and novas_de405 (for using the NOVAS library for astrometry)
174
174
  * pooch >= 1.8 (for downloading test data for tutorials)
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env python
2
+ """
3
+ Download the pyuvdata test data into a shared pooch cache.
4
+
5
+ The wheel-building jobs run the test suite once per wheel, in an environment with a
6
+ cold cache, so each one re-downloads the whole test dataset from github. Running this
7
+ once on the runner and pointing the test environments at the result via the
8
+ PYUVDATA_DATA_DIR environment variable turns those N downloads into one.
9
+
10
+ Usage: python ci/prefetch_test_data.py <cache_dir>
11
+ """
12
+
13
+ import importlib.util
14
+ import os
15
+ import sys
16
+ import types
17
+ from pathlib import Path
18
+
19
+ REPO_ROOT = Path(__file__).resolve().parents[1]
20
+ SRC = REPO_ROOT / "src" / "pyuvdata"
21
+
22
+
23
+ def load_datasets_module():
24
+ """
25
+ Load pyuvdata.datasets without importing pyuvdata itself.
26
+
27
+ Importing the real package pulls in the compiled extensions, which have not been
28
+ built yet when this runs. datasets.py only needs DATA_PATH from the parent, so
29
+ stub out just enough of the package for it to import.
30
+ """
31
+ pkg = types.ModuleType("pyuvdata")
32
+ pkg.__path__ = [str(SRC)]
33
+ data_pkg = types.ModuleType("pyuvdata.data")
34
+ data_pkg.DATA_PATH = str(SRC / "data")
35
+ sys.modules["pyuvdata"] = pkg
36
+ sys.modules["pyuvdata.data"] = data_pkg
37
+
38
+ spec = importlib.util.spec_from_file_location(
39
+ "pyuvdata.datasets", SRC / "datasets.py"
40
+ )
41
+ module = importlib.util.module_from_spec(spec)
42
+ sys.modules["pyuvdata.datasets"] = module
43
+ spec.loader.exec_module(module)
44
+ return module
45
+
46
+
47
+ def main():
48
+ """Fetch every dataset in the registry into the requested cache directory."""
49
+ if len(sys.argv) != 2:
50
+ sys.exit(f"usage: {sys.argv[0]} <cache_dir>")
51
+
52
+ # pooch reads this when the Pooch object is created, so it has to be set before
53
+ # datasets.py is executed.
54
+ cache_dir = Path(sys.argv[1]).resolve()
55
+ os.environ["PYUVDATA_DATA_DIR"] = str(cache_dir)
56
+
57
+ datasets = load_datasets_module()
58
+ print(f"Caching {len(datasets.fetch_dict)} datasets into {datasets.pup.abspath}")
59
+
60
+ for name in datasets.fetch_dict:
61
+ datasets.fetch_data(name)
62
+
63
+ print(f"Done. Cache is at {datasets.pup.abspath}")
64
+
65
+
66
+ if __name__ == "__main__":
67
+ main()
@@ -13,7 +13,7 @@ dependencies:
13
13
  - pip
14
14
  - pooch>=1.8
15
15
  - pyerfa>=2.0
16
- - pytest>=8.2.0
16
+ - pytest>=8.2.0,<9.1
17
17
  - pytest-cases>=3.9.1
18
18
  - pytest-cov
19
19
  - pytest-xdist
@@ -27,6 +27,6 @@ dependencies:
27
27
  - setuptools_scm==8.1
28
28
  - sybil==8.0
29
29
  - pip:
30
- - lunarsky==0.2.5
30
+ - lunarsky==1.0.1.post2
31
31
  - novas
32
32
  - novas_de405
@@ -16,7 +16,7 @@ dependencies:
16
16
  - pip
17
17
  - pooch>=1.8
18
18
  - pyerfa>=2.0.1.1
19
- - pytest>=8.2.0
19
+ - pytest>=8.2.0,<9.1
20
20
  - pytest-cases>=3.9.1
21
21
  - pytest-cov
22
22
  - pytest-xdist
@@ -26,6 +26,6 @@ dependencies:
26
26
  - setuptools_scm>=8.1
27
27
  - sybil>=8.0
28
28
  - pip:
29
- - lunarsky>=0.2.5
29
+ - lunarsky>=1.0
30
30
  - novas
31
31
  - novas_de405