pyuvdata 3.2.4__tar.gz → 3.2.6__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 (281) hide show
  1. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.circleci/config.yml +31 -19
  2. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/workflows/macosx_windows_ci.yaml +1 -1
  3. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/workflows/numba_test.yaml +2 -8
  4. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/workflows/publish-to-test-pypi.yaml +7 -3
  5. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/workflows/warning_test.yaml +17 -9
  6. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.pre-commit-config.yaml +2 -2
  7. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/CHANGELOG.md +35 -0
  8. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/PKG-INFO +3 -2
  9. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/azure-piplines.yml +20 -13
  10. pyuvdata-3.2.6/docs/Images/hera_efield_phase.png +0 -0
  11. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/pyproject.toml +3 -1
  12. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/analytic_beam.py +7 -0
  13. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/parameter.py +1 -1
  14. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/array_collapse.py +15 -1
  15. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/coordinates.c +8571 -8809
  16. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/phasing.c +8310 -8396
  17. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/plotting.py +281 -125
  18. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/pol.py +1 -1
  19. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/uvcalibrate.py +75 -54
  20. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/beamfits.py +29 -8
  21. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/uvbeam.c +8321 -8411
  22. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/uvbeam.py +9 -2
  23. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/ms_cal.py +3 -1
  24. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/corr_fits.c +8614 -8792
  25. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/mir_meta_data.py +2 -2
  26. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/mir_parser.py +13 -4
  27. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/miriad.py +5 -5
  28. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/ms.py +3 -1
  29. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/mwa_corr_fits.py +47 -5
  30. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/miriad_wrap.cpp +7536 -7693
  31. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/uvdata.py +31 -12
  32. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/uvfits.py +132 -100
  33. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata.egg-info/PKG-INFO +3 -2
  34. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata.egg-info/SOURCES.txt +1 -1
  35. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata.egg-info/requires.txt +6 -1
  36. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/conftest.py +1 -0
  37. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_analytic_beam.py +26 -7
  38. pyuvdata-3.2.6/tests/utils/test_plotting.py +82 -0
  39. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_uvcalibrate.py +80 -33
  40. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_beamfits.py +53 -2
  41. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_uvbeam.py +27 -9
  42. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_ms_cal.py +38 -0
  43. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_miriad.py +1 -11
  44. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_ms.py +34 -2
  45. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_mwa_corr_fits.py +51 -0
  46. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_uvdata.py +4 -1
  47. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_uvh5.py +1 -1
  48. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvflag/test_uvflag.py +9 -1
  49. pyuvdata-3.2.4/ci/_activate_current_env.sh +0 -11
  50. pyuvdata-3.2.4/docs/Images/hera_efield_phase.png +0 -0
  51. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.codecov.yml +0 -0
  52. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.coveragerc +0 -0
  53. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/CITATION.cff +0 -0
  54. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/CONTRIBUTING.md +0 -0
  55. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  56. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.gitignore +0 -0
  57. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/.readthedocs.yml +0 -0
  58. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/CODE_OF_CONDUCT.md +0 -0
  59. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/LICENSE +0 -0
  60. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/README.md +0 -0
  61. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/pyuvdata_min_deps_tests.yml +0 -0
  62. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/pyuvdata_min_versions_tests.yml +0 -0
  63. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/pyuvdata_tests.yml +0 -0
  64. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/pyuvdata_tests_mac_arm.yml +0 -0
  65. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/pyuvdata_tests_windows.yml +0 -0
  66. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/ci/test_requirements.txt +0 -0
  67. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/abs_gains.png +0 -0
  68. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/airy_beam_100MHz.png +0 -0
  69. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/airy_beam_200MHz.png +0 -0
  70. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/amplitude_waterfall.png +0 -0
  71. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/amplitude_waterfall_spw0.png +0 -0
  72. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/beam_coordinate_figure.png +0 -0
  73. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/dipole_mwa_power.png +0 -0
  74. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/efield_power_beam_cut.png +0 -0
  75. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/hera_efield.png +0 -0
  76. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/hera_efield_zoom.png +0 -0
  77. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/hera_power_healpix_zoom.png +0 -0
  78. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/hera_power_zoom.png +0 -0
  79. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/hera_pstokes.png +0 -0
  80. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/mwa_off_zenith_power.png +0 -0
  81. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/mwa_zenith_cross_power.png +0 -0
  82. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/mwa_zenith_efield.png +0 -0
  83. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/mwa_zenith_efield_abs.png +0 -0
  84. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/mwa_zenith_power.png +0 -0
  85. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/select_beam_cut.png +0 -0
  86. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Images/short_dipole_beam.png +0 -0
  87. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/Makefile +0 -0
  88. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/_templates/breadcrumbs.html +0 -0
  89. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/analytic_beam_tutorial.rst +0 -0
  90. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/analytic_beams.rst +0 -0
  91. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/beam_interface.rst +0 -0
  92. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/beam_interface_tutorial.rst +0 -0
  93. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/conf.py +0 -0
  94. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/conftest.py +0 -0
  95. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/conventions.rst +0 -0
  96. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/cst_settings_yaml.rst +0 -0
  97. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/developer_docs.rst +0 -0
  98. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/fast_calh5_meta.rst +0 -0
  99. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/fast_uvh5_meta.rst +0 -0
  100. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_index.py +0 -0
  101. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_telescope.py +0 -0
  102. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_uvbeam.py +0 -0
  103. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_uvcal.py +0 -0
  104. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_uvdata.py +0 -0
  105. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/make_uvflag.py +0 -0
  106. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/AIPSMEM117.PDF +0 -0
  107. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/Far_field_spherical_FEKO_draft2.pdf +0 -0
  108. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/GPS.G1-X-00006_Datum_Transformations.pdf +0 -0
  109. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/aasjournal.bst +0 -0
  110. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/app_icrs_frame_comp.png +0 -0
  111. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/beamfits_memo.pdf +0 -0
  112. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/beamfits_memo.tex +0 -0
  113. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/calfits_memo.pdf +0 -0
  114. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/calfits_memo.tex +0 -0
  115. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/calh5.pdf +0 -0
  116. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/calh5.tex +0 -0
  117. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/making_release.md +0 -0
  118. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/miriad-uvvars.pdf +0 -0
  119. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/ncp_icrs_app.png +0 -0
  120. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/phasing.bib +0 -0
  121. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/phasing.pdf +0 -0
  122. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/phasing.tex +0 -0
  123. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/simple_interferometer.png +0 -0
  124. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/uvh5_diagram.pdf +0 -0
  125. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/uvh5_memo.pdf +0 -0
  126. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/references/uvh5_memo.tex +0 -0
  127. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/requirements.txt +0 -0
  128. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/tutorial.rst +0 -0
  129. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/tutorial_data_note.rst +0 -0
  130. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/utility_functions.rst +0 -0
  131. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/uvbeam_tutorial.rst +0 -0
  132. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/uvcal_tutorial.rst +0 -0
  133. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/docs/uvdata_tutorial.rst +0 -0
  134. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/environment.yaml +0 -0
  135. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/paper.bib +0 -0
  136. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/paper.md +0 -0
  137. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/check_uvfits_equal.py +0 -0
  138. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/convert_to_uvfits.py +0 -0
  139. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/fhd_batch_convert.py +0 -0
  140. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/make_bad_fhd_files.pro +0 -0
  141. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/pyuvdata_inspect.py +0 -0
  142. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/readwrite_uvfits.py +0 -0
  143. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/renumber_ants.py +0 -0
  144. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/test_cover_noinstall.sh +0 -0
  145. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/test_coverage.sh +0 -0
  146. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/truncate_fhd_files.pro +0 -0
  147. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/scripts/uvfits_memtest.py +0 -0
  148. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/setup.cfg +0 -0
  149. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/setup.py +0 -0
  150. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/__init__.py +0 -0
  151. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/beam_interface.py +0 -0
  152. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/README.md +0 -0
  153. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/__init__.py +0 -0
  154. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/hera_ant_pos.csv +0 -0
  155. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/jpl_major_bodies.json +0 -0
  156. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa128_ant_layouts.npz +0 -0
  157. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_ant_pos.csv +0 -0
  158. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/Chebychev_coeff.h5 +0 -0
  159. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.h5 +0 -0
  160. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/MWA_rev_cb_10khz_doubles.txt +0 -0
  161. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_40kHz.h5 +0 -0
  162. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/mwax_pfb_bandpass_80kHz.h5 +0 -0
  163. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/mwa_config_data/sigma1.h5 +0 -0
  164. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/test_analytic_beam.py +0 -0
  165. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/test_data.yaml +0 -0
  166. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/data/test_data_registry.txt +0 -0
  167. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/datasets.py +0 -0
  168. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/docstrings.py +0 -0
  169. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/telescopes.py +0 -0
  170. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/testing/__init__.py +0 -0
  171. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/testing/warning_check.py +0 -0
  172. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/__init__.py +0 -0
  173. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/antenna.py +0 -0
  174. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/apply_uvflag.py +0 -0
  175. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/bls.py +0 -0
  176. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/bls_numba.py +0 -0
  177. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/bltaxis.py +0 -0
  178. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/coordinates.py +0 -0
  179. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/coordinates.pyx +0 -0
  180. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/frequency.py +0 -0
  181. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/history.py +0 -0
  182. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/__init__.py +0 -0
  183. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/antpos.py +0 -0
  184. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/fhd.py +0 -0
  185. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/fits.py +0 -0
  186. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/hdf5.py +0 -0
  187. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/io/ms.py +0 -0
  188. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/phase_center_catalog.py +0 -0
  189. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/phasing.py +0 -0
  190. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/phasing.pyx +0 -0
  191. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/redundancy.py +0 -0
  192. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/times.py +0 -0
  193. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/tools.py +0 -0
  194. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/utils/types.py +0 -0
  195. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbase.py +0 -0
  196. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/__init__.py +0 -0
  197. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/cst_beam.py +0 -0
  198. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/feko_beam.py +0 -0
  199. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/initializers.py +0 -0
  200. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/mwa_beam.py +0 -0
  201. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvbeam/uvbeam.pyx +0 -0
  202. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/__init__.py +0 -0
  203. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/calfits.py +0 -0
  204. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/calh5.py +0 -0
  205. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/fhd_cal.py +0 -0
  206. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/initializers.py +0 -0
  207. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvcal/uvcal.py +0 -0
  208. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/__init__.py +0 -0
  209. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/aipy_extracts.py +0 -0
  210. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/corr_fits.pyx +0 -0
  211. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/fhd.py +0 -0
  212. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/initializers.py +0 -0
  213. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/mir.py +0 -0
  214. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/aipy_compat.h +0 -0
  215. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/bug.c +0 -0
  216. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/dio.c +0 -0
  217. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/headio.c +0 -0
  218. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/hio.c +0 -0
  219. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/hio.h +0 -0
  220. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/io.h +0 -0
  221. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/maskio.c +0 -0
  222. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/maxdimc.h +0 -0
  223. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/miriad.h +0 -0
  224. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/miriad_wrap.h +0 -0
  225. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/miriad_wrap.pyx +0 -0
  226. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/pack.c +0 -0
  227. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/sysdep.h +0 -0
  228. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/src/uvio.c +0 -0
  229. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvdata/uvh5.py +0 -0
  230. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvflag/__init__.py +0 -0
  231. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata/uvflag/uvflag.py +0 -0
  232. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata.egg-info/dependency_links.txt +0 -0
  233. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/src/pyuvdata.egg-info/top_level.txt +0 -0
  234. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/__init__.py +0 -0
  235. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_beam_interface.py +0 -0
  236. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_docstrings.py +0 -0
  237. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_parameter.py +0 -0
  238. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_telescopes.py +0 -0
  239. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_uvbase.py +0 -0
  240. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/test_warning_check.py +0 -0
  241. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/__init__.py +0 -0
  242. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/conftest.py +0 -0
  243. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/io/__init__.py +0 -0
  244. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/io/test_hdf5.py +0 -0
  245. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/io/test_ms.py +0 -0
  246. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_apply_uvflag.py +0 -0
  247. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_array_collapse.py +0 -0
  248. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_bls.py +0 -0
  249. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_bls_numba.py +0 -0
  250. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_bltaxis.py +0 -0
  251. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_coordinates.py +0 -0
  252. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_phase_center_catalog.py +0 -0
  253. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_phasing.py +0 -0
  254. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_pol.py +0 -0
  255. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_redundancy.py +0 -0
  256. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_times.py +0 -0
  257. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/utils/test_tools.py +0 -0
  258. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/__init__.py +0 -0
  259. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/conftest.py +0 -0
  260. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_cst_beam.py +0 -0
  261. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_feko_beam.py +0 -0
  262. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_initializers.py +0 -0
  263. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvbeam/test_mwa_beam.py +0 -0
  264. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/__init__.py +0 -0
  265. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/conftest.py +0 -0
  266. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_calfits.py +0 -0
  267. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_calh5.py +0 -0
  268. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_fhd_cal.py +0 -0
  269. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_initializers.py +0 -0
  270. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvcal/test_uvcal.py +0 -0
  271. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/__init__.py +0 -0
  272. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/conftest.py +0 -0
  273. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_aipy_extracts.py +0 -0
  274. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_fhd.py +0 -0
  275. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_import_errors.py +0 -0
  276. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_initializers.py +0 -0
  277. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_mir.py +0 -0
  278. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_mir_meta_data.py +0 -0
  279. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_mir_parser.py +0 -0
  280. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvdata/test_uvfits.py +0 -0
  281. {pyuvdata-3.2.4 → pyuvdata-3.2.6}/tests/uvflag/__init__.py +0 -0
@@ -25,19 +25,23 @@ jobs:
25
25
  - restore_cache:
26
26
  key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
27
27
  - run:
28
- name: Install Micromamba
29
- command: wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | sudo tar -C / -xvj bin/micromamba
28
+ name: Install Conda from Miniforge
29
+ command: |
30
+ wget -O Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
31
+ bash Miniforge3.sh -b -p "${HOME}/conda"
32
+ ${HOME}/conda/bin/conda init
30
33
  - run:
31
34
  name: configure conda environment
32
35
  command: |
33
- micromamba info
34
36
  # need these to add gxx and gcc to build novas and cython
35
- micromamba create --name=${ENV_NAME} python=$PYTHON gxx gcc -f ci/${ENV_NAME}.yml -yq
37
+ conda create --name=${ENV_NAME} python=$PYTHON gxx gcc -yq
38
+ conda env update --name=${ENV_NAME} -f ci/${ENV_NAME}.yml
36
39
  - run:
37
- name: Verify Mamba Config
40
+ name: Verify Conda Config
38
41
  command: |
39
- source ./ci/_activate_current_env.sh
40
- micromamba list -n ${ENV_NAME}
42
+ conda activate ${ENV_NAME}
43
+ conda info
44
+ conda list
41
45
  # check that the python version matches the desired one; exit immediately if not
