acstools 3.8.0__tar.gz → 3.8.2__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 (97) hide show
  1. acstools-3.8.2/.github/workflows/build.yml +72 -0
  2. {acstools-3.8.0 → acstools-3.8.2}/.github/workflows/ci_workflows.yml +5 -4
  3. {acstools-3.8.0 → acstools-3.8.2}/.github/workflows/open_actions.yml +1 -1
  4. {acstools-3.8.0 → acstools-3.8.2}/.github/workflows/predeps_workflows.yml +1 -1
  5. {acstools-3.8.0 → acstools-3.8.2}/PKG-INFO +2 -2
  6. {acstools-3.8.0 → acstools-3.8.2}/acstools/acsphotcte.py +1 -1
  7. {acstools-3.8.0 → acstools-3.8.2}/acstools/satdet.py +11 -9
  8. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/test_wfc_satdet.py +14 -0
  9. {acstools-3.8.0 → acstools-3.8.2}/acstools/utils_findsat_mrt.py +10 -2
  10. {acstools-3.8.0 → acstools-3.8.2}/acstools/version.py +3 -3
  11. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/PKG-INFO +2 -2
  12. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/SOURCES.txt +3 -1
  13. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/requires.txt +1 -1
  14. acstools-3.8.2/acstools.egg-info/scm_file_list.json +88 -0
  15. acstools-3.8.2/acstools.egg-info/scm_version.json +8 -0
  16. {acstools-3.8.0 → acstools-3.8.2}/conftest.py +2 -2
  17. {acstools-3.8.0 → acstools-3.8.2}/pyproject.toml +5 -4
  18. acstools-3.8.0/.github/workflows/publish-to-pypi.yml +0 -64
  19. {acstools-3.8.0 → acstools-3.8.2}/.bandit.yaml +0 -0
  20. {acstools-3.8.0 → acstools-3.8.2}/.flake8 +0 -0
  21. {acstools-3.8.0 → acstools-3.8.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {acstools-3.8.0 → acstools-3.8.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {acstools-3.8.0 → acstools-3.8.2}/.github/ISSUE_TEMPLATE/question.md +0 -0
  24. {acstools-3.8.0 → acstools-3.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  25. {acstools-3.8.0 → acstools-3.8.2}/.github/dependabot.yml +0 -0
  26. {acstools-3.8.0 → acstools-3.8.2}/.github/labeler.yml +0 -0
  27. {acstools-3.8.0 → acstools-3.8.2}/.github/workflows/codeql-analysis.yml +0 -0
  28. {acstools-3.8.0 → acstools-3.8.2}/.gitignore +0 -0
  29. {acstools-3.8.0 → acstools-3.8.2}/.readthedocs.yaml +0 -0
  30. {acstools-3.8.0 → acstools-3.8.2}/CHANGES.rst +0 -0
  31. {acstools-3.8.0 → acstools-3.8.2}/CITATION.md +0 -0
  32. {acstools-3.8.0 → acstools-3.8.2}/CODE_OF_CONDUCT.md +0 -0
  33. {acstools-3.8.0 → acstools-3.8.2}/LICENSE.md +0 -0
  34. {acstools-3.8.0 → acstools-3.8.2}/MANIFEST.in +0 -0
  35. {acstools-3.8.0 → acstools-3.8.2}/README.rst +0 -0
  36. {acstools-3.8.0 → acstools-3.8.2}/acstools/__init__.py +0 -0
  37. {acstools-3.8.0 → acstools-3.8.2}/acstools/acs2d.py +0 -0
  38. {acstools-3.8.0 → acstools-3.8.2}/acstools/acs_destripe.py +0 -0
  39. {acstools-3.8.0 → acstools-3.8.2}/acstools/acs_destripe_plus.py +0 -0
  40. {acstools-3.8.0 → acstools-3.8.2}/acstools/acsccd.py +0 -0
  41. {acstools-3.8.0 → acstools-3.8.2}/acstools/acscte.py +0 -0
  42. {acstools-3.8.0 → acstools-3.8.2}/acstools/acscteforwardmodel.py +0 -0
  43. {acstools-3.8.0 → acstools-3.8.2}/acstools/acsrej.py +0 -0
  44. {acstools-3.8.0 → acstools-3.8.2}/acstools/acssum.py +0 -0
  45. {acstools-3.8.0 → acstools-3.8.2}/acstools/acszpt.py +0 -0
  46. {acstools-3.8.0 → acstools-3.8.2}/acstools/calacs.py +0 -0
  47. {acstools-3.8.0 → acstools-3.8.2}/acstools/data/polarizer_tables.yaml +0 -0
  48. {acstools-3.8.0 → acstools-3.8.2}/acstools/data/rt_line_kernel_width15.fits +0 -0
  49. {acstools-3.8.0 → acstools-3.8.2}/acstools/data/rt_line_kernel_width3.fits +0 -0
  50. {acstools-3.8.0 → acstools-3.8.2}/acstools/data/rt_line_kernel_width7.fits +0 -0
  51. {acstools-3.8.0 → acstools-3.8.2}/acstools/findsat_mrt.py +0 -0
  52. {acstools-3.8.0 → acstools-3.8.2}/acstools/focus_diverse_epsfs.py +0 -0
  53. {acstools-3.8.0 → acstools-3.8.2}/acstools/polarization_tools.py +0 -0
  54. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/.gitattributes +0 -0
  55. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/__init__.py +0 -0
  56. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/ja0x03ojq_flt.fits +0 -0
  57. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jb5g05ubq_flt.fits +0 -0
  58. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc2z03cvq_blv_tmp.fits +0 -0
  59. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc5001soq_flt.fits +0 -0
  60. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc8m10syq_flc.fits +0 -0
  61. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc8m32j5q_flc.fits +0 -0
  62. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc8o04ghq_flt.fits +0 -0
  63. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc8o04ghq_mask1.fits +0 -0
  64. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/input/jc8o04ghq_mask2.fits +0 -0
  65. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/ja0x03ojq_flt_ref.fits +0 -0
  66. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jb5g05ubq_flt_ref.fits +0 -0
  67. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jc2z03cvq_blv_tmp_ref.fits +0 -0
  68. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jc5001soq_flt_ref.fits +0 -0
  69. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jc8m10syq_flc_ref.fits +0 -0
  70. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jc8m32j5q_flc_mask_ref.fits +0 -0
  71. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/data/truth/jc8o04ghq_flt_ref.fits +0 -0
  72. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/helpers.py +0 -0
  73. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/test_polarization.py +0 -0
  74. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/test_wfc_destripe.py +0 -0
  75. {acstools-3.8.0 → acstools-3.8.2}/acstools/tests/test_wfc_findsat_mrt.py +0 -0
  76. {acstools-3.8.0 → acstools-3.8.2}/acstools/utils_calib.py +0 -0
  77. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/dependency_links.txt +0 -0
  78. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/entry_points.txt +0 -0
  79. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/not-zip-safe +0 -0
  80. {acstools-3.8.0 → acstools-3.8.2}/acstools.egg-info/top_level.txt +0 -0
  81. {acstools-3.8.0 → acstools-3.8.2}/doc/Makefile +0 -0
  82. {acstools-3.8.0 → acstools-3.8.2}/doc/make.bat +0 -0
  83. {acstools-3.8.0 → acstools-3.8.2}/doc/source/_static/stsci_pri_combo_mark_white.png +0 -0
  84. {acstools-3.8.0 → acstools-3.8.2}/doc/source/_templates/.gitignore +0 -0
  85. {acstools-3.8.0 → acstools-3.8.2}/doc/source/acs_destripe.rst +0 -0
  86. {acstools-3.8.0 → acstools-3.8.2}/doc/source/acsphotcte.rst +0 -0
  87. {acstools-3.8.0 → acstools-3.8.2}/doc/source/acszpt.rst +0 -0
  88. {acstools-3.8.0 → acstools-3.8.2}/doc/source/calacs.rst +0 -0
  89. {acstools-3.8.0 → acstools-3.8.2}/doc/source/conf.py +0 -0
  90. {acstools-3.8.0 → acstools-3.8.2}/doc/source/findsat_mrt.rst +0 -0
  91. {acstools-3.8.0 → acstools-3.8.2}/doc/source/focus_diverse_epsfs.rst +0 -0
  92. {acstools-3.8.0 → acstools-3.8.2}/doc/source/index.rst +0 -0
  93. {acstools-3.8.0 → acstools-3.8.2}/doc/source/polarization_tools.rst +0 -0
  94. {acstools-3.8.0 → acstools-3.8.2}/doc/source/satdet.rst +0 -0
  95. {acstools-3.8.0 → acstools-3.8.2}/doc/source/utils_calib.rst +0 -0
  96. {acstools-3.8.0 → acstools-3.8.2}/setup.cfg +0 -0
  97. {acstools-3.8.0 → acstools-3.8.2}/tox.ini +0 -0
@@ -0,0 +1,72 @@
1
+ name: build
2
+
3
+ on:
4
+ pull_request:
5
+ # We also want this workflow triggered if the 'Build wheels'
6
+ # label is added or present when PR is updated
7
+ types:
8
+ - synchronize
9
+ - labeled
10
+ release:
11
+ types:
12
+ - released
13
+ workflow_dispatch:
14
+
15
+ concurrency:
16
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
17
+ cancel-in-progress: true
18
+
19
+ permissions: {}
20
+
21
+ # NOTE: Cannot use OpenAstronomy workflow due to
22
+ # https://github.com/OpenAstronomy/github-actions-workflows/issues/168
23
+ jobs:
24
+ build:
25
+ if: (github.repository == 'spacetelescope/acstools' && (github.event_name == 'release' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'Build wheels')))
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
29
+ with:
30
+ fetch-tags: true
31
+ fetch-depth: 0
32
+ lfs: false
33
+ persist-credentials: false
34
+ - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
35
+ with:
36
+ python-version: "3.11"
37
+ - name: Build the package
38
+ run: |
39
+ python -m pip install build twine
40
+ python -m build --sdist --wheel .
41
+ ls -lh dist
42
+ python -m twine check --strict dist/*
43
+ - name: Upload build artifacts
44
+ if: (github.event_name == 'release' || github.event_name == 'workflow_dispatch')
45
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
46
+ with:
47
+ name: additional-pylons
48
+ path: ./dist/
49
+ publish:
50
+ if: (github.repository == 'spacetelescope/acstools') && (github.event_name == 'release') && (github.event.action == 'released')
51
+ needs: [build]
52
+ runs-on: ubuntu-latest
53
+ permissions:
54
+ id-token: write
55
+ attestations: write
56
+ # To add required reviewers before deployment,
57
+ # edit the protection rules in GitHub Settings:
58
+ # Settings > Environments > pypi > Add required reviewers
59
+ environment:
60
+ name: pypi
61
+ url: https://pypi.org/p/acstools
62
+ steps:
63
+ - uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
64
+ with:
65
+ pattern: additional-pylons*
66
+ path: dist/
67
+ merge-multiple: true
68
+ - uses: actions/attest-build-provenance@96278af6caaf10aea03fd8d33a09a777ca52d62f # v3.2.0
69
+ with:
70
+ subject-path: "dist/*"
71
+ # To upload to PyPI without a token, add this workflow file as a Trusted Publisher in the project settings on the PyPI website
72
+ - uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
@@ -3,6 +3,7 @@ name: CI
3
3
  on:
4
4
  push:
5
5
  pull_request:
6
+ workflow_dispatch:
6
7
  schedule:
7
8
  # Weekly Tuesday 6 AM build
8
9
  # * is a special character in YAML so you have to quote this string
@@ -21,7 +22,7 @@ jobs:
21
22
  runs-on: ubuntu-latest
22
23
  steps:
23
24
  - name: Check base branch
24
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
25
+ uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
25
26
  if: github.event_name == 'pull_request'
26
27
  with:
27
28
  script: |
@@ -35,7 +36,7 @@ jobs:
35
36
 
36
37
  tests:
37
38
  needs: initial_checks
38
- uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@e97344095b099e1d729fe97429078c9975921d8a # v2.6.2
39
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@2835f0cacddf3f8de198db9afdb5354a5cebe0ef # v2.6.3
39
40
  with:
40
41
  setenv: |
41
42
  jref: "https://ssb.stsci.edu/trds_open/jref"
@@ -57,8 +58,8 @@ jobs:
57
58
 
58
59
  - name: Python 3.10 with remote data and all dependencies
59
60
  linux: py310-test-alldeps
60
- posargs: --remote-data -v
61
+ posargs: --remote-data -v --durations=0
61
62
 
62
63
  - name: Python 3.14 with remote data and dev dependencies
63
64
  linux: py314-test-devdeps
64
- posargs: --remote-data -v
65
+ posargs: --remote-data -v --durations=0
@@ -17,7 +17,7 @@ jobs:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
19
  - name: Label PR
20
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
20
+ uses: actions/labeler@f27b608878404679385c85cfa523b85ccb86e213 # v6.1.0
21
21
  if: github.event_name == 'pull_request_target' || github.event_name == 'pull_request'
22
22
  with:
23
23
  repo-token: "${{ secrets.GITHUB_TOKEN }}"
@@ -12,7 +12,7 @@ permissions:
12
12
 
13
13
  jobs:
14
14
  rc_tests:
15
- uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@e97344095b099e1d729fe97429078c9975921d8a # v2.6.2
15
+ uses: OpenAstronomy/github-actions-workflows/.github/workflows/tox.yml@2835f0cacddf3f8de198db9afdb5354a5cebe0ef # v2.6.3
16
16
  with:
17
17
  setenv: |
18
18
  jref: "https://ssb.stsci.edu/trds_open/jref"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acstools
3
- Version: 3.8.0
3
+ Version: 3.8.2
4
4
  Summary: Python Tools for HST ACS
5
5
  Author: Matt Davis, Warren Hack, Norman Grogin, Pey Lian Lim, Sara Ogaz, Leonardo Ubeda, Mihai Cara, David Borncamp, Nathan Miles, Tyler Desjardins, Jenna Ryon, David Stark, Gagandeep Anand, Yotam Cohen
6
6
  License-Expression: BSD-3-Clause
@@ -26,7 +26,7 @@ Requires-Dist: PyYAML
26
26
  Provides-Extra: all
27
27
  Requires-Dist: matplotlib; extra == "all"
28
28
  Requires-Dist: scipy; extra == "all"
29
- Requires-Dist: scikit-image; extra == "all"
29
+ Requires-Dist: scikit-image>=0.11; extra == "all"
30
30
  Requires-Dist: stsci.tools; extra == "all"
31
31
  Requires-Dist: stsci.imagestats; extra == "all"
32
32
  Requires-Dist: photutils; extra == "all"
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  """
3
3
  The ACS Photometric CTE API is a programmatic interface for the
4
- ACS Photometric CTE Webtool (currently unavailable).
4
+ `ACS Photometric CTE Webtool <https://acsphotometriccte.stsci.edu>`_.
5
5
  The API is a cloud-based service that employs a serverless approach on AWS
6
6
  with API Gateway and Lambda to compute the photometric CTE corrections
7
7
  using the model described in `ACS ISR 2022-06 <https://ui.adsabs.harvard.edu/abs/2022acs..rept....6C/abstract>`_.
@@ -157,11 +157,10 @@ try:
157
157
  from skimage.feature import canny
158
158
  except ImportError:
159
159
  HAS_OPDEP = False
160
+ SKIMAGE_LT_0_26 = True
160
161
  else:
161
- if minversion(skimage, '0.11'):
162
- HAS_OPDEP = True
163
- else:
164
- HAS_OPDEP = False
162
+ HAS_OPDEP = True
163
+ SKIMAGE_LT_0_26 = not minversion(skimage, "0.26.0")
165
164
 
166
165
  try:
167
166
  import matplotlib.pyplot as plt
@@ -170,8 +169,8 @@ except ImportError:
170
169
  warnings.warn('matplotlib not found, plotting is disabled',
171
170
  AstropyUserWarning)
172
171
 
173
- __version__ = '0.3.3'
174
- __vdate__ = '11-Jul-2017'
172
+ __version__ = '0.3.4'
173
+ __vdate__ = '12-May-2026'
175
174
  __author__ = 'David Borncamp, Pey Lian Lim'
176
175
  __all__ = ['detsat', 'make_mask']
177
176
 
@@ -209,13 +208,16 @@ def _detsat_one(filename, ext, sigma=2.0, low_thresh=0.1, h_thresh=0.5,
209
208
 
210
209
  # get the edges
211
210
  immax = np.max(image)
212
- edge = canny(image, sigma=sigma,
211
+ edge = canny(image, sigma=sigma, mode='constant',
213
212
  low_threshold=immax * low_thresh,
214
213
  high_threshold=immax * h_thresh)
215
214
 
216
215
  # clean up the small objects, will make less noise
217
- morph.remove_small_objects(edge, min_size=small_edge, connectivity=8,
218
- out=edge)
216
+ if SKIMAGE_LT_0_26:
217
+ rso_kwargs = {"min_size": small_edge}
218
+ else:
219
+ rso_kwargs = {"max_size": small_edge - 1}
220
+ morph.remove_small_objects(edge, connectivity=8, out=edge, **rso_kwargs)
219
221
 
220
222
  # create an array of angles from 0 to 180, exactly 0 will get bad columns
221
223
  # but it is unlikely that a satellite will be exactly at 0 degrees, so
@@ -15,6 +15,20 @@ pytest.importorskip("skimage")
15
15
  class TestSatDet(BaseACSTOOLS):
16
16
  detector = 'wfc'
17
17
 
18
+ def test_detsat_runs(self):
19
+ """Test that satellite trail detection runs without error."""
20
+ rootname = 'jc8m10syq'
21
+ inputfile = rootname + '_flc.fits' # This is modified in-place
22
+
23
+ # Prepare input file.
24
+ self.get_input_file(inputfile, skip_ref=True)
25
+
26
+ # Run detsat without multiprocessing but
27
+ # output is non-deterministic, so we just check roughly.
28
+ res, err = satdet.detsat(inputfile, chips=[1, 4], n_processes=1, verbose=False)
29
+ assert list(err) == [], err[('jc8m10syq_flc.fits', 1)]
30
+ assert sorted(res) == [('jc8m10syq_flc.fits', 1), ('jc8m10syq_flc.fits', 4)]
31
+
18
32
  def test_trail_mask(self):
19
33
  """Mask satellite trail on WFC EXT 6."""
20
34
 
@@ -14,12 +14,20 @@ from astropy.nddata import Cutout2D, block_replicate
14
14
  from astropy.stats import sigma_clip
15
15
  from astropy.table import Table, vstack
16
16
  from astropy.utils.exceptions import AstropyUserWarning
17
+ from astropy.utils.introspection import minversion
17
18
 
18
19
  # check for scikit-image
19
20
  try:
21
+ import skimage
22
+
23
+ SKIMAGE_LT_0_27 = not minversion(skimage, "0.26.1.dev") # 0.27
24
+
20
25
  from skimage import transform
21
26
  from skimage.transform._warps import warp
22
- from skimage._shared.utils import convert_to_float
27
+ if SKIMAGE_LT_0_27:
28
+ from skimage._shared.utils import convert_to_float
29
+ else:
30
+ from _skimage2._shared.utils import convert_to_float
23
31
  except ImportError as e:
24
32
  warnings.warn(f'skimage not installed. MRT calculation will not work: {repr(e)}') # noqa
25
33
 
@@ -1366,7 +1374,7 @@ def create_mrt_line_kernel(width, sigma, outfile=None, shape=(1024, 2048),
1366
1374
  ax.set_title('model image')
1367
1375
 
1368
1376
  # calculate the RT for this model
1369
- rt = radon(image, circle=False, median=True, fill_value=np.nan,
1377
+ rt = radon(image, theta=theta, circle=False, median=True, fill_value=np.nan,
1370
1378
  processes=processes, return_length=False)
1371
1379
 
1372
1380
  # plot the MRT
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '3.8.0'
22
- __version_tuple__ = version_tuple = (3, 8, 0)
21
+ __version__ = version = '3.8.2'
22
+ __version_tuple__ = version_tuple = (3, 8, 2)
23
23
 
24
- __commit_id__ = commit_id = 'ge28e13b49'
24
+ __commit_id__ = commit_id = 'gb8a25088d'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acstools
3
- Version: 3.8.0
3
+ Version: 3.8.2
4
4
  Summary: Python Tools for HST ACS
5
5
  Author: Matt Davis, Warren Hack, Norman Grogin, Pey Lian Lim, Sara Ogaz, Leonardo Ubeda, Mihai Cara, David Borncamp, Nathan Miles, Tyler Desjardins, Jenna Ryon, David Stark, Gagandeep Anand, Yotam Cohen
6
6
  License-Expression: BSD-3-Clause
@@ -26,7 +26,7 @@ Requires-Dist: PyYAML
26
26
  Provides-Extra: all
27
27
  Requires-Dist: matplotlib; extra == "all"
28
28
  Requires-Dist: scipy; extra == "all"
29
- Requires-Dist: scikit-image; extra == "all"
29
+ Requires-Dist: scikit-image>=0.11; extra == "all"
30
30
  Requires-Dist: stsci.tools; extra == "all"
31
31
  Requires-Dist: stsci.imagestats; extra == "all"
32
32
  Requires-Dist: photutils; extra == "all"
@@ -17,11 +17,11 @@ tox.ini
17
17
  .github/ISSUE_TEMPLATE/bug_report.md
18
18
  .github/ISSUE_TEMPLATE/feature_request.md
19
19
  .github/ISSUE_TEMPLATE/question.md
20
+ .github/workflows/build.yml
20
21
  .github/workflows/ci_workflows.yml
21
22
  .github/workflows/codeql-analysis.yml
22
23
  .github/workflows/open_actions.yml
23
24
  .github/workflows/predeps_workflows.yml
24
- .github/workflows/publish-to-pypi.yml
25
25
  acstools/__init__.py
26
26
  acstools/acs2d.py
27
27
  acstools/acs_destripe.py
@@ -47,6 +47,8 @@ acstools.egg-info/dependency_links.txt
47
47
  acstools.egg-info/entry_points.txt
48
48
  acstools.egg-info/not-zip-safe
49
49
  acstools.egg-info/requires.txt
50
+ acstools.egg-info/scm_file_list.json
51
+ acstools.egg-info/scm_version.json
50
52
  acstools.egg-info/top_level.txt
51
53
  acstools/data/polarizer_tables.yaml
52
54
  acstools/data/rt_line_kernel_width15.fits
@@ -6,7 +6,7 @@ PyYAML
6
6
  [all]
7
7
  matplotlib
8
8
  scipy
9
- scikit-image
9
+ scikit-image>=0.11
10
10
  stsci.tools
11
11
  stsci.imagestats
12
12
  photutils
@@ -0,0 +1,88 @@
1
+ {
2
+ "files": [
3
+ "CHANGES.rst",
4
+ "tox.ini",
5
+ "pyproject.toml",
6
+ "LICENSE.md",
7
+ "README.rst",
8
+ "CITATION.md",
9
+ ".bandit.yaml",
10
+ "MANIFEST.in",
11
+ "conftest.py",
12
+ ".gitignore",
13
+ ".flake8",
14
+ ".readthedocs.yaml",
15
+ "CODE_OF_CONDUCT.md",
16
+ "acstools/findsat_mrt.py",
17
+ "acstools/__init__.py",
18
+ "acstools/satdet.py",
19
+ "acstools/acsphotcte.py",
20
+ "acstools/acs_destripe.py",
21
+ "acstools/acsccd.py",
22
+ "acstools/focus_diverse_epsfs.py",
23
+ "acstools/utils_findsat_mrt.py",
24
+ "acstools/acszpt.py",
25
+ "acstools/acscteforwardmodel.py",
26
+ "acstools/utils_calib.py",
27
+ "acstools/acs_destripe_plus.py",
28
+ "acstools/acssum.py",
29
+ "acstools/acs2d.py",
30
+ "acstools/polarization_tools.py",
31
+ "acstools/acsrej.py",
32
+ "acstools/calacs.py",
33
+ "acstools/acscte.py",
34
+ "acstools/tests/test_wfc_satdet.py",
35
+ "acstools/tests/helpers.py",
36
+ "acstools/tests/test_wfc_destripe.py",
37
+ "acstools/tests/__init__.py",
38
+ "acstools/tests/test_polarization.py",
39
+ "acstools/tests/test_wfc_findsat_mrt.py",
40
+ "acstools/tests/.gitattributes",
41
+ "acstools/tests/data/truth/ja0x03ojq_flt_ref.fits",
42
+ "acstools/tests/data/truth/jb5g05ubq_flt_ref.fits",
43
+ "acstools/tests/data/truth/jc8m32j5q_flc_mask_ref.fits",
44
+ "acstools/tests/data/truth/jc8m10syq_flc_ref.fits",
45
+ "acstools/tests/data/truth/jc5001soq_flt_ref.fits",
46
+ "acstools/tests/data/truth/jc8o04ghq_flt_ref.fits",
47
+ "acstools/tests/data/truth/jc2z03cvq_blv_tmp_ref.fits",
48
+ "acstools/tests/data/input/jc8m32j5q_flc.fits",
49
+ "acstools/tests/data/input/jc8o04ghq_mask2.fits",
50
+ "acstools/tests/data/input/jc8o04ghq_flt.fits",
51
+ "acstools/tests/data/input/jc8m10syq_flc.fits",
52
+ "acstools/tests/data/input/ja0x03ojq_flt.fits",
53
+ "acstools/tests/data/input/jb5g05ubq_flt.fits",
54
+ "acstools/tests/data/input/jc8o04ghq_mask1.fits",
55
+ "acstools/tests/data/input/jc5001soq_flt.fits",
56
+ "acstools/tests/data/input/jc2z03cvq_blv_tmp.fits",
57
+ "acstools/data/rt_line_kernel_width3.fits",
58
+ "acstools/data/rt_line_kernel_width15.fits",
59
+ "acstools/data/polarizer_tables.yaml",
60
+ "acstools/data/rt_line_kernel_width7.fits",
61
+ "doc/Makefile",
62
+ "doc/make.bat",
63
+ "doc/source/findsat_mrt.rst",
64
+ "doc/source/acszpt.rst",
65
+ "doc/source/acs_destripe.rst",
66
+ "doc/source/index.rst",
67
+ "doc/source/calacs.rst",
68
+ "doc/source/acsphotcte.rst",
69
+ "doc/source/satdet.rst",
70
+ "doc/source/focus_diverse_epsfs.rst",
71
+ "doc/source/polarization_tools.rst",
72
+ "doc/source/conf.py",
73
+ "doc/source/utils_calib.rst",
74
+ "doc/source/_static/stsci_pri_combo_mark_white.png",
75
+ "doc/source/_templates/.gitignore",
76
+ ".github/PULL_REQUEST_TEMPLATE.md",
77
+ ".github/labeler.yml",
78
+ ".github/dependabot.yml",
79
+ ".github/ISSUE_TEMPLATE/question.md",
80
+ ".github/ISSUE_TEMPLATE/bug_report.md",
81
+ ".github/ISSUE_TEMPLATE/feature_request.md",
82
+ ".github/workflows/codeql-analysis.yml",
83
+ ".github/workflows/build.yml",
84
+ ".github/workflows/predeps_workflows.yml",
85
+ ".github/workflows/open_actions.yml",
86
+ ".github/workflows/ci_workflows.yml"
87
+ ]
88
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "3.8.2",
3
+ "distance": 0,
4
+ "node": "gb8a25088dfd55bc143227363dadf3cdcb24c6faa",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-06-24"
8
+ }
@@ -14,9 +14,9 @@ except ImportError:
14
14
  # Uncomment and customize the following lines to add/remove entries
15
15
  # from the list of packages for which version numbers are displayed
16
16
  # when running the tests.
17
- PYTEST_HEADER_MODULES['Astropy'] = 'astropy'
18
- PYTEST_HEADER_MODULES['beautifulsoup4'] = 'bs4'
17
+ PYTEST_HEADER_MODULES['astropy'] = 'astropy'
19
18
  PYTEST_HEADER_MODULES['requests'] = 'requests'
19
+ PYTEST_HEADER_MODULES['scikit-image'] = 'skimage'
20
20
  PYTEST_HEADER_MODULES['stsci.tools'] = 'stsci.tools'
21
21
  PYTEST_HEADER_MODULES.pop('Pandas', None)
22
22
  PYTEST_HEADER_MODULES.pop('h5py', None)
@@ -51,7 +51,7 @@ Documentation = "https://acstools.readthedocs.io"
51
51
  all = [
52
52
  "matplotlib",
53
53
  "scipy",
54
- "scikit-image",
54
+ "scikit-image>=0.11",
55
55
  "stsci.tools",
56
56
  "stsci.imagestats",
57
57
  "photutils",
@@ -99,8 +99,8 @@ build-backend = "setuptools.build_meta"
99
99
  [tool.setuptools_scm]
100
100
  version_file = "acstools/version.py"
101
101
 
102
- [tool.pytest.ini_options]
103
- minversion = "5"
102
+ [tool.pytest]
103
+ minversion = "9"
104
104
  norecursedirs = [
105
105
  "build",
106
106
  "doc/build",
@@ -115,4 +115,5 @@ filterwarnings = [
115
115
  "error",
116
116
  "ignore:numpy\\.ndarray size changed:RuntimeWarning",
117
117
  "ignore:unclosed file:ResourceWarning",
118
- ]
118
+ "ignore:.*skimage\\.feature\\.canny.* is deprecated",
119
+ ]
@@ -1,64 +0,0 @@
1
- name: Wheel building
2
-
3
- on:
4
- pull_request:
5
- # We also want this workflow triggered if the 'Build wheels'
6
- # label is added or present when PR is updated
7
- types:
8
- - synchronize
9
- - labeled
10
- push:
11
- branches:
12
- - master
13
- tags:
14
- - '*'
15
-
16
- concurrency:
17
- group: ${{ github.workflow }}-${{ github.ref }}
18
- cancel-in-progress: true
19
-
20
- # NOTE: Cannot use OpenAstronomy workflow due to
21
- # https://github.com/OpenAstronomy/github-actions-workflows/issues/168
22
- jobs:
23
- build_and_publish:
24
- # This job builds the wheels and publishes them to PyPI for all
25
- # tags. For PRs with the "Build wheels" label, wheels are built,
26
- # but are not uploaded to PyPI.
27
-
28
- permissions:
29
- contents: none
30
-
31
- runs-on: ubuntu-latest
32
- if: (github.repository == 'spacetelescope/acstools' && (github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Build wheels')))
33
-
34
- steps:
35
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
36
- with:
37
- fetch-depth: 0
38
-
39
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
40
- with:
41
- python-version: '3.11'
42
-
43
- - name: Install python-build and twine
44
- run: python -m pip install build "twine>=3.3"
45
-
46
- - name: Build package
47
- run: python -m build --sdist --wheel .
48
-
49
- - name: List result
50
- run: ls -l dist
51
-
52
- - name: Check dist
53
- run: python -m twine check --strict dist/*
54
-
55
- # FOR DEBUGGING ONLY: repository_url (TestPyPI) and verbose;
56
- # Use appropriate token if debugging with TestPyPI
57
- - name: Publish distribution 📦 to PyPI
58
- if: (startsWith(github.ref, 'refs/tags/') && github.event_name == 'push')
59
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
60
- with:
61
- user: __token__
62
- password: ${{ secrets.PYPI_TOKEN }}
63
- #repository_url: https://test.pypi.org/legacy/
64
- #verbose: true
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes