pyuvdata 3.2.7__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 (296) hide show
  1. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/workflows/macosx_windows_ci.yaml +13 -0
  2. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/workflows/numba_test.yaml +1 -1
  3. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/workflows/publish-to-test-pypi.yaml +29 -8
  4. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/workflows/warning_test.yaml +1 -1
  5. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.gitignore +3 -0
  6. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.pre-commit-config.yaml +2 -2
  7. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/CHANGELOG.md +28 -0
  8. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/PKG-INFO +1 -1
  9. pyuvdata-3.2.8/ci/prefetch_test_data.py +67 -0
  10. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/conventions.rst +10 -7
  11. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/datasets.py +2 -0
  12. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.c +25379 -21424
  13. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/gain_interpolate.py +2 -1
  14. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.c +22661 -19112
  15. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.py +29 -20
  16. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/tools.py +8 -8
  17. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.c +22731 -19176
  18. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/ms_cal.py +22 -15
  19. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.c +25515 -21617
  20. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/ms.py +70 -33
  21. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.cpp +9732 -7624
  22. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvdata.py +68 -35
  23. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/PKG-INFO +1 -1
  24. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/SOURCES.txt +1 -0
  25. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/scm_file_list.json +1 -0
  26. pyuvdata-3.2.8/src/pyuvdata.egg-info/scm_version.json +8 -0
  27. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/conftest.py +1 -1
  28. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_ms_cal.py +7 -1
  29. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_miriad.py +20 -0
  30. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_ms.py +80 -1
  31. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_uvdata.py +119 -0
  32. pyuvdata-3.2.7/src/pyuvdata.egg-info/scm_version.json +0 -8
  33. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.circleci/config.yml +0 -0
  34. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.codecov.yml +0 -0
  35. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.coveragerc +0 -0
  36. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/CITATION.cff +0 -0
  37. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/CONTRIBUTING.md +0 -0
  38. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  39. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.github/dependabot.yml +0 -0
  40. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/.readthedocs.yml +0 -0
  41. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/CODE_OF_CONDUCT.md +0 -0
  42. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/LICENSE +0 -0
  43. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/README.md +0 -0
  44. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/azure-piplines.yml +0 -0
  45. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/pyuvdata_min_deps_tests.yml +0 -0
  46. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/pyuvdata_min_versions_tests.yml +0 -0
  47. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/pyuvdata_tests.yml +0 -0
  48. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/pyuvdata_tests_mac_arm.yml +0 -0
  49. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/pyuvdata_tests_windows.yml +0 -0
  50. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/ci/test_requirements.txt +0 -0
  51. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/abs_gains.png +0 -0
  52. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/airy_beam_100MHz.png +0 -0
  53. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/airy_beam_200MHz.png +0 -0
  54. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall.png +0 -0
  55. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/amplitude_waterfall_spw0.png +0 -0
  56. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/beam_coordinate_figure.png +0 -0
  57. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/dipole_mwa_power.png +0 -0
  58. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/efield_power_beam_cut.png +0 -0
  59. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_efield.png +0 -0
  60. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_efield_phase.png +0 -0
  61. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_efield_zoom.png +0 -0
  62. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_power_healpix_zoom.png +0 -0
  63. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_power_zoom.png +0 -0
  64. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/hera_pstokes.png +0 -0
  65. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_fa_proj.png +0 -0
  66. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_fa_resp.png +0 -0
  67. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_off_zenith_power.png +0 -0
  68. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_cross_power.png +0 -0
  69. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield.png +0 -0
  70. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_efield_abs.png +0 -0
  71. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/mwa_zenith_power.png +0 -0
  72. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/select_beam_cut.png +0 -0
  73. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/short_dipole_beam.png +0 -0
  74. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/short_dipole_fa_projection.png +0 -0
  75. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Images/short_dipole_fa_response.png +0 -0
  76. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/Makefile +0 -0
  77. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/_templates/breadcrumbs.html +0 -0
  78. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/analytic_beam_tutorial.rst +0 -0
  79. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/analytic_beams.rst +0 -0
  80. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/beam_interface.rst +0 -0
  81. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/beam_interface_tutorial.rst +0 -0
  82. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/conf.py +0 -0
  83. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/conftest.py +0 -0
  84. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/cst_settings_yaml.rst +0 -0
  85. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/developer_docs.rst +0 -0
  86. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/fast_calh5_meta.rst +0 -0
  87. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/fast_uvh5_meta.rst +0 -0
  88. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_index.py +0 -0
  89. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_telescope.py +0 -0
  90. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_uvbeam.py +0 -0
  91. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_uvcal.py +0 -0
  92. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_uvdata.py +0 -0
  93. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/make_uvflag.py +0 -0
  94. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/AIPSMEM117.PDF +0 -0
  95. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/Far_field_spherical_FEKO_draft2.pdf +0 -0
  96. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/GPS.G1-X-00006_Datum_Transformations.pdf +0 -0
  97. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/aasjournal.bst +0 -0
  98. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/app_icrs_frame_comp.png +0 -0
  99. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/beamfits_memo.pdf +0 -0
  100. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/beamfits_memo.tex +0 -0
  101. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/calfits_memo.pdf +0 -0
  102. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/calfits_memo.tex +0 -0
  103. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/calh5.pdf +0 -0
  104. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/calh5.tex +0 -0
  105. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/making_release.md +0 -0
  106. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/miriad-uvvars.pdf +0 -0
  107. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/ncp_icrs_app.png +0 -0
  108. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/phasing.bib +0 -0
  109. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/phasing.pdf +0 -0
  110. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/phasing.tex +0 -0
  111. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/simple_interferometer.png +0 -0
  112. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/uvh5_diagram.pdf +0 -0
  113. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/uvh5_memo.pdf +0 -0
  114. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/references/uvh5_memo.tex +0 -0
  115. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/requirements.txt +0 -0
  116. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/tutorial.rst +0 -0
  117. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/tutorial_data_note.rst +0 -0
  118. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/utility_functions.rst +0 -0
  119. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/uvbeam_tutorial.rst +0 -0
  120. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/uvcal_tutorial.rst +0 -0
  121. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/docs/uvdata_tutorial.rst +0 -0
  122. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/environment.yaml +0 -0
  123. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/paper.bib +0 -0
  124. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/paper.md +0 -0
  125. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/pyproject.toml +0 -0
  126. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/check_uvfits_equal.py +0 -0
  127. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/convert_to_uvfits.py +0 -0
  128. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/fhd_batch_convert.py +0 -0
  129. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/make_bad_fhd_files.pro +0 -0
  130. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/pyuvdata_inspect.py +0 -0
  131. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/readwrite_uvfits.py +0 -0
  132. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/renumber_ants.py +0 -0
  133. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/test_cover_noinstall.sh +0 -0
  134. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/test_coverage.sh +0 -0
  135. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/truncate_fhd_files.pro +0 -0
  136. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/scripts/uvfits_memtest.py +0 -0
  137. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/setup.cfg +0 -0
  138. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/setup.py +0 -0
  139. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/__init__.py +0 -0
  140. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/analytic_beam.py +0 -0
  141. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/beam_interface.py +0 -0
  142. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/README.md +0 -0
  143. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/__init__.py +0 -0
  144. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/hera_ant_pos.csv +0 -0
  145. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/jpl_major_bodies.json +0 -0
  146. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa128_ant_layouts.npz +0 -0
  147. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_ant_pos.csv +0 -0
  148. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/Chebychev_coeff.h5 +0 -0
  149. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.h5 +0 -0
  150. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.txt +0 -0
  151. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwa_lna_impedance.txt +0 -0
  152. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_40kHz.h5 +0 -0
  153. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_80kHz.h5 +0 -0
  154. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/mwa_config_data/sigma1.h5 +0 -0
  155. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/test_analytic_beam.py +0 -0
  156. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data.yaml +0 -0
  157. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/data/test_data_registry.txt +0 -0
  158. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/docstrings.py +0 -0
  159. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/parameter.py +0 -0
  160. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/telescopes.py +0 -0
  161. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/testing/__init__.py +0 -0
  162. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/testing/warning_check.py +0 -0
  163. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/__init__.py +0 -0
  164. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/antenna.py +0 -0
  165. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/apply_uvflag.py +0 -0
  166. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/array_collapse.py +0 -0
  167. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/averaging.py +0 -0
  168. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/averaging_numba.py +0 -0
  169. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls.py +0 -0
  170. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/bls_numba.py +0 -0
  171. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/bltaxis.py +0 -0
  172. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.py +0 -0
  173. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/coordinates.pyx +0 -0
  174. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/frequency.py +0 -0
  175. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/history.py +0 -0
  176. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/__init__.py +0 -0
  177. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/antpos.py +0 -0
  178. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fhd.py +0 -0
  179. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/fits.py +0 -0
  180. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/hdf5.py +0 -0
  181. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/io/ms.py +0 -0
  182. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/phase_center_catalog.py +0 -0
  183. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/phasing.pyx +0 -0
  184. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/plotting.py +0 -0
  185. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/pol.py +0 -0
  186. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/redundancy.py +0 -0
  187. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/times.py +0 -0
  188. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/types.py +0 -0
  189. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/utils/uvcalibrate.py +0 -0
  190. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbase.py +0 -0
  191. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/__init__.py +0 -0
  192. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/beamfits.py +0 -0
  193. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/cst_beam.py +0 -0
  194. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/feko_beam.py +0 -0
  195. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/initializers.py +0 -0
  196. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/mwa_beam.py +0 -0
  197. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.py +0 -0
  198. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvbeam/uvbeam.pyx +0 -0
  199. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/__init__.py +0 -0
  200. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calfits.py +0 -0
  201. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/calh5.py +0 -0
  202. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/fhd_cal.py +0 -0
  203. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/initializers.py +0 -0
  204. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/miriad_cal.py +0 -0
  205. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvcal/uvcal.py +0 -0
  206. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/__init__.py +0 -0
  207. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/aipy_extracts.py +0 -0
  208. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/corr_fits.pyx +0 -0
  209. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/fhd.py +0 -0
  210. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/initializers.py +0 -0
  211. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir.py +0 -0
  212. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_meta_data.py +0 -0
  213. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mir_parser.py +0 -0
  214. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/miriad.py +0 -0
  215. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/mwa_corr_fits.py +0 -0
  216. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/aipy_compat.h +0 -0
  217. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/bug.c +0 -0
  218. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/dio.c +0 -0
  219. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/headio.c +0 -0
  220. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.c +0 -0
  221. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/hio.h +0 -0
  222. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/io.h +0 -0
  223. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maskio.c +0 -0
  224. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/maxdimc.h +0 -0
  225. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad.h +0 -0
  226. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.h +0 -0
  227. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/miriad_wrap.pyx +0 -0
  228. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/pack.c +0 -0
  229. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/sysdep.h +0 -0
  230. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/src/uvio.c +0 -0
  231. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvfits.py +0 -0
  232. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvdata/uvh5.py +0 -0
  233. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/__init__.py +0 -0
  234. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata/uvflag/uvflag.py +0 -0
  235. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/dependency_links.txt +0 -0
  236. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/requires.txt +0 -0
  237. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/src/pyuvdata.egg-info/top_level.txt +0 -0
  238. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/__init__.py +0 -0
  239. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_analytic_beam.py +0 -0
  240. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_beam_interface.py +0 -0
  241. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_docstrings.py +0 -0
  242. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_parameter.py +0 -0
  243. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_telescopes.py +0 -0
  244. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_uvbase.py +0 -0
  245. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/test_warning_check.py +0 -0
  246. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/__init__.py +0 -0
  247. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/conftest.py +0 -0
  248. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/io/__init__.py +0 -0
  249. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/io/test_hdf5.py +0 -0
  250. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/io/test_ms.py +0 -0
  251. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_apply_uvflag.py +0 -0
  252. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_array_collapse.py +0 -0
  253. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_averaging.py +0 -0
  254. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_bls.py +0 -0
  255. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_bls_numba.py +0 -0
  256. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_bltaxis.py +0 -0
  257. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_coordinates.py +0 -0
  258. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_gain_interpolate.py +0 -0
  259. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_phase_center_catalog.py +0 -0
  260. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_phasing.py +0 -0
  261. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_plotting.py +0 -0
  262. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_pol.py +0 -0
  263. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_redundancy.py +0 -0
  264. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_times.py +0 -0
  265. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_tools.py +0 -0
  266. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/utils/test_uvcalibrate.py +0 -0
  267. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/__init__.py +0 -0
  268. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/conftest.py +0 -0
  269. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_beamfits.py +0 -0
  270. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_cst_beam.py +0 -0
  271. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_feko_beam.py +0 -0
  272. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_initializers.py +0 -0
  273. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_mwa_beam.py +0 -0
  274. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvbeam/test_uvbeam.py +0 -0
  275. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/__init__.py +0 -0
  276. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/conftest.py +0 -0
  277. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_calfits.py +0 -0
  278. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_calh5.py +0 -0
  279. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_fhd_cal.py +0 -0
  280. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_initializers.py +0 -0
  281. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_miriad_cal.py +0 -0
  282. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvcal/test_uvcal.py +0 -0
  283. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/__init__.py +0 -0
  284. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/conftest.py +0 -0
  285. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_aipy_extracts.py +0 -0
  286. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_fhd.py +0 -0
  287. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_import_errors.py +0 -0
  288. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_initializers.py +0 -0
  289. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_mir.py +0 -0
  290. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_mir_meta_data.py +0 -0
  291. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_mir_parser.py +0 -0
  292. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_mwa_corr_fits.py +0 -0
  293. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_uvfits.py +0 -0
  294. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvdata/test_uvh5.py +0 -0
  295. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvflag/__init__.py +0 -0
  296. {pyuvdata-3.2.7 → pyuvdata-3.2.8}/tests/uvflag/test_uvflag.py +0 -0
