astropop 0.9.4.dev11__tar.gz → 0.9.4.dev75__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 (146) hide show
  1. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/.github/workflows/build-n-publish.yml +0 -6
  2. astropop-0.9.4.dev75/.github/workflows/ci_devdeps.yml +41 -0
  3. astropop-0.9.4.dev75/.github/workflows/ci_workflows.yml +120 -0
  4. astropop-0.9.4.dev75/.github/workflows/code_quality_analysis.yml +106 -0
  5. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/PKG-INFO +4 -2
  6. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/README.rst +1 -1
  7. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/astrometry/astrometrynet.py +44 -130
  8. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/gaia.py +3 -1
  9. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/file_collection.py +31 -14
  10. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/framedata/_memmap.py +2 -2
  11. astropop-0.9.4.dev75/astropop/framedata/cache_manager.py +260 -0
  12. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/framedata/framedata.py +36 -44
  13. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/register.py +2 -1
  14. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/photometry/detection.py +3 -1
  15. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/py_utils.py +1 -2
  16. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/version.py +2 -2
  17. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop.egg-info/PKG-INFO +4 -2
  18. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop.egg-info/SOURCES.txt +4 -3
  19. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop.egg-info/requires.txt +2 -0
  20. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/pyproject.toml +3 -1
  21. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_astrometry.py +37 -155
  22. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_catalogs_online.py +22 -2
  23. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_filecollection.py +18 -7
  24. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata.py +21 -18
  25. astropop-0.9.4.dev75/tests/test_framedata_cachemanager.py +230 -0
  26. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_math_models.py +4 -5
  27. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_pyutils.py +2 -2
  28. astropop-0.9.4.dev75/tox.ini +54 -0
  29. astropop-0.9.4.dev11/.github/workflows/code_quality_analysis.yml +0 -180
  30. astropop-0.9.4.dev11/.github/workflows/unit-tests.yml +0 -197
  31. astropop-0.9.4.dev11/astropop/_db.py +0 -1075
  32. astropop-0.9.4.dev11/tests/test_db.py +0 -1804
  33. astropop-0.9.4.dev11/tox.ini +0 -72
  34. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/.codacy.yml +0 -0
  35. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/.gitignore +0 -0
  36. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/.readthedocs.yml +0 -0
  37. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/MANIFEST.in +0 -0
  38. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/__init__.py +0 -0
  39. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/_unit_property.py +0 -0
  40. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/astrometry/__init__.py +0 -0
  41. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/astrometry/coords_utils.py +0 -0
  42. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/astrometry/manual_wcs.py +0 -0
  43. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/__init__.py +0 -0
  44. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/_online_tools.py +0 -0
  45. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/_sources_catalog.py +0 -0
  46. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/simbad.py +0 -0
  47. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier.py +0 -0
  48. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/allwise.yml +0 -0
  49. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/apass9.yml +0 -0
  50. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/denis.yml +0 -0
  51. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/gsc242.yml +0 -0
  52. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/hip.yml +0 -0
  53. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/twomass.yml +0 -0
  54. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/tycho2.yml +0 -0
  55. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/ucac4.yml +0 -0
  56. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/ucac5.yml +0 -0
  57. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/vsx.yml +0 -0
  58. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/catalogs/vizier_catalogs/wise.yml +0 -0
  59. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/fits_utils.py +0 -0
  60. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/flags.py +0 -0
  61. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/framedata/__init__.py +0 -0
  62. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/framedata/_compat.py +0 -0
  63. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/framedata/util.py +0 -0
  64. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/__init__.py +0 -0
  65. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/_tools.py +0 -0
  66. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/imarith.py +0 -0
  67. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/imcombine.py +0 -0
  68. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/image/processing.py +0 -0
  69. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/logger.py +0 -0
  70. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/__init__.py +0 -0
  71. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/_deriv.py +0 -0
  72. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/array.py +0 -0
  73. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/hasher.py +0 -0
  74. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/models.py +0 -0
  75. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/math/physical.py +0 -0
  76. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/photometry/__init__.py +0 -0
  77. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/photometry/aperture.py +0 -0
  78. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/photometry/background.py +0 -0
  79. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/polarimetry/__init__.py +0 -0
  80. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop/testing.py +0 -0
  81. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop.egg-info/dependency_links.txt +0 -0
  82. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/astropop.egg-info/top_level.txt +0 -0
  83. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/codecov.yml +0 -0
  84. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/Makefile +0 -0
  85. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/_static/le2pol.jpeg +0 -0
  86. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/conf.py +0 -0
  87. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/data_structures/framedata.rst +0 -0
  88. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/data_structures/physical.rst +0 -0
  89. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/data_structures.rst +0 -0
  90. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/dev/pixel_convention.rst +0 -0
  91. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/index.rst +0 -0
  92. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/ipynb/astrometry_example.ipynb +0 -0
  93. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/ipynb/diy_reduction_script.ipynb +0 -0
  94. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/ipynb/online_catalogs.ipynb +0 -0
  95. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/make.bat +0 -0
  96. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reducing.rst +0 -0
  97. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/astrometry.rst +0 -0
  98. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/ccdprocessing.rst +0 -0
  99. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/imarith.rst +0 -0
  100. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/photometry.rst +0 -0
  101. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/pipelines.rst +0 -0
  102. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/polarimetry.rst +0 -0
  103. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/reduction/registering.rst +0 -0
  104. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/references.txt +0 -0
  105. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/catalog/gaia.rst +0 -0
  106. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/catalog/simbad.rst +0 -0
  107. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/catalog/vizier.rst +0 -0
  108. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/catalogs.rst +0 -0
  109. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/files.rst +0 -0
  110. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/fits_utils.rst +0 -0
  111. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/logger.rst +0 -0
  112. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/py_utils.rst +0 -0
  113. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools/testing.rst +0 -0
  114. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/tools.rst +0 -0
  115. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/docs/user_guide.rst +0 -0
  116. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/licenses/LICENSE.rst +0 -0
  117. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/licenses/TEMPLATE_LICENCE.rst +0 -0
  118. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/scripts/fitsheader_set +0 -0
  119. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/setup.cfg +0 -0
  120. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/setup.py +0 -0
  121. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/__init__.py +0 -0
  122. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/conftest.py +0 -0
  123. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_aperture.py +0 -0
  124. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_catalogs.py +0 -0
  125. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_detection.py +0 -0
  126. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_fits_utils.py +0 -0
  127. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_flags.py +0 -0
  128. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_compat.py +0 -0
  129. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_getset.py +0 -0
  130. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_io.py +0 -0
  131. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_memmap.py +0 -0
  132. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_meta.py +0 -0
  133. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_tools.py +0 -0
  134. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_framedata_utils.py +0 -0
  135. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_image_imarith.py +0 -0
  136. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_image_imcombine.py +0 -0
  137. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_image_mergers.py +0 -0
  138. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_image_processing.py +0 -0
  139. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_image_register.py +0 -0
  140. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_logger.py +0 -0
  141. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_math.py +0 -0
  142. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_physical.py +0 -0
  143. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_physical_numpyfuncs.py +0 -0
  144. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_polarimetry.py +0 -0
  145. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_testing.py +0 -0
  146. {astropop-0.9.4.dev11 → astropop-0.9.4.dev75}/tests/test_unit_property.py +0 -0