42
46
  PYVER=`python -c "import sys; print('{:d}.{:d}'.format(sys.version_info.major, sys.version_info.minor))"`
43
47
  if [[ $PYVER != $PYTHON ]]; then
@@ -46,12 +50,12 @@ jobs:
46
50
  - run:
47
51
  name: install
48
52
  command: |
49
- source ./ci/_activate_current_env.sh
53
+ conda activate ${ENV_NAME}
50
54
  CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install --no-deps .
51
55
  - run:
52
56
  name: run pyuvdata tests
53
57
  command: |
54
- source ./ci/_activate_current_env.sh
58
+ conda activate ${ENV_NAME}
55
59
  mkdir test-reports
56
60
  python -m pytest -n auto --dist=loadfile --cov=pyuvdata --cov-config=".coveragerc" --cov-report xml:"./coverage.xml" --junitxml="test-reports/xunit.xml"
57
61
  - save_cache:
@@ -83,19 +87,23 @@ jobs:
83
87
  - restore_cache:
84
88
  key: deps-{{ .Branch }}-{{ checksum "ci/pyuvdata_tests.yml" }}
85
89
  - run:
86
- name: Install Micromamba
87
- command: wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | sudo tar -C / -xvj bin/micromamba
90
+ name: Install Conda from Miniforge
91
+ command: |
92
+ wget -O Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
93
+ bash Miniforge3.sh -b -p "${HOME}/conda"
94
+ ${HOME}/conda/bin/conda init
88
95
  - run:
89
96
  name: configure conda environment
90
97
  command: |
91
- micromamba info
92
98
  # need these to add gxx and gcc to build novas and cython
93
- micromamba create --name=${ENV_NAME} python=$PYTHON gxx gcc -f ci/${ENV_NAME}.yml -yq
99
+ conda create --name=${ENV_NAME} python=$PYTHON gxx gcc -yq
100
+ conda env update --name=${ENV_NAME} -f ci/${ENV_NAME}.yml
94
101
  - run:
95
- name: Verify Mamba Config
102
+ name: Verify Conda Config
96
103
  command: |
97
- source ./ci/_activate_current_env.sh
98
- micromamba list -n ${ENV_NAME}
104
+ conda activate ${ENV_NAME}
105
+ conda info
106
+ conda list
99
107
  # check that the python version matches the desired one; exit immediately if not
100
108
  PYVER=`python -c "import sys; print('{:d}.{:d}'.format(sys.version_info.major, sys.version_info.minor))"`
101
109
  if [[ $PYVER != $PYTHON ]]; then
@@ -104,12 +112,12 @@ jobs:
104
112
  - run:
105
113
  name: install
106
114
  command: |
107
- source ./ci/_activate_current_env.sh
115
+ conda activate ${ENV_NAME}
108
116
  pip install --no-deps -e .
109
117
  - run:
110
118
  name: run tutorial tests
111
119
  command: |
112
- source ./ci/_activate_current_env.sh
120
+ conda activate ${ENV_NAME}
113
121
  cd docs
114
122
  python -m pytest -n auto --doctest-glob="*.rst" -W "error::DeprecationWarning"
115
123
  cd ..
@@ -134,9 +142,13 @@ workflows:
134
142
  name: pyuvdata_3.13
135
143
  python_version: "3.13"
136
144
  env_name: "pyuvdata_tests"
145
+ - pyuvdata:
146
+ name: pyuvdata_3.14
147
+ python_version: "3.14"
148
+ env_name: "pyuvdata_tests"
137
149
  - pyuvdata:
138
150
  name: pyuvdata_min_deps
139
- python_version: "3.13"
151
+ python_version: "3.14"
140
152
  env_name: "pyuvdata_min_deps_tests"
141
153
  - pyuvdata:
142
154
  name: pyuvdata_min_versions
@@ -26,7 +26,7 @@ jobs:
26
26
  fail-fast: false
27
27
  matrix:
28
28
  os: [macos-latest, windows-latest]
29
- python-version: ["3.11", "3.12", "3.13"]
29
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
30
30
  include:
31
31
  - env_name: pyuvdata_tests_windows
32
32
  os: windows-latest
@@ -14,8 +14,6 @@ concurrency:
14
14
 
15
15
  jobs:
16
16
  numba_test:
17
- env:
18
- PYTHON: 3.13
19
17
  name: Numba Utils Tests
20
18
  runs-on: ubuntu-latest
21
19
  steps:
@@ -26,20 +24,16 @@ jobs:
26
24
  - name: Setup Python
27
25
  uses: actions/setup-python@v5
28
26
  with:
29
- python-version: ${{ env.PYTHON }}
27
+ python-version-file: pyproject.toml
30
28
 
31
29
  - name: Install
32
30
  run: |
33
- CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install -e .[dev]
31
+ CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install -e .[test]
34
32
  pip install pytest-xdist
35
33
 
36
34
  - name: Environment Info
37
35
  run: |
38
36
  pip list
39
- PYVER=`python -c "import sys; print('{:d}.{:d}'.format(sys.version_info.major, sys.version_info.minor))"`
40
- if [[ $PYVER != ${{ env.PYTHON }} ]]; then
41
- exit 1;
42
- fi
43
37
 
44
38
  - name: Run Tests
45
39
  run: |
@@ -19,17 +19,21 @@ jobs:
19
19
  matrix:
20
20
  buildplat:
21
21
  - [ubuntu-latest, manylinux, x86_64]
22
- - [macos-13, macosx, x86_64]
22
+ - [macos-15-intel, macosx, x86_64]
23
23
  - [macos-latest, macosx, arm64]
24
24
  - [windows-latest, win, AMD64]
25
- python: ["cp311", "cp312", "cp313"]
25
+ python: ["cp311", "cp312", "cp313", "cp314"]
26
+ exclude:
27
+ # exclude intel macs on python 3.14 because there's no compatible numba wheel
28
+ - buildplat: [macos-15-intel, macosx, x86_64]
29
+ python: "cp314"
26
30
  steps:
27
31
  - uses: actions/checkout@main
28
32
  with:
29
33
  fetch-depth: 0
30
34
 
31
35
  - name: Build wheels
32
- uses: pypa/cibuildwheel@v2.23
36
+ uses: pypa/cibuildwheel@v3.3
33
37
  env:
34
38
  CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
35
39
  CIBW_ARCHS: ${{ matrix.buildplat[2] }}
@@ -14,10 +14,22 @@ concurrency:
14
14
 
15
15
  jobs:
16
16
  warning_test:
17
- env:
18
- PYTHON: 3.12
19
17
  name: Warning Test
18
+ env:
19
+ PYTEST_OPTIONS: ${{ case(matrix.coverage == true, '--cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml', '') }}
20
20
  runs-on: ubuntu-latest
21
+ strategy:
22
+ fail-fast: false
23
+ matrix:
24
+ include:
25
+ - python-version: 3.13
26
+ pip-options: "dev"
27
+ coverage: true
28
+ # currently (April 2026), python-casacore does not build properly from pypi on python 3.14
29
+ # also, cython's coverage plugin causes errors when building from pypi on python 3.14
30
+ - python-version: 3.14
31
+ pip-options: "test"
32
+ coverage: false
21
33
  steps:
22
34
  - uses: actions/checkout@main
23
35
  with:
@@ -26,24 +38,20 @@ jobs:
26
38
  - name: Setup Python
27
39
  uses: actions/setup-python@v5
28
40
  with:
29
- python-version: ${{ env.PYTHON }}
41
+ python-version: ${{ matrix.python-version }}
30
42
 
31
43
  - name: Install
32
44
  run: |
33
- CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install -e .[dev]
45
+ CFLAGS="-DCYTHON_TRACE=1 -DCYTHON_TRACE_NOGIL=1" pip install -e .[${{ matrix.pip-options }}]
34
46
  pip install pytest-xdist
35
47
 
36
48
  - name: Environment Info
37
49
  run: |
38
50
  pip list
39
- PYVER=`python -c "import sys; print('{:d}.{:d}'.format(sys.version_info.major, sys.version_info.minor))"`
40
- if [[ $PYVER != ${{ env.PYTHON }} ]]; then
41
- exit 1;
42
- fi
43
51
 
44
52
  - name: Run Tests
45
53
  run: |
46
- pytest -W error -n auto --cov=pyuvdata --cov-config=.coveragerc --cov-report xml:coverage.xml
54
+ pytest -W error -n auto ${{ env.PYTEST_OPTIONS }}
47
55
 
48
56
  - uses: codecov/codecov-action@v5
49
57
  if: success()
@@ -17,13 +17,13 @@ repos:
17
17
  args: ['--fix=no']
18
18
 
19
19
  - repo: https://github.com/astral-sh/ruff-pre-commit
20
- rev: v0.12.12
20
+ rev: v0.15.9
21
21
  hooks:
22
22
  - id: ruff
23
23
  - id: ruff-format
24
24
 
25
25
  - repo: https://github.com/PyCQA/bandit
26
- rev: 1.8.6
26
+ rev: 1.9.4
27
27
  hooks:
28
28
  - id: bandit
29
29
  args: ["-c", "pyproject.toml", "--recursive"]
@@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  ## [Unreleased]
5
5
 
6
+ ## [3.2.6] - 2025-03-13
7
+
8
+ ### Added
9
+ - Support for python 3.14.
10
+
11
+ ### Changed
12
+ - Added improved handling of a few warning messages from h5py and numpy.
13
+
14
+ ### Fixed
15
+ - A bug with reading ms caltables with multiple closely-spaced times.
16
+ - Significant reduction in memory when reading UVFITS files, particularly when
17
+ reading the entire file (no selection on read).
18
+
19
+ ## [3.2.5] - 2025-12-11
20
+
21
+ ### Changed
22
+ - Added a `UVData.flip_conjugation` method and more detail to the uvw check warning
23
+ message to inform users when a conjugation flip might be needed.
24
+ - When reading MWAX correlator files , `remove_coarse_band` now defaults to
25
+ `False` if DERIPPLE is on. Otherwise it defaults to `True`.
26
+ - If the user has set `remove_coarse_band=True` when DERIPPLE is on, a warning is
27
+ raised, and no pfb shape is removed.
28
+
29
+ ### Added
30
+ - Support for wide-band `UVCal` gain objects with `uvcalibrate`.
31
+ - A colormap option to the UVBeam and AnalyticBeam `plot` methods, along with
32
+ better default colormaps for phase.
33
+ - A NotImplementedError to `mwa_corr_fits.py` that is thrown when trying to read
34
+ fringe-stopped data.
35
+
36
+ ### Fixed
37
+ - A backwards compatibiilty issue with feed arrays in old beamfits files which
38
+ could specify feeds as "e" or "n".
39
+ - Compatiblity with numpy>=2.3
40
+
6
41
  ## [3.2.4] - 2025-09-15
7
42
 
8
43
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyuvdata
3
- Version: 3.2.4
3
+ Version: 3.2.6
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>
@@ -20,7 +20,8 @@ License-File: LICENSE
20
20
  Requires-Dist: astropy>=6.0
21
21
  Requires-Dist: docstring-parser>=0.15
22
22
  Requires-Dist: h5py>=3.7
23
- Requires-Dist: numba>=0.57.0
23
+ Requires-Dist: numba<0.63,>=0.57.0; python_version < "3.14"
24
+ Requires-Dist: numba>=0.63; python_version >= "3.14"
24
25
  Requires-Dist: numpy>=1.23
25
26
  Requires-Dist: pyerfa>=2.0.1.1
26
27
  Requires-Dist: pyyaml>=5.4.1
@@ -89,41 +89,48 @@ jobs:
89
89
  cd s
90
90
  displayName: clone $(NAME)
91
91
 
92
- - bash: wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | sudo tar -C / -xvj bin/micromamba
93
- displayName: Install Micromamba
92
+ - bash: |
93
+ wget -O Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
94
+ bash Miniforge3.sh -b -p "${HOME}/conda"
95
+ displayName: Install Conda from Miniforge
94
96
 
95
97
  - bash: |
96
- micromamba info
97
- # need to add gxx and gcc to build novas and cython
98
- # numba should be removed after next pyuvdata release (>3.2.1)
99
- # note different spelling of yaml extension
100
- micromamba create --name=${ENV_NAME} python=$PYTHON gxx gcc numba -f ../$(NAME)/ci/${ENV_NAME}.yaml -yq
98
+ # point to this conda install, not the default conda on Azure pipelines hosts
99
+ # need these to add gxx and gcc to build novas and cython
100
+ source "${HOME}/conda/etc/profile.d/conda.sh"
101
+ conda create --name=${ENV_NAME} python=$PYTHON gxx gcc -yq
102
+ conda env update --name=${ENV_NAME} -f ../$(NAME)/ci/${ENV_NAME}.yaml
101
103
  displayName: configure conda environment
102
104
 
103
105
  - bash: |
104
- source ./ci/_activate_current_env.sh
105
- micromamba list -n ${ENV_NAME}
106
+ source "${HOME}/conda/etc/profile.d/conda.sh"
107
+ conda activate ${ENV_NAME}
108
+ conda info
109
+ conda list
106
110
  # check that the python version matches the desired one; exit immediately if not
107
111
  PYVER=`python -c "import sys; print('{:d}.{:d}'.format(sys.version_info.major, sys.version_info.minor))"`
108
112
  if [[ $PYVER != $PYTHON ]]; then
109
113
  exit 1;
110
114
  fi
111
- displayName: Verify Mamba Config
115
+ displayName: Verify Conda Config
112
116
 
113
117
  # install this version of pyuvdata
114
118
  - bash: |
115
- source ./ci/_activate_current_env.sh
119
+ source "${HOME}/conda/etc/profile.d/conda.sh"
120
+ conda activate ${ENV_NAME}
116
121
  pip install --no-deps .
117
122
  displayName: install pyuvdata
118
123
 
119
124
  - bash: |
120
- source ./ci/_activate_current_env.sh
125
+ source "${HOME}/conda/etc/profile.d/conda.sh"
126
+ conda activate ${ENV_NAME}
121
127
  cd ../$(NAME)
122
128
  pip install --no-deps .
123
129
  displayName: install $(NAME)
124
130
 
125
131
  - bash: |
126
- source ./ci/_activate_current_env.sh
132
+ source "${HOME}/conda/etc/profile.d/conda.sh"
133
+ conda activate ${ENV_NAME}
127
134
  cd ../$(NAME)
128
135
  pytest ${PYTEST_ARGS}
129
136
  displayName: run $(NAME) tests
