photutils 2.0.2__tar.gz → 2.2.0__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 (321) hide show
  1. {photutils-2.0.2 → photutils-2.2.0}/.github/dependabot.yml +1 -1
  2. {photutils-2.0.2 → photutils-2.2.0}/.github/workflows/ci_cron_daily.yml +4 -4
  3. {photutils-2.0.2 → photutils-2.2.0}/.github/workflows/ci_cron_weekly.yml +5 -26
  4. {photutils-2.0.2 → photutils-2.2.0}/.github/workflows/ci_tests.yml +22 -15
  5. {photutils-2.0.2 → photutils-2.2.0}/.github/workflows/codeql.yml +1 -1
  6. {photutils-2.0.2 → photutils-2.2.0}/.github/workflows/publish.yml +1 -5
  7. {photutils-2.0.2 → photutils-2.2.0}/.pre-commit-config.yaml +4 -4
  8. {photutils-2.0.2 → photutils-2.2.0}/.readthedocs.yaml +1 -1
  9. {photutils-2.0.2 → photutils-2.2.0}/CHANGES.rst +140 -0
  10. {photutils-2.0.2 → photutils-2.2.0}/LICENSE.rst +1 -1
  11. {photutils-2.0.2 → photutils-2.2.0}/PKG-INFO +15 -9
  12. {photutils-2.0.2 → photutils-2.2.0}/README.rst +10 -3
  13. photutils-2.2.0/docs/_static/custom.css +3 -0
  14. {photutils-2.0.2 → photutils-2.2.0}/docs/conf.py +4 -7
  15. {photutils-2.0.2 → photutils-2.2.0}/docs/development/releasing.rst +5 -0
  16. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/importing.rst +15 -10
  17. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/install.rst +2 -2
  18. {photutils-2.0.2 → photutils-2.2.0}/docs/index.rst +2 -2
  19. photutils-2.2.0/docs/reference/datasets_api.rst +8 -0
  20. photutils-2.2.0/docs/reference/detection_api.rst +8 -0
  21. photutils-2.0.2/docs/reference/segmentation_api.rst → photutils-2.2.0/docs/reference/geometry_api.rst +2 -2
  22. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/index.rst +5 -3
  23. photutils-2.2.0/docs/reference/isophote_api.rst +8 -0
  24. photutils-2.2.0/docs/reference/morphology_api.rst +8 -0
  25. photutils-2.2.0/docs/reference/segmentation_api.rst +8 -0
  26. photutils-2.2.0/docs/reference/utils_api.rst +8 -0
  27. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/aperture.rst +28 -37
  28. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/centroids.rst +3 -1
  29. photutils-2.2.0/docs/user_guide/datasets.rst +157 -0
  30. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/detection.rst +7 -8
  31. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/geometry.rst +3 -1
  32. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/grouping.rst +29 -14
  33. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/index.rst +27 -13
  34. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/morphology.rst +64 -20
  35. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/profiles.rst +181 -55
  36. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/psf.rst +41 -38
  37. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/segmentation.rst +13 -13
  38. photutils-2.2.0/docs/user_guide/utils.rst +31 -0
  39. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.1.rst +26 -26
  40. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.6.rst +10 -10
  41. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.7.rst +7 -7
  42. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.9.rst +12 -12
  43. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/2.0.rst +4 -4
  44. photutils-2.2.0/docs/whats_new/2.1.rst +90 -0
  45. photutils-2.2.0/docs/whats_new/2.2.rst +56 -0
  46. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/index.rst +3 -1
  47. {photutils-2.0.2 → photutils-2.2.0}/photutils/CITATION.rst +15 -15
  48. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/attributes.py +16 -8
  49. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/bounding_box.py +6 -6
  50. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/circle.py +29 -25
  51. photutils-2.2.0/photutils/aperture/converters.py +421 -0
  52. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/core.py +57 -60
  53. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/ellipse.py +48 -43
  54. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/photometry.py +40 -37
  55. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/rectangle.py +55 -50
  56. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/stats.py +52 -37
  57. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_converters.py +92 -6
  58. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_ellipse.py +13 -4
  59. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_photometry.py +71 -21
  60. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_rectangle.py +13 -4
  61. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/background_2d.py +1 -0
  62. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/core.py +13 -5
  63. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/interpolators.py +1 -1
  64. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/tests/test_background_2d.py +4 -4
  65. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/core.py +4 -4
  66. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/__init__.py +5 -2
  67. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/images.py +78 -49
  68. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/load.py +12 -6
  69. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/noise.py +2 -2
  70. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_images.py +26 -2
  71. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/wcs.py +1 -1
  72. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/__init__.py +2 -2
  73. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/core.py +2 -2
  74. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/daofinder.py +39 -30
  75. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/irafstarfinder.py +47 -39
  76. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/peakfinder.py +24 -14
  77. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/starfinder.py +16 -16
  78. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/test_daofinder.py +27 -0
  79. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/test_irafstarfinder.py +24 -0
  80. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/test_peakfinder.py +17 -5
  81. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/test_starfinder.py +18 -0
  82. photutils-2.2.0/photutils/geometry/__init__.py +13 -0
  83. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/ellipse.py +3 -1
  84. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/geometry.py +2 -0
  85. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/harmonics.py +1 -0
  86. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/integrator.py +1 -1
  87. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_model.py +7 -1
  88. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_regression.py +5 -5
  89. {photutils-2.0.2 → photutils-2.2.0}/photutils/morphology/non_parametric.py +22 -8
  90. photutils-2.2.0/photutils/morphology/tests/test_non_parametric.py +42 -0
  91. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/core.py +32 -24
  92. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/curve_of_growth.py +50 -42
  93. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/radial_profile.py +139 -51
  94. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/tests/test_radial_profile.py +34 -0
  95. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/epsf.py +1 -1
  96. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/functional_models.py +14 -5
  97. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/gridded_models.py +11 -12
  98. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/image_models.py +14 -12
  99. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/fourier.py +1 -1
  100. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/windows.py +12 -8
  101. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/model_helpers.py +1 -1
  102. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/model_io.py +9 -9
  103. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/model_plotting.py +11 -16
  104. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/photometry.py +14 -12
  105. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/simulation.py +3 -3
  106. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/utils.py +2 -2
  107. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/catalog.py +78 -57
  108. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/core.py +109 -15
  109. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/deblend.py +57 -17
  110. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/detect.py +3 -2
  111. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_catalog.py +10 -0
  112. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_core.py +94 -2
  113. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_deblend.py +3 -0
  114. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_detect.py +3 -0
  115. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/utils.py +13 -11
  116. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/__init__.py +2 -1
  117. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_misc.py +2 -6
  118. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_moments.py +1 -1
  119. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/depths.py +10 -6
  120. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/errors.py +13 -4
  121. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/interpolation.py +1 -0
  122. {photutils-2.0.2 → photutils-2.2.0}/photutils/version.py +2 -2
  123. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/PKG-INFO +15 -9
  124. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/SOURCES.txt +3 -0
  125. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/requires.txt +1 -4
  126. {photutils-2.0.2 → photutils-2.2.0}/pyproject.toml +3 -6
  127. {photutils-2.0.2 → photutils-2.2.0}/tox.ini +3 -3
  128. photutils-2.0.2/docs/reference/datasets_api.rst +0 -8
  129. photutils-2.0.2/docs/reference/detection_api.rst +0 -8
  130. photutils-2.0.2/docs/reference/geometry_api.rst +0 -8
  131. photutils-2.0.2/docs/reference/isophote_api.rst +0 -8
  132. photutils-2.0.2/docs/reference/morphology_api.rst +0 -8
  133. photutils-2.0.2/docs/reference/utils_api.rst +0 -8
  134. photutils-2.0.2/docs/user_guide/datasets.rst +0 -64
  135. photutils-2.0.2/docs/user_guide/utils.rst +0 -14
  136. photutils-2.0.2/photutils/aperture/converters.py +0 -161
  137. photutils-2.0.2/photutils/geometry/__init__.py +0 -8
  138. photutils-2.0.2/photutils/morphology/tests/test_non_parametric.py +0 -20
  139. {photutils-2.0.2 → photutils-2.2.0}/.flake8 +0 -0
  140. {photutils-2.0.2 → photutils-2.2.0}/.gitignore +0 -0
  141. {photutils-2.0.2 → photutils-2.2.0}/.pycodestyle +0 -0
  142. {photutils-2.0.2 → photutils-2.2.0}/CITATION.md +0 -0
  143. {photutils-2.0.2 → photutils-2.2.0}/CODE_OF_CONDUCT.rst +0 -0
  144. {photutils-2.0.2 → photutils-2.2.0}/CONTRIBUTING.rst +0 -0
  145. {photutils-2.0.2 → photutils-2.2.0}/codecov.yml +0 -0
  146. {photutils-2.0.2 → photutils-2.2.0}/docs/Makefile +0 -0
  147. {photutils-2.0.2 → photutils-2.2.0}/docs/_static/photutils_logo.ico +0 -0
  148. {photutils-2.0.2 → photutils-2.2.0}/docs/_static/photutils_logo_dark_plain_path.svg +0 -0
  149. {photutils-2.0.2 → photutils-2.2.0}/docs/_static/photutils_logo_light_plain_path.svg +0 -0
  150. {photutils-2.0.2 → photutils-2.2.0}/docs/changelog.rst +0 -0
  151. {photutils-2.0.2 → photutils-2.2.0}/docs/development/index.rst +0 -0
  152. {photutils-2.0.2 → photutils-2.2.0}/docs/development/license.rst +0 -0
  153. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/citation.rst +0 -0
  154. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/contributing.rst +0 -0
  155. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/contributors.rst +0 -0
  156. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/index.rst +0 -0
  157. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/overview.rst +0 -0
  158. {photutils-2.0.2 → photutils-2.2.0}/docs/getting_started/pixel_conventions.rst +0 -0
  159. {photutils-2.0.2 → photutils-2.2.0}/docs/make.bat +0 -0
  160. {photutils-2.0.2 → photutils-2.2.0}/docs/nitpick-exceptions.txt +0 -0
  161. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/aperture_api.rst +0 -0
  162. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/background_api.rst +0 -0
  163. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/centroids_api.rst +0 -0
  164. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/profiles_api.rst +0 -0
  165. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/psf_api.rst +0 -0
  166. {photutils-2.0.2 → photutils-2.2.0}/docs/reference/psf_matching_api.rst +0 -0
  167. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/background.rst +0 -0
  168. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/epsf.rst +0 -0
  169. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/isophote.rst +0 -0
  170. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/isophote_faq.rst +0 -0
  171. {photutils-2.0.2 → photutils-2.2.0}/docs/user_guide/psf_matching.rst +0 -0
  172. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.10.rst +0 -0
  173. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.11.rst +0 -0
  174. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.12.rst +0 -0
  175. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.13.rst +0 -0
  176. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.2.rst +0 -0
  177. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.3.rst +0 -0
  178. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.4.rst +0 -0
  179. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.5.rst +0 -0
  180. {photutils-2.0.2 → photutils-2.2.0}/docs/whats_new/1.8.rst +0 -0
  181. {photutils-2.0.2 → photutils-2.2.0}/photutils/__init__.py +0 -0
  182. {photutils-2.0.2 → photutils-2.2.0}/photutils/_compiler.c +0 -0
  183. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/__init__.py +0 -0
  184. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/mask.py +0 -0
  185. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/__init__.py +0 -0
  186. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_aperture_common.py +0 -0
  187. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_bounding_box.py +0 -0
  188. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_circle.py +0 -0
  189. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_mask.py +0 -0
  190. {photutils-2.0.2 → photutils-2.2.0}/photutils/aperture/tests/test_stats.py +0 -0
  191. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/__init__.py +0 -0
  192. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/local_background.py +0 -0
  193. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/tests/__init__.py +0 -0
  194. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/tests/test_core.py +0 -0
  195. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/tests/test_interpolators.py +0 -0
  196. {photutils-2.0.2 → photutils-2.2.0}/photutils/background/tests/test_local_background.py +0 -0
  197. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/__init__.py +0 -0
  198. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/gaussian.py +0 -0
  199. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/tests/__init__.py +0 -0
  200. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/tests/test_core.py +0 -0
  201. {photutils-2.0.2 → photutils-2.2.0}/photutils/centroids/tests/test_gaussian.py +0 -0
  202. {photutils-2.0.2 → photutils-2.2.0}/photutils/conftest.py +0 -0
  203. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/data/100gaussians_params.ecsv +0 -0
  204. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/data/4gaussians_params.ecsv +0 -0
  205. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/examples.py +0 -0
  206. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/model_params.py +0 -0
  207. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/__init__.py +0 -0
  208. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_examples.py +0 -0
  209. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_load.py +0 -0
  210. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_model_params.py +0 -0
  211. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_noise.py +0 -0
  212. {photutils-2.0.2 → photutils-2.2.0}/photutils/datasets/tests/test_wcs.py +0 -0
  213. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/__init__.py +0 -0
  214. {photutils-2.0.2 → photutils-2.2.0}/photutils/detection/tests/conftest.py +0 -0
  215. {photutils-2.0.2 → photutils-2.2.0}/photutils/extern/__init__.py +0 -0
  216. {photutils-2.0.2 → photutils-2.2.0}/photutils/extern/biweight.py +0 -0
  217. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/circular_overlap.pyx +0 -0
  218. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/core.pxd +0 -0
  219. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/core.pyx +0 -0
  220. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/elliptical_overlap.pyx +0 -0
  221. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/rectangular_overlap.pyx +0 -0
  222. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/tests/__init__.py +0 -0
  223. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/tests/test_circular_overlap_grid.py +0 -0
  224. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/tests/test_elliptical_overlap_grid.py +0 -0
  225. {photutils-2.0.2 → photutils-2.2.0}/photutils/geometry/tests/test_rectangular_overlap_grid.py +0 -0
  226. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/__init__.py +0 -0
  227. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/fitter.py +0 -0
  228. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/isophote.py +0 -0
  229. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/model.py +0 -0
  230. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/sample.py +0 -0
  231. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/__init__.py +0 -0
  232. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/M51_table.fits +0 -0
  233. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/README.rst +0 -0
  234. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/minimum_radius_test.fits +0 -0
  235. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/synth_highsnr_table.fits +0 -0
  236. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/synth_lowsnr_table.fits +0 -0
  237. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/synth_table.fits +0 -0
  238. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/synth_table_mean.fits +0 -0
  239. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/data/synth_table_mean.txt +0 -0
  240. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/make_test_data.py +0 -0
  241. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_angles.py +0 -0
  242. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_ellipse.py +0 -0
  243. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_fitter.py +0 -0
  244. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_geometry.py +0 -0
  245. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_harmonics.py +0 -0
  246. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_integrator.py +0 -0
  247. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_isophote.py +0 -0
  248. {photutils-2.0.2 → photutils-2.2.0}/photutils/isophote/tests/test_sample.py +0 -0
  249. {photutils-2.0.2 → photutils-2.2.0}/photutils/morphology/__init__.py +0 -0
  250. {photutils-2.0.2 → photutils-2.2.0}/photutils/morphology/core.py +0 -0
  251. {photutils-2.0.2 → photutils-2.2.0}/photutils/morphology/tests/__init__.py +0 -0
  252. {photutils-2.0.2 → photutils-2.2.0}/photutils/morphology/tests/test_core.py +0 -0
  253. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/__init__.py +0 -0
  254. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/tests/__init__.py +0 -0
  255. {photutils-2.0.2 → photutils-2.2.0}/photutils/profiles/tests/test_curve_of_growth.py +0 -0
  256. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/__init__.py +0 -0
  257. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/epsf_stars.py +0 -0
  258. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/groupers.py +0 -0
  259. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/__init__.py +0 -0
  260. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/tests/__init__.py +0 -0
  261. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/tests/test_fourier.py +0 -0
  262. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/matching/tests/test_windows.py +0 -0
  263. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/__init__.py +0 -0
  264. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/STDPSF_ACSWFC_F814W_mock.fits +0 -0
  265. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/STDPSF_NRCA1_F150W_mock.fits +0 -0
  266. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/STDPSF_NRCSW_F150W_mock.fits +0 -0
  267. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/STDPSF_WFC3UV_F814W_mock.fits +0 -0
  268. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/STDPSF_WFPC2_F814W_mock.fits +0 -0
  269. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/nircam_nrca1_f200w_fovp101_samp4_npsf16_mock.fits +0 -0
  270. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/nircam_nrca1_f200w_fovp101_samp4_npsf4_mock.fits +0 -0
  271. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/nircam_nrca5_f444w_fovp101_samp4_npsf4_mock.fits +0 -0
  272. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/data/nircam_nrcb4_f150w_fovp101_samp4_npsf1_mock.fits +0 -0
  273. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_epsf.py +0 -0
  274. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_epsf_stars.py +0 -0
  275. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_functional_models.py +0 -0
  276. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_gridded_models.py +0 -0
  277. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_groupers.py +0 -0
  278. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_image_models.py +0 -0
  279. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_model_helpers.py +0 -0
  280. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_photometry.py +0 -0
  281. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_simulation.py +0 -0
  282. {photutils-2.0.2 → photutils-2.2.0}/photutils/psf/tests/test_utils.py +0 -0
  283. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/__init__.py +0 -0
  284. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/finder.py +0 -0
  285. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/__init__.py +0 -0
  286. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_finder.py +0 -0
  287. {photutils-2.0.2 → photutils-2.2.0}/photutils/segmentation/tests/test_utils.py +0 -0
  288. {photutils-2.0.2 → photutils-2.2.0}/photutils/tests/__init__.py +0 -0
  289. {photutils-2.0.2 → photutils-2.2.0}/photutils/tests/helper.py +0 -0
  290. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_convolution.py +0 -0
  291. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_coords.py +0 -0
  292. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_optional_deps.py +0 -0
  293. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_parameters.py +0 -0
  294. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_progress_bars.py +0 -0
  295. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_quantity_helpers.py +0 -0
  296. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_repr.py +0 -0
  297. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_round.py +0 -0
  298. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_stats.py +0 -0
  299. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/_wcs_helpers.py +0 -0
  300. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/colormaps.py +0 -0
  301. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/cutouts.py +0 -0
  302. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/exceptions.py +0 -0
  303. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/footprints.py +0 -0
  304. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/__init__.py +0 -0
  305. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_colormaps.py +0 -0
  306. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_convolution.py +0 -0
  307. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_cutouts.py +0 -0
  308. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_depths.py +0 -0
  309. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_errors.py +0 -0
  310. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_footprints.py +0 -0
  311. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_interpolation.py +0 -0
  312. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_misc.py +0 -0
  313. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_moments.py +0 -0
  314. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_parameters.py +0 -0
  315. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_quantity_helpers.py +0 -0
  316. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_round.py +0 -0
  317. {photutils-2.0.2 → photutils-2.2.0}/photutils/utils/tests/test_stats.py +0 -0
  318. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/dependency_links.txt +0 -0
  319. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/not-zip-safe +0 -0
  320. {photutils-2.0.2 → photutils-2.2.0}/photutils.egg-info/top_level.txt +0 -0
  321. {photutils-2.0.2 → photutils-2.2.0}/setup.cfg +0 -0