@@ -32,12 +32,6 @@ jobs:
32
32
  --sdist
33
33
  --wheel
34
34
  --outdir dist/
35
- - name: Publish package to PyPi testing
36
- if: github.ref == 'refs/heads/main'
37
- uses: pypa/gh-action-pypi-publish@release/v1
38
- with:
39
- password: ${{ secrets.TEST_PYPI_API_TOKEN }}
40
- repository_url: https://test.pypi.org/legacy/
41
35
  - name: Publish package to PyPi
42
36
  if: github.ref == 'refs/heads/main'
43
37
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,41 @@
1
+ name: CI (Development Deps)
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - 'v*'
8
+ tags:
9
+ - '*'
10
+ pull_request:
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ allowed_failures:
18
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v1
19
+ if: "!(contains(github.event.head_commit.message, '[skip ci]') || contains(github.event.head_commit.message, '[ci skip]'))"
20
+ with:
21
+ cache-path: ~/.astropy
22
+ cache-key: ${{ github.ref }}-${{ matrix.toxenv }}-astropycache
23
+ libraries: |
24
+ apt:
25
+ - tzdata
26
+ - libopenblas-base
27
+ - libopenblas-dev
28
+ envs: |
29
+ - name: (Allowed Failure) Python 3.12 with dev version of deps
30
+ linux: py313-test-devdeps-online
31
+ python-version: 3.13-dev
32
+
33
+ - name: (Allowed Failure) Python 3.13 with dev version of deps
34
+ linux: py313-test-devdeps-online
35
+ python-version: 3.12
36
+
37
+ - macos: py312-test-online
38
+ cache-key: ${{ github.ref }}-py312mac-astropycache
39
+
40
+ - windows: py312-test-online
41
+ cache-key: ${{ github.ref }}-py312win-astropycache
@@ -0,0 +1,120 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - 'v*'
8
+ tags:
9
+ - '*'
10
+ pull_request:
11
+
12
+ concurrency:
13
+ group: ${{ github.workflow }}-${{ github.ref }}
14
+ cancel-in-progress: true
15
+
16
+ jobs:
17
+ tests:
18
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v1
19
+ if: "!(contains(github.event.head_commit.message, '[skip ci]') || contains(github.event.head_commit.message, '[ci skip]'))"
20
+ with:
21
+ cache-path: ~/.astropy
22
+ envs: |
23
+ - linux: py38-test-olddeps-online
24
+ cache-key: ${{ github.ref }}-py38lin-astropycache
25
+ - linux: py39-test-online
26
+ cache-key: ${{ github.ref }}-py39lin-astropycache
27
+ - linux: py310-test-online
28
+ cache-key: ${{ github.ref }}-py310lin-astropycache
29
+ - linux: py311-test-online
30
+ cache-key: ${{ github.ref }}-py311lin-astropycache
31
+ - linux: py312-test-online
32
+ cache-key: ${{ github.ref }}-py312lin-astropycache
33
+
34
+ build_docs:
35
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@v1
36
+ if: "!(contains(github.event.head_commit.message, '[skip ci]') || contains(github.event.head_commit.message, '[ci skip]'))"
37
+ with:
38
+ cache-path: .tox
39
+ cache-key: build_docs-astropy
40
+ libraries: |
41
+ apt:
42
+ - pandoc
43
+ - graphviz
44
+ envs: |
45
+ - linux: build_docs
46
+
47
+ coverage:
48
+ name: "Conda/Coverage/Astrometry.net"
49
+ runs-on: ubuntu-latest
50
+ if: "!(contains(github.event.head_commit.message, '[skip ci]') || contains(github.event.head_commit.message, '[ci skip]'))"
51
+ steps:
52
+ - uses: actions/checkout@v3
53
+ with:
54
+ fetch-depth: 0
55
+ - name: Get Date
56
+ id: get-date
57
+ run: echo "today=$(/bin/date -u '+%Y%m%d')" >> $GITHUB_OUTPUT
58
+ shell: bash
59
+ - name: Cache conda
60
+ uses: actions/cache@v3
61
+ with:
62
+ path: ~/conda_pkgs_dir
63
+ key:
64
+ ${{ runner.os }}-${{ runner.arch }}-conda-${{ hashFiles('pyproject.toml') }}
65
+ - name: Cache env
66
+ uses: actions/cache@v3
67
+ with:
68
+ path: ${{ env.CONDA }}/envs
69
+ key:
70
+ ${{ github.ref }}-${{ runner.os }}-${{ runner.arch }}-${{ steps.get-date.outputs.today }}-conda-envs-${{ hashFiles('pyproject.toml') }}
71
+ - uses: conda-incubator/setup-miniconda@v2
72
+ with:
73
+ miniforge-variant: Mambaforge
74
+ miniforge-version: latest
75
+ activate-environment: astropop
76
+ use-mamba: true
77
+ mamba-version: "*"
78
+ channels: conda-forge,defaults
79
+ python-version: "3.12"
80
+ - name: Cache astropy cache
81
+ uses: actions/cache@v3
82
+ with:
83
+ path: ~/.astropy
84
+ # setup.cfg and pyproject.toml have versioning info that would
85
+ # impact the tox environment.
86
+ key: ${{ github.ref }}-conda-astropy
87
+ - name: Install dependencies
88
+ shell: bash -l {0}
89
+ run: |
90
+ mamba install -y -q pytest astrometry \
91
+ astropy scipy numpy matplotlib \
92
+ scikit-image scikit-learn \
93
+ sep astroquery
94
+ pip install astroscrappy
95
+ pip install coveralls .[test]
96
+ - name: Install astropop
97
+ shell: bash -l {0}
98
+ run: pip install -U .[all]
99
+ - name: Print versions
100
+ shell: bash -l {0}
101
+ run: |
102
+ conda info
103
+ conda list
104
+ - name: Run Pytest and generate coverage
105
+ shell: bash -l {0}
106
+ run: |
107
+ pytest --pyargs ./tests ./docs --remote-data --cov astropop --cov-config=./pyproject.toml
108
+ coverage xml -o ./coverage.xml
109
+ - name: Upload coverage to Codecov
110
+ uses: codecov/codecov-action@v4
111
+ with:
112
+ file: ./coverage.xml
113
+ token: ${{ secrets.CODECOV_TOKEN }}
114
+ - name: Upload coverage to Coveralls
115
+ shell: bash -l {0}
116
+ if: github.event_name != 'pull_request'
117
+ env:
118
+ COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
119
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
120
+ run: coveralls
@@ -0,0 +1,106 @@
1
+ name: "Code Style"
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+
8
+ concurrency:
9
+ group: codestyle-${{ github.ref }}
10
+ cancel-in-progress: true
11
+
12
+ jobs:
13
+ ruff:
14
+ name: ruff
15
+ runs-on: ubuntu-latest
16
+ if: github.event_name != 'pull_request'
17
+
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ with:
21
+ fetch-depth: 0
22
+ - name: Set up Python 3.12
23
+ uses: actions/setup-python@v4
24
+ with:
25
+ python-version: '3.12'
26
+ cache: 'pip'
27
+ cache-dependency-path: '**/pyproject.toml'
28
+ - name: Install base dependencies
29
+ run: |
30
+ python -m pip install --upgrade pip
31
+ python -m pip install tox
32
+ python -m pip install ruff
33
+ - name: Code Analyse
34
+ run: |
35
+ ruff check astropop
36
+ ruff check tests
37
+ ruff check --statistics astropop
38
+ ruff check --statistics tests
39
+
40
+ ruff_pull_request:
41
+ name: ruff-pull-request
42
+ runs-on: ubuntu-latest
43
+ if: github.event_name == 'pull_request'
44
+
45
+ steps:
46
+ - uses: actions/checkout@v3
47
+ with:
48
+ fetch-depth: 0
49
+ - name: Set up Python 3.12
50
+ uses: actions/setup-python@v4
51
+ with:
52
+ python-version: '3.12'
53
+ cache: pip
54
+ cache-dependency-path: '**/pyproject.toml'
55
+ - uses: technote-space/get-diff-action@v6
56
+ with:
57
+ PATTERNS: |
58
+ astropop/**/*.py
59
+ !tests/*.py
60
+ - name: Print DIFF
61
+ run: |
62
+ echo "GIT_DIFF: ${{ env.GIT_DIFF }}"
63
+ echo "GIT_DIFF_FILTERED: ${{ env.GIT_DIFF_FILTERED }}"
64
+ - name: Install base dependencies
65
+ run: |
66
+ python -m pip install --upgrade pip
67
+ python -m pip install ruff
68
+ - name: Run pycodestyle
69
+ run: |
70
+ ruff check ${{ env.GIT_DIFF_FILTERED }}
71
+ ruff check --statistics ${{ env.GIT_DIFF_FILTERED }}
72
+ if: env.GIT_DIFF_FILTERED
73
+
74
+ prospector_pull_request:
75
+ name: prospector-pull-request
76
+ runs-on: ubuntu-latest
77
+ if: github.event_name == 'pull_request'
78
+
79
+ steps:
80
+ - uses: actions/checkout@v3
81
+ with:
82
+ fetch-depth: 0
83
+ - name: Set up Python 3.12
84
+ uses: actions/setup-python@v4
85
+ with:
86
+ python-version: '3.12'
87
+ cache: 'pip'
88
+ cache-dependency-path: '**/pyproject.toml'
89
+ - uses: technote-space/get-diff-action@v6
90
+ with:
91
+ PATTERNS: |
92
+ astropop/**/*.py
93
+ !tests/*.py
94
+ - name: Print DIFF
95
+ run: |
96
+ echo "GIT_DIFF: ${{ env.GIT_DIFF }}"
97
+ echo "GIT_DIFF_FILTERED: ${{ env.GIT_DIFF_FILTERED }}"
98
+ - name: Install base dependencies
99
+ run: |
100
+ python -m pip install --upgrade pip
101
+ python -m pip install prospector pylint pyflakes bandit
102
+ python -m pip install .[all]
103
+ - name: Code Analyse
104
+ continue-on-error: true
105
+ run: prospector -w pyflakes -w bandit -F --no-autodetect --doc-warnings ${{ env.GIT_DIFF_FILTERED}}
106
+ if: env.GIT_DIFF_FILTERED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: astropop
3
- Version: 0.9.4.dev11
3
+ Version: 0.9.4.dev75
4
4
  Summary: Astronomical Polarimetry and Photometry Pipeline
5
5
  Author-email: Julio Campagnolo <julio.campagnolo@cefet-rj.br>
6
6
  License: BSD-3-Clause
@@ -32,6 +32,8 @@ Requires-Dist: astroscrappy
32
32
  Requires-Dist: astroalign
33
33
  Requires-Dist: tqdm
34
34
  Requires-Dist: nest-asyncio
35
+ Requires-Dist: dbastable
36
+ Requires-Dist: platformdirs
35
37
  Provides-Extra: all
36
38
  Requires-Dist: matplotlib; extra == "all"
37
39
  Provides-Extra: test
@@ -194,7 +196,7 @@ Documentation
194
196
 
195
197
  Documentation (not complete yet) can be found at `astropop.readthedocs.io <https://astropop.readthedocs.io>`_
196
198
 
197
- .. |GHAction Status| image:: https://github.com/sparc4-dev/astropop/actions/workflows/unit-tests.yml/badge.svg
199
+ .. |GHAction Status| image:: https://github.com/sparc4-dev/astropop/actions/workflows/ci_workflows.yml/badge.svg
198
200
  :target: https://github.com/sparc4-dev/astropop/actions
199
201
  :alt: Astropop's Github CI Status
200
202
 
@@ -143,7 +143,7 @@ Documentation
143
143
 
144
144
  Documentation (not complete yet) can be found at `astropop.readthedocs.io <https://astropop.readthedocs.io>`_
145
145
 
146
- .. |GHAction Status| image:: https://github.com/sparc4-dev/astropop/actions/workflows/unit-tests.yml/badge.svg
146
+ .. |GHAction Status| image:: https://github.com/sparc4-dev/astropop/actions/workflows/ci_workflows.yml/badge.svg
147
147
  :target: https://github.com/sparc4-dev/astropop/actions
148
148
  :alt: Astropop's Github CI Status
149
149
 
@@ -9,6 +9,7 @@ import os
9
9
  import shutil
10
10
  from subprocess import CalledProcessError
11
11
  import copy
12
+ from packaging import version
12
13
  from tempfile import NamedTemporaryFile, mkdtemp
13
14
  import warnings
14
15
 
@@ -27,11 +28,37 @@ from ..py_utils import run_command, check_number
27
28
 
28
29
  __all__ = ['AstrometrySolver', 'solve_astrometry_xy', 'solve_astrometry_image',
29
30
  'solve_astrometry_framedata', 'create_xyls',
30
- 'AstrometryNetUnsolvedField']
31
+ 'AstrometryNetUnsolvedField', 'SolveFieldCommand']
31
32
 
32
33
 
33
34
  _solve_field = shutil.which('solve-field')
34
35
 
36
+
37
+ class SolveFieldCommand:
38
+ """Astrometry.net solve field check and run command."""
39
+ _version = None
40
+
41
+ def __init__(self, command=_solve_field):
42
+ if isinstance(command, SolveFieldCommand):
43
+ self._version = command._version
44
+ command = command._command
45
+ elif command is None or not os.path.exists(command):
46
+ raise FileNotFoundError('solve-field command not found.')
47
+ self._command = command
48
+
49
+ @property
50
+ def version(self):
51
+ """Return the version of the solve-field command."""
52
+ if self._version is None:
53
+ _, sout, _ = run_command([self._command, '--version'])
54
+ self._version = version.parse(sout[0])
55
+ return self._version
56
+
57
+ def run(self, args, **kwargs):
58
+ """Run the solve-field command."""
59
+ return run_command([self._command, *args], **kwargs)
60
+
61
+
35
62
  _center_help = 'only search in indexes within `radius` of the field center ' \
36
63
  'given by `ra` and `dec`'
37
64
  solve_field_params = {
@@ -222,35 +249,13 @@ solve_field_params = {
222
249
  'To astrometry.cfg file. If no scale estimate is given, use these '
223
250
  'limits on field width in deg.'
224
251
  ),
225
- 'inparallel': (
226
- '<bool>',
227
- 'To astrometry.cfg file. Check indexes in parallel. Only enable it if '
228
- 'you have memory to store all indexes.'
229
- ),
230
- 'index': (
231
- '<string or list(string)>',
232
- 'To astrometry.cfg file. Explicitly list the indices to load.'
233
- ' Disables ``autoindex``'
234
- ),
235
- 'autoindex': (
236
- '<bool>',
237
- 'To astrometry.cfg file. Load any indices found in the directories '
238
- 'listed.'
239
- ),
240
- 'add_path': (
252
+ 'index-dir': (
241
253
  '<string or list(string)>',
242
- 'To astrometry.cfg file. Add a location of astrometry.net index files.'
254
+ 'Add a location of astrometry.net index files.'
243
255
  ' ``astrometry-engine`` will search index files in all listed folders.'
244
256
  ' Additive, do not override defaults.'
245
- ),
246
- 'depths': (
247
- '<list(int)>',
248
- 'To astrometry.cfg file. If no depths are given, use these.'
249
257
  )
250
258
  }
251
- # These are the parameters that can be set in the astrometry.cfg file
252
- _conf_file = ['inparallel', 'minwidth', 'maxwidth', 'depths',
253
- 'add_path', 'autoindex', 'index']
254
259
 
255
260
 
256
261
  def get_options_help():
@@ -473,17 +478,17 @@ class AstrometrySolver():
473
478
  Explicitly list the indices to load.
474
479
  """
475
480
 
476
- def __init__(self, solve_field=None, config=None, config_file=None,
477
- defaults=None, keep_files=False):
481
+ def __init__(self, solve_field=_solve_field, defaults=None,
482
+ keep_files=False):
478
483
  # declare the defaults here to be safer
479
484
  self._defaults = {'no-plots': None, 'overwrite': None}
480
485
  if defaults is None:
481
486
  defaults = {}
482
487
  self._defaults.update(defaults)
483
488
 
484
- self.config = self._read_config(config_file, config)
485
-
486
- self._command = solve_field or _solve_field
489
+ self._command = SolveFieldCommand(solve_field)
490
+ if self._command.version < version.parse('0.95'):
491
+ raise ValueError('Astrometry.net version must be at least 0.95.')
487
492
  self._keep = keep_files
488
493
 
489
494
  def solve_field(self, filename, options=None, output_dir=None, **kwargs):
@@ -567,103 +572,9 @@ class AstrometrySolver():
567
572
 
568
573
  return args
569
574
 
570
- def _read_config(self, fname=None, config=None):
571
- """Read the default configuration file and return the config."""
572
-
573
- if fname is None:
574
- prefix = os.path.dirname(os.path.dirname(_solve_field))
575
- fname = os.path.join(prefix, 'etc', 'astrometry.cfg')
576
- default = open(fname, 'r')
577
-
578
- cfg = {'inparallel': False, 'autoindex': True}
579
- for line in default.readlines():
580
- # just use line before "#"
581
- line = line.split("#")[0].strip()
582
- if line == "":
583
- continue
584
- param = line.split(" ")[0]
585
- argument = line[len(param)+1:].strip()
586
- if argument == "":
587
- argument = True
588
- if param == 'depths':
589
- argument = [int(i) for i in argument.split(" ") if i.strip()]
590
- if param == 'add_path' or param == 'index':
591
- if param not in cfg:
592
- cfg[param] = []
593
- cfg[param].append(argument)
594
- else:
595
- cfg[param] = argument
596
-
597
- if config is not None:
598
- for k, v in config.items():
599
- if k == 'add_path' or k == 'index':
600
- if np.isscalar(v):
601
- v = [v]
602
- cfg[k].extend(v)
603
- else:
604
- cfg[k] = v
605
-
606
- return cfg
607
-
608
- def _updated_config(self, config=None):
609
- """Return a copy of the self.config updated by another config dict.
610
-
611
- Config is updated using config parameter. All present parameters are
612
- overwritten.
613
- """
614
- cfg = self.config.copy()
615
- if config is not None:
616
- # # indexes deactivate 'autoindex'
617
- # if 'index' in config:
618
- # cfg['autoindex'] = False
619
- if 'add_path' in config:
620
- cfg['add_path'].extend(np.atleast_1d(config.pop('add_path')))
621
- cfg.update(config)
622
- return config
623
-
624
- def _write_config(self, fname, config=None):
625
- """Create the astrometry.cfg file for the run."""
626
- # write the new cfg
627
- f = open(fname, 'w')
628
- config = config or self.config
629
- for k, v in config.items():
630
- if k in ['inparallel', 'autoindex']:
631
- # These keys are bool. Only write if True
632
- if v:
633
- f.write(f'{k}\n')
634
- elif k in ['index', 'add_path']:
635
- # multiple entries in the file
636
- for i in v:
637
- f.write(f'{k} {i}\n')
638
- elif k == 'depths':
639
- # detphs requires a list of strings
640
- f.write(f'{k} {" ".join([str(i) for i in v])}\n')
641
- else:
642
- f.write(f'{k} {v}\n')
643
- f.close()
644
-
645
- def _pop_config(self, options):
646
- """Pop the config from options."""
647
- options = options.copy()
648
- cfg = {}
649
- for i in _conf_file:
650
- if i in options:
651
- cfg[i] = options.pop(i)
652
- return options, cfg
653
-
654
575
  def _get_args(self, root, fname, options, output_dir,
655
576
  correspond):
656
- args = [self._command, fname, '--dir', output_dir]
657
- # if any of the options is from config file, rewrite it.
658
- if any([i in _conf_file for i in options.keys()]):
659
- # pop some options and put them in config
660
- options, cfg = self._pop_config(options)
661
- cfg = self._updated_config(cfg)
662
- config_file = os.path.join(output_dir, root + '.cfg')
663
- logger.debug('Creating new configuration file.')
664
- self._write_config(config_file, cfg)
665
- args += ['--config', config_file]
666
-
577
+ args = [fname, '--dir', output_dir]
667
578
  args += self._parse_options(options)
668
579
  args += ['--corr', correspond]
669
580
  return args
@@ -685,7 +596,7 @@ class AstrometrySolver():
685
596
  correspond=correspond)
686
597
 
687
598
  try:
688
- process, _, _ = run_command(args, **kwargs)
599
+ process, _, _ = self._command.run(args, **kwargs)
689
600
  # .solved file must exist and contain a binary one
690
601
  with open(solved_file, 'rb') as fd:
691
602
  if ord(fd.read()) != 1:
@@ -749,7 +660,7 @@ def create_xyls(fname, x, y, flux, imagew, imageh, header=None, dtype='f8'):
749
660
 
750
661
  def solve_astrometry_xy(x, y, flux, width, height,
751
662
  image_header=None, options=None,
752
- command=None,
663
+ command=_solve_field,
753
664
  **kwargs):
754
665
  """Solve astrometry from a (x,y) sources list using astrometry.net.
755
666
 
@@ -776,7 +687,7 @@ def solve_astrometry_xy(x, y, flux, width, height,
776
687
  - radius: maximum search radius
777
688
  - scale: pixel scale in arcsec/pixel
778
689
  - tweak-order: SIP order to fit
779
- - index-path: path to index files
690
+ - index-dir: path to index files
780
691
  command: str
781
692
  Full path of astrometry.net ``solve-field`` command.
782
693
 
@@ -799,7 +710,7 @@ def solve_astrometry_xy(x, y, flux, width, height,
799
710
  return solver.solve_field(f.name, options=options, **kwargs)
800
711
 
801
712
 
802
- def solve_astrometry_framedata(frame, options=None, command=None,
713
+ def solve_astrometry_framedata(frame, options=None, command=_solve_field,
803
714
  **kwargs):
804
715
  """Solve astrometry from a `~astropop.framedata.FrameData`.
805
716
 
@@ -815,6 +726,7 @@ def solve_astrometry_framedata(frame, options=None, command=None,
815
726
  - radius: maximum search radius
816
727
  - scale: pixel scale in arcsec/pixel
817
728
  - tweak-order: SIP order to fit
729
+ - index-dir: path to index files
818
730
  command: str
819
731
  Full path of astrometry.net ``solve-field`` command.
820
732
 
@@ -846,6 +758,7 @@ def solve_astrometry_image(filename, options=None, command=_solve_field,
846
758
  - radius: maximum search radius
847
759
  - scale: pixel scale in arcsec/pixel
848
760
  - tweak-order: SIP order to fit
761
+ - index-dir: path to index files
849
762
  command: str
850
763
  Full path of astrometry.net ``solve-field`` command.
851
764
 
@@ -859,7 +772,7 @@ def solve_astrometry_image(filename, options=None, command=_solve_field,
859
772
  return solver.solve_field(filename, options=options, **kwargs)
860
773
 
861
774
 
862
- def solve_astrometry_hdu(hdu, options=None, command=None, **kwargs):
775
+ def solve_astrometry_hdu(hdu, options=None, command=_solve_field, **kwargs):
863
776
  """Solve astrometry from a `~astropy.fits.ImageHDU` using astrometry.net.
864
777
 
865
778
  Parameters
@@ -874,6 +787,7 @@ def solve_astrometry_hdu(hdu, options=None, command=None, **kwargs):
874
787
  - radius: maximum search radius
875
788
  - scale: pixel scale in arcsec/pixel
876
789
  - tweak-order: SIP order to fit
790
+ - index-dir: path to index files
877
791
  command: str
878
792
  Full path of astrometry.net ``solve-field`` command.
879
793
 
@@ -145,7 +145,9 @@ class GaiaDR3SourcesCatalog(_OnlineSourcesCatalog):
145
145
  radius=self._radius.to(u.deg).value,
146
146
  columns=self._columns)
147
147
  sk = SkyCoord(self._query['ra'], self._query['dec'],
148
- obstime=Time(self._query['ref_epoch'], format='jyear'))
148
+ obstime=Time(self._query['ref_epoch'], format='jyear'),
149
+ pm_ra_cosdec=self._query['pmra'],
150
+ pm_dec=self._query['pmdec'])
149
151
  ids = np.array([string_fix(i) for i in self._query['DESIGNATION']])
150
152
 
151
153
  # perform magnitude filtering only if available