@@ -34,7 +34,9 @@ dependencies = [
34
34
  "astropy>=6.0",
35
35
  "docstring-parser>=0.15",
36
36
  "h5py>=3.7",
37
- "numba>=0.57.0",
37
+ # numba above 0.63 has no wheels for intel macs but is required for python 3.14
38
+ "numba>=0.57.0,<0.63; python_version < '3.14'",
39
+ "numba>=0.63; python_version >= '3.14'",
38
40
  "numpy>=1.23",
39
41
  "pyerfa>=2.0.1.1",
40
42
  "pyyaml>=5.4.1",
@@ -646,6 +646,7 @@ class AnalyticBeam:
646
646
  beam_type: str,
647
647
  freq: float,
648
648
  complex_type: str = "real",
649
+ colormap: str | None = None,
649
650
  logcolor: bool | None = None,
650
651
  plt_kwargs: dict | None = None,
651
652
  norm_kwargs: dict | None = None,
@@ -666,6 +667,11 @@ class AnalyticBeam:
666
667
  What to plot for complex beams, options are: [real, imag, abs, phase].
667
668
  Defaults to "real" for complex beams. Ignored for real beams
668
669
  (i.e. power beams, same feed).
670
+ colormap : str, optional
671
+ Matplotlib colormap to use. Defaults to "twlight" if complex_type="phase"
672
+ and logcolor=False, otherwise it defaults to "viridis" if the data to be
673
+ plotted is positive definite (e.g. if complex_type="abs") and "PRGn"
674
+ otherwise.
669
675
  logcolor : bool, optional
670
676
  Option to use log scaling for the color. Defaults to True for power
671
677
  beams and False for E-field beams. Results in using
@@ -690,6 +696,7 @@ class AnalyticBeam:
690
696
  beam_type=beam_type,
691
697
  freq=freq,
692
698
  complex_type=complex_type,
699
+ colormap=colormap,
693
700
  logcolor=logcolor,
694
701
  plt_kwargs=plt_kwargs,
695
702
  norm_kwargs=norm_kwargs,
@@ -1183,7 +1183,7 @@ class LocationParameter(UVParameter):
1183
1183
  """Detect if this location is on the moon."""
1184
1184
  # figure out if this is on the moon. Doing it this way limits
1185
1185
  # attempted imports of lunarsky
1186
- if isinstance(self.value, EarthLocation):
1186
+ if self.value is None or isinstance(self.value, EarthLocation):
1187
1187
  return False
1188
1188
  else:
1189
1189
  try:
@@ -14,6 +14,8 @@ def mean_collapse(
14
14
  """
15
15
  Collapse by averaging data.
16
16
 
17
+ Bools are cast to integers prior to calculations.
18
+
17
19
  This is similar to np.average, except it handles infs (by giving them
18
20
  zero weight) and zero weight axes (by forcing result to be inf with zero
19
21
  output weight).
@@ -34,6 +36,8 @@ def mean_collapse(
34
36
 
35
37
  """
36
38
  arr = deepcopy(arr) # avoid changing outside
39
+ if isinstance(arr.item(0), bool):
40
+ arr = arr.astype(int)
37
41
  if weights is None:
38
42
  weights = np.ones_like(arr)
39
43
  else:
@@ -46,7 +50,7 @@ def mean_collapse(
46
50
  weights_square_out = np.sum(weights_square, axis=axis)
47
51
  out = np.sum(weights * arr, axis=axis)
48
52
  where = weight_out > 1e-10
49
- out = np.true_divide(out, weight_out, where=where)
53
+ out = np.true_divide(out, weight_out, where=where, out=None)
50
54
  out = np.where(where, out, np.inf)
51
55
  if return_weights and return_weights_square:
52
56
  return out, weight_out, weights_square_out
@@ -64,6 +68,8 @@ def absmean_collapse(
64
68
  """
65
69
  Collapse by averaging absolute value of data.
66
70
 
71
+ Bools are cast to integers prior to calculations.
72
+
67
73
  Parameters
68
74
  ----------
69
75
  arr : array
@@ -79,6 +85,9 @@ def absmean_collapse(
79
85
  whether to return the sum of the squares of the weights. Default is False.
80
86
 
81
87
  """
88
+ arr = deepcopy(arr) # avoid changing outside
89
+ if isinstance(arr.item(0), bool):
90
+ arr = arr.astype(int)
82
91
  return mean_collapse(
83
92
  np.abs(arr),
84
93
  weights=weights,
@@ -94,6 +103,8 @@ def quadmean_collapse(
94
103
  """
95
104
  Collapse by averaging in quadrature.
96
105
 
106
+ Bools are cast to integers prior to calculations.
107
+
97
108
  Parameters
98
109
  ----------
99
110
  arr : array
@@ -109,6 +120,9 @@ def quadmean_collapse(
109
120
  whether to return the sum of the squares of the weights. Default is False.
110
121
 
111
122
  """
123
+ arr = deepcopy(arr) # avoid changing outside
124
+ if isinstance(arr.item(0), bool):
125
+ arr = arr.astype(int)
112
126
  out = mean_collapse(
113
127
  np.abs(arr) ** 2,
114
128
  weights=weights,