@@ -7,7 +7,7 @@ updates:
7
7
  - package-ecosystem: "github-actions"
8
8
  directory: ".github/workflows/"
9
9
  schedule:
10
- interval: "weekly"
10
+ interval: "monthly"
11
11
  groups:
12
12
  actions:
13
13
  patterns:
@@ -49,11 +49,11 @@ jobs:
49
49
 
50
50
  steps:
51
51
  - name: Check out repository
52
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
52
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
53
53
  with:
54
54
  fetch-depth: 0
55
55
  - name: Set up Python ${{ matrix.python }}
56
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
56
+ uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
57
57
  with:
58
58
  python-version: ${{ matrix.python }}
59
59
  allow-prereleases: true
@@ -66,10 +66,10 @@ jobs:
66
66
  python -c "import setuptools; print(f'setuptools {setuptools.__version__}')"
67
67
  python -c "import tox; print(f'tox {tox.__version__}')"
68
68
  - name: Run tests
69
- run: tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }}
69
+ run: python -m tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }}
70
70
  - name: Upload coverage to codecov
71
71
  if: ${{ contains(matrix.tox_env, '-cov') }}
72
- uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
72
+ uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
73
73
  with:
74
74
  files: ./coverage.xml
75
75
  verbose: true
@@ -43,11 +43,11 @@ jobs:
43
43
 