@@ -19,6 +19,9 @@ jobs:
19
19
  name: Run Tests
20
20
  env:
21
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
22
25
  runs-on: ${{ matrix.os }}
23
26
  defaults:
24
27
  run:
@@ -59,6 +62,16 @@ jobs:
59
62
  exit 1;
60
63
  fi
61
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
+
62
75
  - name: Install
63
76
  run: |
64
77
  CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install .
@@ -25,7 +25,7 @@ jobs:
25
25
  persist-credentials: false
26
26
 
27
27
  - name: Setup Python
28
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
28
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
29
29
  with:
30
30
  python-version-file: pyproject.toml
31
31
 
@@ -16,6 +16,8 @@ jobs:
16
16
  build_wheels:
17
17
  name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
18
18
  runs-on: ${{ matrix.buildplat[0] }}
19
+ env:
20
+ PYUVDATA_DATA_DIR: ${{ github.workspace }}/pooch_cache
19
21
  strategy:
20
22
  fail-fast: false
21
23
  matrix:
@@ -35,13 +37,38 @@ jobs:
35
37
  fetch-depth: 0
36
38
  persist-credentials: false
37
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
+
38
63
  - name: Build wheels
39
- uses: pypa/cibuildwheel@294735312765b09d24a2fbec22660ce817587d55 # v4.1.0
64
+ uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0
40
65
  env:
41
66
  CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
42
67
  CIBW_ARCHS: ${{ matrix.buildplat[2] }}
43
68
  CIBW_TEST_REQUIRES: "-r ci/test_requirements.txt"
44
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
45
72
 
46
73
  - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
47
74
  with:
@@ -79,12 +106,6 @@ jobs:
79
106
  path: dist
80
107
  merge-multiple: true
81
108
 
82
- - name: Upload to test PyPI
83
- if: startsWith(github.ref, 'refs/tags')
84
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
85
- with:
86
- repository_url: https://test.pypi.org/legacy/
87
-
88
109
  - name: Upload to PyPI
89
110
  if: startsWith(github.ref, 'refs/tags')
90
- uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
111
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
@@ -39,7 +39,7 @@ jobs:
39
39
  persist-credentials: false
40
40
 
41
41
  - name: Setup Python
42
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
42
+ uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
43
43
  with:
44
44
  python-version: ${{ matrix.python-version }}
45
45
 
@@ -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.16.3
20
+ rev: v0.16.7
21
21
  hooks:
22
22
  - id: ruff
23
23
  - id: ruff-format
@@ -30,6 +30,6 @@ repos:
30
30
  additional_dependencies: ["bandit[toml]"]
31
31
 
32
32
  - repo: https://github.com/zizmorcore/zizmor-pre-commit
33
- rev: v1.29.0
33
+ rev: v1.30.1
34
34
  hooks:
35
35
  - id: zizmor
@@ -3,6 +3,34 @@ 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
+
6
34
  ## [3.2.7] - 2025-08-20
7
35
 
8
36
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyuvdata
3
- Version: 3.2.7
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>
@@ -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()
@@ -23,13 +23,16 @@ the position of the first (after which various rotations are applied). The secon
23
23
  *ant1-ant2*, where :math:`\mathcal{V}_{12}=\langle V_{1} V_{2}^{*} \rangle`, and the
24
24
  *uvw*-coordinate is calculated by taking the position of the first antenna minus
25
25
  the second. The pyuvdata software package uses the *ant2-ant1* convention, as does
26
- MIRIAD; with UVFITS, FHD, and Mir formats use the opposite convention. MeasurementSet
27
- format (used within CASA) appears to support both conventions, with the convention
28
- selected based on the number of the antennas in the pair: when the antenna number of
29
- *ant1* is greater than that of *ant2*, then the *ant2-ant1* convention is used,
30
- otherwise the *ant1-ant2* convention is used (e.g., the 3-7 baseline would use the
31
- *ant1-ant2* convention within CASA, whereas the 7-3 baseline would use the *ant2-ant1*
32
- convention).
26
+ MIRIAD; with UVFITS, FHD, Mir, and MeasurementSet (used within CASA) formats using the
27
+ opposite convention. Note that this also applies to calibration solutions derived from
28
+ the dataset, with the implication being that gains solved in the *ant2-ant1* convention
29
+ are the complex conjugates of those solved in the *ant1-ant2* convention.
30
+
31
+ Note that separately from the conjugation convention, some platforms have requirements
32
+ for which antenna is listed first in the baseline (e.g., AIPS needs UVFITS files
33
+ recorded with :math:`\text{ant1}<\text{ant2}`), separate from the conjugation
34
+ convention. pyuvdata is able to support so-called "mixed" conventions in this respect,
35
+ with the antenna ordering convention being independent of the conjugation convention.
33
36
 
34
37
  Phase Center Types
35
38
  ------------------
@@ -22,6 +22,8 @@ pup = pooch.create(
22
22
  version=data_version,
23
23
  # If this is a development version, get the data from the "main" branch
24
24
  version_dev="main",
25
+ env="PYUVDATA_DATA_DIR",
26
+ retry_if_failed=3,
25
27
  registry=None,
26
28
  )
27
29