drizzle 2.0.0__cp311-cp311-win32.whl → 2.1.0__cp311-cp311-win32.whl

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.

Potentially problematic release.


This version of drizzle might be problematic. Click here for more details.

@@ -1,11 +1,8 @@
1
- import os
2
-
3
1
  import numpy as np
4
2
  import pytest
5
3
  from numpy.testing import assert_almost_equal, assert_equal
6
4
 
7
- from astropy import wcs
8
- from astropy.io import fits
5
+ from drizzle.tests.helpers import wcs_from_file
9
6
  from drizzle.utils import (
10
7
  _estimate_pixel_scale,
11
8
  calc_pixmap,
@@ -13,9 +10,6 @@ from drizzle.utils import (
13
10
  estimate_pixel_scale_ratio,
14
11
  )
15
12
 
16
- TEST_DIR = os.path.abspath(os.path.dirname(__file__))
17
- DATA_DIR = os.path.join(TEST_DIR, 'data')
18
-
19
13
 
20
14
  def test_map_rectangular():
21
15
  """
@@ -30,18 +24,17 @@ def test_map_rectangular():
30
24
  assert_equal(pixmap[5, 500], (500, 5))
31
25
 
32
26
 
33
- def test_map_to_self():
27
+ @pytest.mark.parametrize(
28
+ "wcs_type", ["fits", "gwcs"]
29
+ )
30
+ def test_map_to_self(wcs_type):
34
31
  """
35
32
  Map a pixel array to itself. Should return the same array.
36
33
  """
37
- input_file = os.path.join(DATA_DIR, 'input1.fits')
38
- input_hdu = fits.open(input_file)
34
+ input_wcs = wcs_from_file("j8bt06nyq_sip_flt.fits", ext=1, wcs_type=wcs_type)
35
+ shape = input_wcs.array_shape
39
36
 
40
- input_wcs = wcs.WCS(input_hdu[1].header)
41
- naxis1, naxis2 = input_wcs.pixel_shape
42
- input_hdu.close()
43
-
44
- ok_pixmap = np.indices((naxis1, naxis2), dtype='float32')
37
+ ok_pixmap = np.indices(shape, dtype='float64')
45
38
  ok_pixmap = ok_pixmap.transpose()
46
39
 
47
40
  pixmap = calc_pixmap(input_wcs, input_wcs)
@@ -56,9 +49,10 @@ def test_map_to_self():
56
49
  pixmap = calc_pixmap(input_wcs, input_wcs, (12, 34))
57
50
  assert_equal(pixmap.shape, (12, 34, 2))
58
51
 
59
- # Check that an exception is raised for WCS without pixel_shape or
52
+ # Check that an exception is raised for WCS without pixel_shape and
60
53
  # bounding_box:
61
54
  input_wcs.pixel_shape = None
55
+ input_wcs.bounding_box = None
62
56
  with pytest.raises(ValueError):
63
57
  calc_pixmap(input_wcs, input_wcs)
64
58
 
@@ -72,31 +66,31 @@ def test_map_to_self():
72
66
  assert_equal(pixmap.shape, (12, 34, 2))
73
67
 
74
68
  # from bounding box and pixel_shape (the later takes precedence):
75
- input_wcs.pixel_shape = (naxis1, naxis2)
69
+ input_wcs.array_shape = shape
76
70
  pixmap = calc_pixmap(input_wcs, input_wcs)
77
71
  assert_equal(pixmap.shape, ok_pixmap.shape)
78
72
 
79
73
 
80
- def test_translated_map():
74
+ @pytest.mark.parametrize(
75
+ "wcs_type", ["fits", "gwcs"]
76
+ )
77
+ def test_translated_map(wcs_type):
81
78
  """
82
79
  Map a pixel array to at translated array.
83
80
  """
84
- first_file = os.path.join(DATA_DIR, 'input1.fits')
85
- first_hdu = fits.open(first_file)
86
- first_header = first_hdu[1].header
87
-
88
- first_wcs = wcs.WCS(first_header)
89
- naxis1, naxis2 = first_wcs.pixel_shape
90
- first_hdu.close()
91
-
92
- second_file = os.path.join(DATA_DIR, 'input3.fits')
93
- second_hdu = fits.open(second_file)
94
- second_header = second_hdu[1].header
95
-
96
- second_wcs = wcs.WCS(second_header)
97
- second_hdu.close()
81
+ first_wcs = wcs_from_file(
82
+ "j8bt06nyq_sip_flt.fits",
83
+ ext=1,
84
+ wcs_type=wcs_type
85
+ )
86
+ second_wcs = wcs_from_file(
87
+ "j8bt06nyq_sip_flt.fits",
88
+ ext=1,
89
+ crpix_shift=(-2, -2), # shift loaded WCS by adding this to CRPIX
90
+ wcs_type=wcs_type
91
+ )
98
92
 
99
- ok_pixmap = np.indices((naxis1, naxis2), dtype='float32') - 2.0
93
+ ok_pixmap = np.indices(first_wcs.array_shape, dtype='float32') - 2.0
100
94
  ok_pixmap = ok_pixmap.transpose()
101
95
 
102
96
  pixmap = calc_pixmap(first_wcs, second_wcs)
@@ -104,31 +98,81 @@ def test_translated_map():
104
98
  # Got x-y transpose right
105
99
  assert_equal(pixmap.shape, ok_pixmap.shape)
106
100
  # Mapping an array to a translated array
107
- assert_almost_equal(pixmap, ok_pixmap, decimal=5)
101
+ assert_almost_equal(pixmap[2:, 2:], ok_pixmap[2:, 2:], decimal=5)
108
102
 
109
103
 
110
- def test_estimate_pixel_scale_ratio():
111
- input_file = os.path.join(DATA_DIR, 'j8bt06nyq_flt.fits')
104
+ def test_disable_gwcs_bbox():
105
+ """
106
+ Map a pixel array to a translated version ofitself.
107
+ """
108
+ first_wcs = wcs_from_file(
109
+ "j8bt06nyq_sip_flt.fits",
110
+ ext=1,
111
+ wcs_type="gwcs"
112
+ )
113
+ second_wcs = wcs_from_file(
114
+ "j8bt06nyq_sip_flt.fits",
115
+ ext=1,
116
+ crpix_shift=(-2, -2), # shift loaded WCS by adding this to CRPIX
117
+ wcs_type="gwcs"
118
+ )
112
119
 
113
- with fits.open(input_file) as h:
114
- w = wcs.WCS(h[1].header)
120
+ ok_pixmap = np.indices(first_wcs.array_shape, dtype='float64') - 2.0
121
+ ok_pixmap = ok_pixmap.transpose()
122
+
123
+ # Mapping an array to a translated array
124
+
125
+ # disable both bounding boxes:
126
+ pixmap = calc_pixmap(first_wcs, second_wcs, disable_bbox="both")
127
+ assert_almost_equal(pixmap[2:, 2:], ok_pixmap[2:, 2:], decimal=5)
128
+ assert np.all(np.isfinite(pixmap[:2, :2]))
129
+ assert np.all(np.isfinite(pixmap[-2:, -2:]))
130
+ # check bbox was restored
131
+ assert first_wcs.bounding_box is not None
132
+ assert second_wcs.bounding_box is not None
133
+
134
+ # disable "from" bounding box:
135
+ pixmap = calc_pixmap(second_wcs, first_wcs, disable_bbox="from")
136
+ assert_almost_equal(pixmap[:-2, :-2], ok_pixmap[:-2, :-2] + 4.0, decimal=5)
137
+ assert np.all(np.logical_not(np.isfinite(pixmap[-2:, -2:])))
138
+ # check bbox was restored
139
+ assert first_wcs.bounding_box is not None
140
+ assert second_wcs.bounding_box is not None
141
+
142
+ # disable "to" bounding boxes:
143
+ pixmap = calc_pixmap(first_wcs, second_wcs, disable_bbox="to")
144
+ assert_almost_equal(pixmap[2:, 2:], ok_pixmap[2:, 2:], decimal=5)
145
+ assert np.all(np.isfinite(pixmap[:2, :2]))
146
+ assert np.all(pixmap[:2, :2] < 0.0)
147
+ assert np.all(np.isfinite(pixmap[-2:, -2:]))
148
+ # check bbox was restored
149
+ assert first_wcs.bounding_box is not None
150
+ assert second_wcs.bounding_box is not None
151
+
152
+ # enable all bounding boxes:
153
+ pixmap = calc_pixmap(first_wcs, second_wcs, disable_bbox="none")
154
+ assert_almost_equal(pixmap[2:, 2:], ok_pixmap[2:, 2:], decimal=5)
155
+ assert np.all(np.logical_not(np.isfinite(pixmap[:2, :2])))
156
+ # check bbox was restored
157
+ assert first_wcs.bounding_box is not None
158
+ assert second_wcs.bounding_box is not None
115
159
 
116
- pscale = estimate_pixel_scale_ratio(w, w, w.wcs.crpix, (0, 0))
117
160
 
161
+ def test_estimate_pixel_scale_ratio():
162
+ w = wcs_from_file("j8bt06nyq_flt.fits", ext=1)
163
+ pscale = estimate_pixel_scale_ratio(w, w, w.wcs.crpix, (0, 0))
118
164
  assert abs(pscale - 0.9999999916964737) < 1.0e-9
119
165
 
120
166
 
121
167
  def test_estimate_pixel_scale_no_refpix():
122
168
  # create a WCS without higher order (polynomial) distortions:
123
- fits_file = os.path.join(DATA_DIR, 'input1.fits')
124
- with fits.open(fits_file) as h:
125
- w = wcs.WCS(h[1].header, h)
126
- w.sip = None
127
- w.det2im1 = None
128
- w.det2im2 = None
129
- w.cpdis1 = None
130
- w.cpdis2 = None
131
- pixel_shape = w.pixel_shape[:]
169
+ w = wcs_from_file("j8bt06nyq_sip_flt.fits", ext=1)
170
+ w.sip = None
171
+ w.det2im1 = None
172
+ w.det2im2 = None
173
+ w.cpdis1 = None
174
+ w.cpdis2 = None
175
+ pixel_shape = w.pixel_shape[:]
132
176
 
133
177
  ref_pscale = _estimate_pixel_scale(w, w.wcs.crpix)
134
178
 
drizzle/utils.py CHANGED
@@ -7,7 +7,7 @@ __all__ = ["calc_pixmap", "decode_context", "estimate_pixel_scale_ratio"]
7
7
  _DEG2RAD = math.pi / 180.0
8
8
 
9
9
 
10
- def calc_pixmap(wcs_from, wcs_to, shape=None):
10
+ def calc_pixmap(wcs_from, wcs_to, shape=None, disable_bbox="to"):
11
11
  """
12
12
  Calculate a discretized on a grid mapping between the pixels of two images
13
13
  using provided WCS of the original ("from") image and the destination ("to")
@@ -35,6 +35,14 @@ def calc_pixmap(wcs_from, wcs_to, shape=None):
35
35
  ``numpy.ndarray`` order. When provided, it takes precedence over the
36
36
  ``wcs_from.array_shape`` property.
37
37
 
38
+ disable_bbox : {"to", "from", "both", "none"}, optional
39
+ Indicates whether to use or not to use the bounding box of either
40
+ (both) ``wcs_from`` or (and) ``wcs_to`` when computing pixel map. When
41
+ ``disable_bbox`` is "none", pixel coordinates outside of the bounding
42
+ box are set to `NaN` only if ``wcs_from`` or (and) ``wcs_to`` sets
43
+ world coordinates to NaN when input pixel coordinates are outside of
44
+ the bounding box.
45
+
38
46
  Returns
39
47
  -------
40
48
  pixmap : numpy.ndarray
@@ -57,16 +65,39 @@ def calc_pixmap(wcs_from, wcs_to, shape=None):
57
65
  If ``bounding_box`` is not available, a `ValueError` will be raised.
58
66
 
59
67
  """
68
+ if (bbox_from := getattr(wcs_from, "bounding_box", None)) is not None:
69
+ try:
70
+ # to avoid dependency on astropy just to check whether
71
+ # the bounding box is an instance of
72
+ # modeling.bounding_box.ModelBoundingBox, we try to
73
+ # directly use and bounding_box(order='F') and if it fails,
74
+ # fall back to converting the bounding box to a tuple
75
+ # (of intervals):
76
+ bbox_from = bbox_from.bounding_box(order='F')
77
+ except AttributeError:
78
+ bbox_from = tuple(bbox_from)
79
+
80
+ if (bbox_to := getattr(wcs_to, "bounding_box", None)) is not None:
81
+ try:
82
+ # to avoid dependency on astropy just to check whether
83
+ # the bounding box is an instance of
84
+ # modeling.bounding_box.ModelBoundingBox, we try to
85
+ # directly use and bounding_box(order='F') and if it fails,
86
+ # fall back to converting the bounding box to a tuple
87
+ # (of intervals):
88
+ bbox_to = bbox_to.bounding_box(order='F')
89
+ except AttributeError:
90
+ bbox_to = tuple(bbox_to)
91
+
60
92
  if shape is None:
61
93
  shape = wcs_from.array_shape
62
- if shape is None:
63
- if (bbox := getattr(wcs_from, "bounding_box", None)) is not None:
64
- if (nd := np.ndim(bbox)) == 1:
65
- bbox = (bbox, )
66
- if nd > 1:
67
- shape = tuple(
68
- int(math.ceil(lim[1] + 0.5)) for lim in bbox[::-1]
69
- )
94
+ if shape is None and bbox_from is not None:
95
+ if (nd := np.ndim(bbox_from)) == 1:
96
+ bbox_from = (bbox_from, )
97
+ if nd > 1:
98
+ shape = tuple(
99
+ math.ceil(lim[1] + 0.5) for lim in bbox_from[::-1]
100
+ )
70
101
 
71
102
  if shape is None:
72
103
  raise ValueError(
@@ -74,7 +105,22 @@ def calc_pixmap(wcs_from, wcs_to, shape=None):
74
105
  )
75
106
 
76
107
  y, x = np.indices(shape, dtype=np.float64)
77
- x, y = wcs_to.world_to_pixel_values(*wcs_from.pixel_to_world_values(x, y))
108
+
109
+ # temporarily disable the bounding box for the "from" WCS:
110
+ if disable_bbox in ["from", "both"] and bbox_from is not None:
111
+ wcs_from.bounding_box = None
112
+ if disable_bbox in ["to", "both"] and bbox_to is not None:
113
+ wcs_to.bounding_box = None
114
+ try:
115
+ x, y = wcs_to.world_to_pixel_values(
116
+ *wcs_from.pixel_to_world_values(x, y)
117
+ )
118
+ finally:
119
+ if bbox_from is not None:
120
+ wcs_from.bounding_box = bbox_from
121
+ if bbox_to is not None:
122
+ wcs_to.bounding_box = bbox_to
123
+
78
124
  pixmap = np.dstack([x, y])
79
125
  return pixmap
80
126
 
@@ -1,40 +1,8 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: drizzle
3
- Version: 2.0.0
3
+ Version: 2.1.0
4
4
  Summary: A package for combining dithered images into a single image
5
5
  Author-email: STScI <help@stsci.edu>
6
- License: Copyright (C) 2011,2014 Association of Universities for Research in
7
- Astronomy (AURA)
8
-
9
- Redistribution and use in source and binary forms, with or without
10
- modification, are permitted provided that the following conditions
11
- are met:
12
-
13
- 1. Redistributions of source code must retain the above
14
- copyright notice, this list of conditions and the following
15
- disclaimer.
16
-
17
- 2. Redistributions in binary form must reproduce the above
18
- copyright notice, this list of conditions and the following
19
- disclaimer in the documentation and/or other materials
20
- provided with the distribution.
21
-
22
- 3. The name of AURA and its representatives may not be used to
23
- endorse or promote products derived from this software without
24
- specific prior written permission.
25
-
26
- THIS SOFTWARE IS PROVIDED BY AURA ``AS IS'' AND ANY EXPRESS OR
27
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
- ARE DISCLAIMED. IN NO EVENT SHALL AURA BE LIABLE FOR ANY DIRECT,
30
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
34
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
36
- OF THE POSSIBILITY OF SUCH DAMAGE.
37
-
38
6
  Project-URL: Homepage, https://github.com/spacetelescope/drizzle
39
7
  Project-URL: Bug Tracker, https://github.com/spacetelescope/drizzle/issues
40
8
  Project-URL: Documentation, http://spacetelescope.github.io/drizzle/
@@ -43,18 +11,20 @@ Requires-Python: >=3.10
43
11
  Description-Content-Type: text/x-rst
44
12
  License-File: LICENSE.rst
45
13
  Requires-Dist: numpy
46
- Requires-Dist: astropy
47
- Provides-Extra: docs
48
- Requires-Dist: sphinx ; extra == 'docs'
49
- Requires-Dist: sphinx-automodapi ; extra == 'docs'
50
- Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
51
- Requires-Dist: matplotlib ; extra == 'docs'
52
- Requires-Dist: pytest-doctestplus ; extra == 'docs'
53
- Requires-Dist: tomli ; (python_version < "3.11") and extra == 'docs'
54
14
  Provides-Extra: test
55
- Requires-Dist: pytest ; extra == 'test'
56
- Requires-Dist: pytest-cov ; extra == 'test'
57
- Requires-Dist: pytest-doctestplus ; extra == 'test'
15
+ Requires-Dist: astropy; extra == "test"
16
+ Requires-Dist: gwcs; extra == "test"
17
+ Requires-Dist: pytest; extra == "test"
18
+ Requires-Dist: pytest-cov; extra == "test"
19
+ Requires-Dist: pytest-doctestplus; extra == "test"
20
+ Provides-Extra: docs
21
+ Requires-Dist: tomli; python_version < "3.11" and extra == "docs"
22
+ Requires-Dist: sphinx; extra == "docs"
23
+ Requires-Dist: sphinx-automodapi; extra == "docs"
24
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
25
+ Requires-Dist: matplotlib; extra == "docs"
26
+ Requires-Dist: pytest-doctestplus; extra == "docs"
27
+ Dynamic: license-file
58
28
 
59
29
  drizzle Documentation
60
30
  =====================
@@ -107,8 +77,8 @@ Requirements
107
77
  The Drizzle Algorithm
108
78
  ---------------------
109
79
 
110
- This section has been extracted from Chapter 2 of
111
- `The DrizzlePac Handbook <http://www.stsci.edu/hst/HST_overview/drizzlepac/documents/handbooks/drizzlepac.pdf>`_ [Driz2012]_
80
+ This section has been extracted from Chapter 3 of
81
+ `The DrizzlePac Handbook <https://hst-docs.stsci.edu/drizzpac>`_ [Driz2025]_
112
82
 
113
83
  There are a family of linear reconstruction techniques that, at two opposite
114
84
  extremes, are represented by the interlacing and shift-and-add techniques, with
@@ -199,4 +169,4 @@ for identifying cosmic rays in the original image. Blot requires the user
199
169
  to provide the world coordinate system (WCS)-based transformations in the
200
170
  form of a pixel map array as input.
201
171
 
202
- .. [Driz2012] Gonzaga, S., Hack, W., Fruchter, A., Mack, J., eds. 2012, The DrizzlePac Handbook. (Baltimore, STScI)
172
+ .. [Driz2025] Anand, G. S., Mack, J., et al., 2025, The DrizzlePac Handbook”, Version 3.0, (Baltimore: STScI)
@@ -0,0 +1,16 @@
1
+ drizzle/__init__.py,sha256=hMpqmjPhrUWTRU0eXNOcrpiqQFGp4lf9opY8FXqLLEQ,325
2
+ drizzle/cdrizzle.cp311-win32.pyd,sha256=T6e6OmlsqxPcoX2dJW_xKm3nh3N1Ud10T16IkphucPI,88064
3
+ drizzle/resample.py,sha256=lps_nPPcEtOID3Y1oJALaFXQ8AyhFrmWu70O0z-tDak,29157
4
+ drizzle/util.py,sha256=os9wHm1JkKiG5jtnNCZAXG3vnnXxLHBpi8OTWsiPI7k,845
5
+ drizzle/utils.py,sha256=HvRPduBswRwi3OLN48tjv7y7XkP_sfcbNtxmcrfIDy0,10841
6
+ drizzle/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ drizzle/tests/helpers.py,sha256=vD2uBLKTlgNXeLdof7kCdrOJRTQ8HQEQDvUChqB1PSQ,6673
8
+ drizzle/tests/test_cdrizzle.py,sha256=utepqMiY8xtgQ8gBRBHwnlMhbBB1pq1xE4spf-wO7Kw,726
9
+ drizzle/tests/test_overlap_calc.py,sha256=ucwDL9fd8NVAxTdz-sWum_uobhm-TGkCr2yl69BKiC4,7062
10
+ drizzle/tests/test_resample.py,sha256=cuKTO0crRO1uSmg7QHTNszfLtdcE1IjBYstT_gQjOdU,35319
11
+ drizzle/tests/test_utils.py,sha256=h24pE4cM-_FPPpZ9jBc9IdWKvKwFoTiA2ENeJx0oN6Q,7702
12
+ drizzle-2.1.0.dist-info/licenses/LICENSE.rst,sha256=sUXj5W73D9TcOw5ZXaDdcthYdY2b2dTJPsxBuZTOYWQ,1505
13
+ drizzle-2.1.0.dist-info/METADATA,sha256=ENGGbns5i2g9V5aJXZRZrLn8GIKCu9XmirisViUpFPE,9104
14
+ drizzle-2.1.0.dist-info/WHEEL,sha256=Ri8zddKrjGdgjlj1OpSsvpDnvHfnQhMQWi3E_v2pqng,97
15
+ drizzle-2.1.0.dist-info/top_level.txt,sha256=MA5uqwTj1sJBi-hCeQj9v3-sZ9nVUTe6bd_zGWTKy5A,8
16
+ drizzle-2.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-win32
5
5
 
@@ -1,15 +0,0 @@
1
- drizzle/__init__.py,sha256=hMpqmjPhrUWTRU0eXNOcrpiqQFGp4lf9opY8FXqLLEQ,325
2
- drizzle/cdrizzle.cp311-win32.pyd,sha256=ZHL61abDTResCF7nZx-NxxltXgZw56elWXpMMnRW-QU,86528
3
- drizzle/resample.py,sha256=t6HCYNWwnz4-mKYtzIWDFIEkHOi84ZI5GD4x3L6Wp0k,28982
4
- drizzle/util.py,sha256=os9wHm1JkKiG5jtnNCZAXG3vnnXxLHBpi8OTWsiPI7k,845
5
- drizzle/utils.py,sha256=Mze8pASdCiSXEsIJNIGkTcLbqszpJrrE5U576AtkzeI,8776
6
- drizzle/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- drizzle/tests/test_cdrizzle.py,sha256=utepqMiY8xtgQ8gBRBHwnlMhbBB1pq1xE4spf-wO7Kw,726
8
- drizzle/tests/test_overlap_calc.py,sha256=ucwDL9fd8NVAxTdz-sWum_uobhm-TGkCr2yl69BKiC4,7062
9
- drizzle/tests/test_resample.py,sha256=Xtov5vpVOEWOscKngGl8GkDyWSj_GpRNlceGIJ_Jdfg,41014
10
- drizzle/tests/test_utils.py,sha256=rlRvd7JKo7YeVPIhYAYg4WgXLN7yge39Zkngv8jq4ds,5889
11
- drizzle-2.0.0.dist-info/LICENSE.rst,sha256=sUXj5W73D9TcOw5ZXaDdcthYdY2b2dTJPsxBuZTOYWQ,1505
12
- drizzle-2.0.0.dist-info/METADATA,sha256=dv6lr7uK6t4T5IzDF4UYvS5vYXBFhd0ZWQdTPdFMJ0Y,10850
13
- drizzle-2.0.0.dist-info/WHEEL,sha256=5l39w2c7RLiOaKb0DCvi6tyvDZ-pTlvj48adpJViMnw,97
14
- drizzle-2.0.0.dist-info/top_level.txt,sha256=MA5uqwTj1sJBi-hCeQj9v3-sZ9nVUTe6bd_zGWTKy5A,8
15
- drizzle-2.0.0.dist-info/RECORD,,