44
44
  steps:
45
45
  - name: Check out repository
46
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
46
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
47
47
  with:
48
48
  fetch-depth: 0
49
49
  - name: Set up Python ${{ matrix.python }}
50
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
50
+ uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
51
51
  with:
52
52
  python-version: ${{ matrix.python }}
53
53
  - name: Install base dependencies
@@ -59,7 +59,7 @@ jobs:
59
59
  python -c "import setuptools; print(f'setuptools {setuptools.__version__}')"
60
60
  python -c "import tox; print(f'tox {tox.__version__}')"
61
61
  - name: Run tests
62
- run: tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }}
62
+ run: python -m tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }}
63
63
 
64
64
 
65
65
  test_more_architectures:
@@ -67,7 +67,7 @@ jobs:
67
67
  # we include them just in the weekly cron. These also serve as a test
68
68
  # of using system libraries and using pytest directly.
69
69
 
70
- runs-on: ubuntu-20.04
70
+ runs-on: ubuntu-latest
71
71
  name: More architectures
72
72
  if: (github.repository == 'astropy/photutils' && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Arch CI')))
73
73
  env:
@@ -82,7 +82,7 @@ jobs:
82
82
  - arch: armv7
83
83
 
84
84
  steps:
85
- - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
85
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
86
86
  with:
87
87
  fetch-depth: 0
88
88
  - uses: uraimo/run-on-arch-action@5397f9e30a9b62422f302092631c99ae1effcd9e # v2.8.1
@@ -128,24 +128,3 @@ jobs:
128
128
  ASTROPY_USE_SYSTEM_ALL=1 pip3 install -v --no-build-isolation -e .[test]
129
129
  pip3 list
130
130
  python3 -m pytest
131
-
132
-
133
- test_arm64:
134
- # Native arm64 testing -- paid test runner
135
- # keep this in the weekly cron to minimize the number of jobs
136
- runs-on: linux-arm64
137
- name: Python 3.12 (arm64)
138
- # keep condition in sync with test_more_architectures
139
- if: (github.repository == 'astropy/photutils' && (github.event_name == 'schedule' || github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Arch CI')))
140
-
141
- steps:
142
- - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
143
- with:
144
- fetch-depth: 0
145
- - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
146
- with:
147
- python-version: '3.12'
148
- - name: Set up dependencies
149
- run: pip install tox
150
- - name: Run tests
151
- run: tox -e py312-test -- -n=2
@@ -31,8 +31,8 @@ jobs:
31
31
  matrix:
32
32
  include:
33
33
  - os: ubuntu-latest
34
- python: '3.10'
35
- tox_env: 'py310-test-alldeps'
34
+ python: '3.11'
35
+ tox_env: 'py311-test-oldestdeps'
36
36
  allow_failure: false
37
37
  prefix: ''
38
38
 
@@ -42,13 +42,6 @@ jobs:
42
42
  allow_failure: false
43
43
  prefix: ''
44
44
 
45
- - os: ubuntu-latest
46
- python: '3.12'
47
- tox_env: 'py312-test-alldeps-cov'
48
- toxposargs: --remote-data=any
49
- allow_failure: false
50
- prefix: ''
51
-
52
45
  - os: macos-latest
53
46
  python: '3.12'
54
47
  tox_env: 'py312-test-alldeps'
@@ -74,6 +67,20 @@ jobs:
74
67
  allow_failure: false
75
68
  prefix: ''
76
69
 
70
+ - os: ubuntu-latest
71
+ python: '3.12'
72
+ tox_env: 'py312-test-alldeps-cov'
73
+ toxposargs: --remote-data=any
74
+ allow_failure: false
75
+ prefix: ''
76
+
77
+ # cannot use alldeps: rasterio does not have a arm64 wheel
78
+ - os: ubuntu-24.04-arm
79
+ python: '3.12'
80
+ tox_env: 'py312-test'
81
+ allow_failure: false
82
+ prefix: ''
83
+
77
84
  - os: ubuntu-latest
78
85
  python: '3.12'
79
86
  tox_env: 'codestyle'
@@ -93,8 +100,8 @@ jobs:
93
100
  prefix: ''
94
101
 
95
102
  - os: ubuntu-latest
96
- python: '3.10'
97
- tox_env: 'py310-test-oldestdeps'
103
+ python: '3.13'
104
+ tox_env: 'py313-test-alldeps'
98
105
  allow_failure: false
99
106
  prefix: ''
100
107
 
@@ -107,11 +114,11 @@ jobs:
107
114
 
108
115
  steps:
109
116
  - name: Check out repository
110
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
117
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
111
118
  with:
112
119
  fetch-depth: 0
113
120
  - name: Set up Python ${{ matrix.python }}
114
- uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
121
+ uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
115
122
  with:
116
123
  python-version: ${{ matrix.python }}
117
124
  allow-prereleases: true
@@ -124,10 +131,10 @@ jobs:
124
131
  python -c "import setuptools; print(f'setuptools {setuptools.__version__}')"
125
132
  python -c "import tox; print(f'tox {tox.__version__}')"
126
133
  - name: Run tests
127
- run: tox -e ${{ matrix.tox_env }} -- ${{ matrix.toxposargs }}
134
+ run: python -m tox -e ${{ matrix.tox_env }} -- -n=2 ${{ matrix.toxposargs }}
128
135
  - name: Upload coverage to codecov
129
136
  if: ${{ contains(matrix.tox_env, '-cov') }}
130
- uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
137
+ uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1
131
138
  with:
132
139
  files: ./coverage.xml
133
140
  verbose: true
@@ -43,7 +43,7 @@ jobs:
43
43
 
44
44
  steps:
45
45
  - name: Checkout repository
46
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
46
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
47
47
 
48
48
  # Initializes the CodeQL tools for scanning.
49
49
  - name: Initialize CodeQL
@@ -32,7 +32,7 @@ jobs:
32
32
  permissions:
33
33
  contents: none
34
34
 
35
- uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish.yml@924441154cf3053034c6513d5e06c69d262fb9a6 # v1.13.0
35
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/publish.yml@8c0fde6f7e926df6ed7057255d29afa9c1ad5320 # v1.16.0
36
36
 
37
37
  if: (github.repository == 'astropy/photutils' && (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Build all wheels')))
38
38
  with:
@@ -43,24 +43,20 @@ jobs:
43
43
  test_command: pytest -p no:warnings --pyargs photutils
44
44
  targets: |
45
45
  # Linux wheels
46
- - cp310-manylinux_x86_64
47
46
  - cp311-manylinux_x86_64
48
47
  - cp312-manylinux_x86_64
49
48
  - cp313-manylinux_x86_64
50
49
 
51
50
  # MacOS X wheels
52
- - cp310*macosx_x86_64
53
51
  - cp311*macosx_x86_64
54
52
  - cp312*macosx_x86_64
55
53
  - cp313*macosx_x86_64
56
54
 
57
- - cp310*macosx_arm64
58
55
  - cp311*macosx_arm64
59
56
  - cp312*macosx_arm64
60
57
  - cp313*macosx_arm64
61
58
 
62
59
  # Windows wheels
63
- - cp310*win_amd64
64
60
  - cp311*win_amd64
65
61
  - cp312*win_amd64
66
62
  - cp313*win_amd64
@@ -55,18 +55,18 @@ repos:
55
55
  # Enforce that all noqa annotations always occur with specific codes.
56
56
 
57
57
  - repo: https://github.com/astral-sh/ruff-pre-commit
58
- rev: "v0.6.9"
58
+ rev: "v0.9.4"
59
59
  hooks:
60
60
  - id: ruff
61
61
  args: ["--fix", "--show-fixes"]
62
62
 
63
63
  - repo: https://github.com/scientific-python/cookie
64
- rev: 2024.08.19
64
+ rev: 2025.01.22
65
65
  hooks:
66
66
  - id: sp-repo-review
67
67
 
68
68
  - repo: https://github.com/pycqa/isort
69
- rev: 5.13.2
69
+ rev: 6.0.0
70
70
  hooks:
71
71
  - id: isort
72
72
  name: isort (python)
@@ -83,7 +83,7 @@ repos:
83
83
  args: ["--ignore", "E501,W503"]
84
84
 
85
85
  - repo: https://github.com/codespell-project/codespell
86
- rev: v2.3.0
86
+ rev: v2.4.1
87
87
  hooks:
88
88
  - id: codespell
89
89
  args: ["--write-changes", "--ignore-words-list", "exten, conver, fom"]
@@ -5,7 +5,7 @@ build:
5
5
  apt_packages:
6
6
  - graphviz
7
7
  tools:
8
- python: "3.11"
8
+ python: "3.12"
9
9
  jobs:
10
10
  post_checkout:
11
11
  - git fetch --shallow-since=2023-05-01 || true
@@ -1,3 +1,143 @@
1
+ 2.2.0 (2025-02-18)
2
+ ------------------
3
+
4
+ New Features
5
+ ^^^^^^^^^^^^
6
+
7
+ - ``photutils.aperture``
8
+
9
+ - Add an ``aperture_to_region`` function to convert an Aperture object
10
+ to an astropy ``Region`` or ``Regions`` object. [#2009]
11
+
12
+ - ``photutils.profiles``
13
+
14
+ - Added ``data_radius`` and ``data_profile`` attributes to the
15
+ ``RadialProfile`` class for calculating the raw radial profile.
16
+ [#2001]
17
+
18
+ - ``photutils.segmentation``
19
+
20
+ - Added a ``to_regions`` method to ``SegmentationImage`` that converts
21
+ the segment outlines to a ``regions.Regions`` object. [#2010]
22
+
23
+ Bug Fixes
24
+ ^^^^^^^^^
25
+
26
+ - ``photutils.segmentation``
27
+
28
+ - Fixed an issue where the ``SegmentationImage`` ``polygons``
29
+ attribute would raise an error if any source segment contained a
30
+ hole. [#2005]
31
+
32
+ API Changes
33
+ ^^^^^^^^^^^
34
+
35
+ - ``photutils.aperture``
36
+
37
+ - The ``theta`` attribute of ``EllipticalAperture``,
38
+ ``EllipticalAnnulus``, ``RectangularAperture``, and
39
+ ``RectangularAnnulus`` is now always returned as an angular
40
+ ``Quantity``. [#2008]
41
+
42
+
43
+ 2.1.0 (2025-01-06)
44
+ ------------------
45
+
46
+ General
47
+ ^^^^^^^
48
+
49
+ - The minimum required Python is now 3.11. [#1958]
50
+
51
+ - The minimum required gwcs is now 0.20. [#1961]
52
+
53
+ New Features
54
+ ^^^^^^^^^^^^
55
+
56
+ - ``photutils.aperture``
57
+
58
+ - The ``aperture_photometry`` output table will now include a
59
+ ``sky_center`` column if ``wcs`` is input, even if the input aperture
60
+ is not a sky aperture. [#1965]
61
+
62
+ - ``photutils.datasets``
63
+
64
+ - A ``params_map`` keyword was added to ``make_model_image`` to allow
65
+ a custom mapping between model parameter names and columns names in
66
+ the parameter table. [#1994]
67
+
68
+ - ``photutils.detection``
69
+
70
+ - The ``find_peaks`` ``border_width`` keyword can now accept two
71
+ values, indicating the border width along the the y and x edges,
72
+ respectively. [#1957]
73
+
74
+ - ``photutils.morphology``
75
+
76
+ - An optional ``mask`` keyword was added to the ``gini`` function.
77
+ [#1979]
78
+
79
+ - ``photutils.segmentation``
80
+
81
+ - Added ``deblended_labels``, ``deblended_labels_map``, and
82
+ ``deblended_labels_inverse_map`` properties to ``SegmentationImage``
83
+ to identify and map any deblended labels. [#1988]
84
+
85
+ Bug Fixes
86
+ ^^^^^^^^^
87
+
88
+ - ``photutils.segmentation``
89
+
90
+ - Fixed a bug where the table output from the ``SourceCatalog``
91
+ ``to_table`` method could have column names with a ``np.str_``
92
+ representation instead of ``str`` representation when using NumPy
93
+ 2.0+. [#1956]
94
+
95
+ - Fixed a bug to ensure that the dtype of the ``SegmentationImage``
96
+ ``labels`` always matches the image dtype. [#1986]
97
+
98
+ - Fixed a issue with the source labels after source deblending when
99
+ using ``relabel=False``. [#1988]
100
+
101
+ API Changes
102
+ ^^^^^^^^^^^
103
+
104
+ - ``photutils.aperture``
105
+
106
+ - The ``xcenter`` and ``ycenter`` columns in the table returned by
107
+ ``aperture_photometry`` no longer have (pixel) units for consistency
108
+ with other tools. [#1993]
109
+
110
+ - ``photutils.detection``
111
+
112
+ - When ``exclude_border`` is set to ``True`` in the ``DAOStarFinder``
113
+ and ``StarFinder`` classes, the excluded border region can be
114
+ different along the x and y edges if the kernel shape is rectangular.
115
+ [#1957]
116
+
117
+ - Detected sources that match interval ends for sharpness, roundness, and
118
+ maximum peak values (``sharplo``, ``sharphi``, ``roundlo``, ``roundhi``,
119
+ and ``peakmax``) are now included in the returned table of detected
120
+ sources by ``DAOStarFinder`` and ``IRAFStarFinder``. [#1978]
121
+
122
+ - Detected sources that match the maximum peak value (``peakmax``)
123
+ are now included in the returned table of detected sources by
124
+ ``StarFinder``. [#1990]
125
+
126
+ - ``photutils.morphology``
127
+
128
+ - The ``gini`` function now returns zero instead of NaN if the
129
+ (unmasked) data values sum to zero. [#1979]
130
+
131
+ - ``photutils.psf``
132
+
133
+ - The ``'viridis'`` color map is now the default in the
134
+ ``GriddedPSFModel`` ``plot_grid`` method when ``deltas=True``.
135
+ [#1954]
136
+
137
+ - The ``GriddedPSFModel`` ``plot_grid`` color bar now matches the
138
+ height of the displayed image. [#1955]
139
+
140
+
1
141
  2.0.2 (2024-10-24)
2
142
  ------------------
3
143
 
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2024, Photutils Developers
1
+ Copyright (c) 2011-2025, Photutils Developers
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without
@@ -1,9 +1,9 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: photutils
3
- Version: 2.0.2
3
+ Version: 2.2.0
4
4
  Summary: An Astropy package for source detection and photometry
5
5
  Author-email: Photutils Developers <astropy.team@gmail.com>
6
- License: Copyright (c) 2011-2024, Photutils Developers
6
+ License: Copyright (c) 2011-2025, Photutils Developers
7
7
  All rights reserved.
8
8
 
9
9
  Redistribution and use in source and binary forms, with or without
@@ -44,7 +44,7 @@ Classifier: Programming Language :: Cython
44
44
  Classifier: Programming Language :: Python
45
45
  Classifier: Programming Language :: Python :: 3
46
46
  Classifier: Topic :: Scientific/Engineering :: Astronomy
47
- Requires-Python: >=3.10
47
+ Requires-Python: >=3.11
48
48
  Description-Content-Type: text/x-rst
49
49
  License-File: LICENSE.rst
50
50
  Requires-Dist: numpy>=1.24
@@ -54,7 +54,7 @@ Provides-Extra: all
54
54
  Requires-Dist: matplotlib>=3.7; extra == "all"
55
55
  Requires-Dist: regions>=0.9; extra == "all"
56
56
  Requires-Dist: scikit-image>=0.20; extra == "all"
57
- Requires-Dist: gwcs>=0.19; extra == "all"
57
+ Requires-Dist: gwcs>=0.20; extra == "all"
58
58
  Requires-Dist: bottleneck; extra == "all"
59
59
  Requires-Dist: tqdm; extra == "all"
60
60
  Requires-Dist: rasterio; extra == "all"
@@ -67,7 +67,6 @@ Requires-Dist: photutils[all]; extra == "docs"
67
67
  Requires-Dist: sphinx; extra == "docs"
68
68
  Requires-Dist: sphinx_design; extra == "docs"
69
69
  Requires-Dist: sphinx-astropy[confv2]>=1.9.1; extra == "docs"
70
- Requires-Dist: tomli; python_version < "3.11" and extra == "docs"
71
70
 
72
71
  =========
73
72
  Photutils
@@ -77,12 +76,19 @@ Photutils
77
76
 
78
77
  |CI Status| |Codecov Status| |Latest RTD Status|
79
78
 
80
- Photutils is an `Astropy`_ package for detection and photometry of
81
- astronomical sources.
79
+ Photutils is a Python library that provides commonly-used tools
80
+ and key functionality for detecting and performing photometry of
81
+ astronomical sources. Tools are provided for background estimation,
82
+ star finding, source detection and extraction, aperture photometry,
83
+ PSF photometry, image segmentation, centroids, radial profiles,
84
+ and elliptical isophote fitting. It is an a `coordinated package
85
+ <https://www.astropy.org/affiliated/index.html>`_ of `Astropy`_ and
86
+ integrates well with other Astropy packages, making it a powerful tool
87
+ for astronomical image analysis.
82
88
 
83
89
  Please see the `online documentation
84
90
  <https://photutils.readthedocs.io>`_ for `installation instructions
85
- <https://photutils.readthedocs.io/en/stable/install.html>`_ and usage
91
+ <https://photutils.readthedocs.io/en/stable/getting_started/install.html>`_ and usage
86
92
  information.
87
93
 
88
94
 
@@ -6,12 +6,19 @@ Photutils
6
6
 
7
7
  |CI Status| |Codecov Status| |Latest RTD Status|
8
8
 
9
- Photutils is an `Astropy`_ package for detection and photometry of
10
- astronomical sources.
9
+ Photutils is a Python library that provides commonly-used tools
10
+ and key functionality for detecting and performing photometry of
11
+ astronomical sources. Tools are provided for background estimation,
12
+ star finding, source detection and extraction, aperture photometry,
13
+ PSF photometry, image segmentation, centroids, radial profiles,
14
+ and elliptical isophote fitting. It is an a `coordinated package
15
+ <https://www.astropy.org/affiliated/index.html>`_ of `Astropy`_ and
16
+ integrates well with other Astropy packages, making it a powerful tool
17
+ for astronomical image analysis.
11
18
 
12
19
  Please see the `online documentation
13
20
  <https://photutils.readthedocs.io>`_ for `installation instructions
14
- <https://photutils.readthedocs.io/en/stable/install.html>`_ and usage
21
+ <https://photutils.readthedocs.io/en/stable/getting_started/install.html>`_ and usage
15
22
  information.
16
23
 
17
24
 
@@ -0,0 +1,3 @@
1
+ .field-list ul {
2
+ padding-left: 2em;
3
+ }
@@ -15,17 +15,13 @@ See astropy.sphinx.conf for which values are set there.
15
15
 
16
16
  import os
17
17
  import sys
18
- from datetime import datetime, timezone
18
+ import tomllib
19
+ from datetime import UTC, datetime
19
20
  from importlib import metadata
20
21
  from pathlib import Path
21
22
 
22
23
  from sphinx.util import logging
23
24
 
24
- if sys.version_info < (3, 11):
25
- import tomli as tomllib
26
- else:
27
- import tomllib
28
-
29
25
  logger = logging.getLogger(__name__)
30
26
 
31
27
  try:
@@ -89,7 +85,7 @@ rst_epilog = """
89
85
  # -- Project information ------------------------------------------------------
90
86
  project = project_meta['name']
91
87
  author = project_meta['authors'][0]['name']
92
- project_copyright = f'2011-{datetime.now(tz=timezone.utc).year}, {author}'
88
+ project_copyright = f'2011-{datetime.now(tz=UTC).year}, {author}'
93
89
  github_project = 'astropy/photutils'
94
90
 
95
91
  # The version info for the project you're documenting, acts as
@@ -121,6 +117,7 @@ html_title = f'{project} {release}'
121
117
  html_show_sourcelink = False
122
118
  html_favicon = os.path.join('_static', 'photutils_logo.ico')
123
119
  html_static_path = ['_static']
120
+ html_css_files = ['custom.css'] # path relative to _static
124
121
 
125
122
  # Output file base name for HTML help builder.
126
123
  htmlhelp_basename = project + 'doc'
@@ -22,6 +22,11 @@ repository is called ``upstream``.
22
22
  sure to push all changes to the repository so that CI can run on the
23
23
  bugfix branch.
24
24
 
25
+ #. Ensure that a "What's New" page is added to the documentation for the
26
+ new release. This page should be added to the ``docs/whats_new``
27
+ directory and should be named ``<X.Y.Z>.rst``. Update the "What's
28
+ New" link on the main page (``docs/index.rst``) to the new version.
29
+
25
30
  #. Ensure that `CI tests <https://github.com/astropy/photutils/actions>`_
26
31
  are passing for the branch you are going to
27
32
  release. Also, ensure that `Read the Docs builds
@@ -24,21 +24,26 @@ or::
24
24
  >>> from photutils.aperture import CircularAperture
25
25
  >>> aper = CircularAperture((10, 20), r=4)
26
26
 
27
- In general, one should not import from specific submodules of packages.
28
- This is unnecessary and the internal organization of the package may
29
- change without notice. For example, the following is not recommended::
30
27
 
31
- >>> from photutils.aperture.circle import CircularAperture
32
- >>> aper = CircularAperture((10, 20), r=4)
28
+ .. warning::
29
+
30
+ *Do not import from specific modules of packages.* This is
31
+ unnecessary and the internal organization of the package may change
32
+ without notice. All public tools are available in the package
33
+ top-level namespace. For example, do not import from the ``circle``
34
+ module within the ``aperture`` package::
35
+
36
+ >>> from photutils.aperture.circle import CircularAperture
37
+ >>> aper = CircularAperture((10, 20), r=4)
33
38
 
34
39
 
35
40
  .. warning::
36
41
 
37
- Modules, functions, classes, and methods whose names begin with a
38
- leading underscore are considered private objects and should not be
39
- imported or accessed. If a module name in a package begins with a
40
- leading underscore, then none of its members are public, regardless
41
- of whether they begin with a leading underscore.
42
+ Modules, functions, classes, methods, and attributes whose names
43
+ begin with a leading underscore are considered private objects and
44
+ should not be imported or accessed. If a module name in a package
45
+ begins with a leading underscore, then none of its members are
46
+ public, regardless of whether they begin with a leading underscore.
42
47
 
43
48
  Private objects are not intended for public use and may change
44
49
  without notice.
@@ -7,7 +7,7 @@ Requirements
7
7
 
8
8
  Photutils has the following strict requirements:
9
9
 
10
- * `Python <https://www.python.org/>`_ 3.10 or later
10
+ * `Python <https://www.python.org/>`_ 3.11 or later
11
11
 
12
12
  * `NumPy <https://numpy.org/>`_ 1.24 or later
13
13
 
@@ -26,7 +26,7 @@ Photutils also optionally depends on other packages for some features:
26
26
  * `scikit-image <https://scikit-image.org/>`_ 0.20 or later: Required
27
27
  to deblend segmented sources.
28
28
 
29
- * `GWCS <https://gwcs.readthedocs.io/en/stable/>`_ 0.19 or later:
29
+ * `GWCS <https://gwcs.readthedocs.io/en/stable/>`_ 0.20 or later:
30
30
  Required in `~photutils.datasets.make_gwcs` to create a simple celestial
31
31
  gwcs object.
32
32
 
@@ -23,14 +23,14 @@ Photutils
23
23
  *********
24
24
 
25
25
  | **Version**: |release| -- **Date**: |today|
26
- | Useful links: :doc:`getting_started/install` | :ref:`whatsnew-2.0`
26
+ | Useful links: :doc:`getting_started/install` | :ref:`whatsnew-2.2`
27
27
 
28
28
  **Photutils** is a Python library that provides commonly-used tools
29
29
  and key functionality for detecting and performing photometry of
30
30
  astronomical sources. Tools are provided for background estimation,
31
31
  star finding, source detection and extraction, aperture photometry,
32
32
  PSF photometry, image segmentation, centroids, radial profiles,
33
- and elliptical isophote fitting. It is an a `coordinated package
33
+ and elliptical isophote fitting. It is a `coordinated package
34
34
  <https://www.astropy.org/affiliated/index.html>`_ of `Astropy`_ and
35
35
  integrates well with other Astropy packages, making it a powerful tool
36
36
  for astronomical image analysis.
@@ -0,0 +1,8 @@
1
+
2
+ ===================================================
3
+ Datasets and Simulation (:mod:`photutils.datasets`)
4
+ ===================================================
5
+
6
+ .. automodapi:: photutils.datasets
7
+ :no-heading:
8
+ :inherited-members:
@@ -0,0 +1,8 @@
1
+
2
+ ========================================================
3
+ Point-like Source Detection (:mod:`photutils.detection`)
4
+ ========================================================
5
+
6
+ .. automodapi:: photutils.detection
7
+ :no-heading:
8
+ :inherited-members:
@@ -1,8 +1,8 @@
1
1
 
2
2
  ==============================================
3
- Image Segmentation (:mod:`photutils.aperture`)
3
+ Geometry Functions (:mod:`photutils.geometry`)
4
4
  ==============================================
5
5
 
6
- .. automodapi:: photutils.segmentation
6
+ .. automodapi:: photutils.geometry
7
7
  :no-heading:
8
8
  :inherited-members: