dkist-processing-math 2.1.0rc1__tar.gz → 2.1.1__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 (45) hide show
  1. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/CHANGELOG.rst +19 -0
  2. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/PKG-INFO +24 -6
  3. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/README.rst +0 -1
  4. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/bitbucket-pipelines.yml +21 -3
  5. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/linear_algebra.py +29 -14
  6. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/test_linear_algebra.py +87 -14
  7. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math.egg-info/PKG-INFO +24 -6
  8. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math.egg-info/SOURCES.txt +0 -3
  9. dkist_processing_math-2.1.1/dkist_processing_math.egg-info/top_level.txt +5 -0
  10. dkist_processing_math-2.1.1/pyproject.toml +100 -0
  11. dkist_processing_math-2.1.1/setup.cfg +4 -0
  12. dkist-processing-math-2.1.0rc1/changelog/14.feature.rst +0 -1
  13. dkist-processing-math-2.1.0rc1/dkist_processing_math.egg-info/top_level.txt +0 -1
  14. dkist-processing-math-2.1.0rc1/pyproject.toml +0 -31
  15. dkist-processing-math-2.1.0rc1/setup.cfg +0 -60
  16. dkist-processing-math-2.1.0rc1/setup.py +0 -4
  17. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/.gitignore +0 -0
  18. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/.pre-commit-config.yaml +0 -0
  19. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/.readthedocs.yml +0 -0
  20. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/changelog/.gitempty +0 -0
  21. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/check_changelog_updated.sh +0 -0
  22. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/__init__.py +0 -0
  23. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/arithmetic.py +0 -0
  24. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/feature.py +0 -0
  25. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/statistics.py +0 -0
  26. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/__init__.py +0 -0
  27. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/conftest.py +0 -0
  28. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/test_arithmetic.py +0 -0
  29. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/test_feature.py +0 -0
  30. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/test_statistics.py +0 -0
  31. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/tests/test_transform.py +0 -0
  32. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/transform/__init__.py +0 -0
  33. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/transform/affine.py +0 -0
  34. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/transform/binary.py +0 -0
  35. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/transform/binning.py +0 -0
  36. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math/transform/hough.py +0 -0
  37. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math.egg-info/dependency_links.txt +0 -0
  38. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/dkist_processing_math.egg-info/requires.txt +0 -0
  39. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/Makefile +0 -0
  40. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/changelog.rst +0 -0
  41. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/conf.py +0 -0
  42. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/index.rst +0 -0
  43. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/make.bat +0 -0
  44. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/docs/requirements.txt +0 -0
  45. {dkist-processing-math-2.1.0rc1 → dkist_processing_math-2.1.1}/licenses/LICENSE.rst +0 -0
@@ -1,3 +1,22 @@
1
+ v2.1.1 (2024-10-14)
2
+ ===================
3
+
4
+ Misc
5
+ ----
6
+
7
+ - Make and publish wheels at code push in build pipeline (`#15 <https://bitbucket.org/dkistdc/dkist-processing-math/pull-requests/15>`__)
8
+ - Switch from setup.cfg to pyproject.toml for build configuration (`#15 <https://bitbucket.org/dkistdc/dkist-processing-math/pull-requests/15>`__)
9
+
10
+
11
+ v2.1.0 (2023-11-28)
12
+ ===================
13
+
14
+ Features
15
+ --------
16
+
17
+ - Add functions to broadcast matrix multiplication over extra array dimensions. (`#14 <https://bitbucket.org/dkistdc/dkist-processing-math/pull-requests/14>`__)
18
+
19
+
1
20
  v2.0.0 (2023-06-29)
2
21
  ===================
3
22
 
@@ -1,25 +1,43 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-math
3
- Version: 2.1.0rc1
3
+ Version: 2.1.1
4
4
  Summary: Common math functionality used in the DKIST calibrations suite
5
- Home-page: https://bitbucket.org/dkistdc/dkist_processing_math/src/master/
6
- Author: NSO / AURA
7
- Author-email: "dkistdc@nso.edu"
8
- License: MIT
5
+ Author-email: NSO / AURA <dkistdc@nso.edu>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://nso.edu/dkist/data-center/
8
+ Project-URL: Repository, https://bitbucket.org/dkistdc/dkist-processing-math/
9
9
  Project-URL: Documentation, https://docs.dkist.nso.edu/projects/math
10
+ Project-URL: Help, https://nso.atlassian.net/servicedesk/customer/portal/5
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3
12
13
  Classifier: Programming Language :: Python :: 3.11
13
14
  Requires-Python: >=3.11
15
+ Description-Content-Type: text/x-rst
16
+ Requires-Dist: dkist-processing-common>=4.0.0
17
+ Requires-Dist: numpy>=1.24.0
18
+ Requires-Dist: scikit-image>=0.21.0
19
+ Requires-Dist: scipy>=1.11.0
20
+ Requires-Dist: peakutils>=1.3.3
14
21
  Provides-Extra: test
22
+ Requires-Dist: pytest; extra == "test"
23
+ Requires-Dist: pytest-cov; extra == "test"
24
+ Requires-Dist: pytest-mock; extra == "test"
25
+ Requires-Dist: hypothesis; extra == "test"
26
+ Requires-Dist: towncrier; extra == "test"
15
27
  Provides-Extra: docs
28
+ Requires-Dist: sphinx; extra == "docs"
29
+ Requires-Dist: sphinx-astropy; extra == "docs"
30
+ Requires-Dist: sphinx-changelog; extra == "docs"
31
+ Requires-Dist: sphinx-autoapi; extra == "docs"
32
+ Requires-Dist: pytest; extra == "docs"
33
+ Requires-Dist: towncrier; extra == "docs"
34
+ Requires-Dist: dkist-sphinx-theme; extra == "docs"
16
35
 
17
36
  dkist-processing-math
18
37
  =====================
19
38
 
20
39
  dkist-processing-math contains the math functions used throughout the DKIST data processing software stack.
21
40
 
22
- * DKIST: https://nso.edu/telescopes/dki-solar-telescope/
23
41
 
24
42
  Development
25
43
  -----------
@@ -3,7 +3,6 @@ dkist-processing-math
3
3
 
4
4
  dkist-processing-math contains the math functions used throughout the DKIST data processing software stack.
5
5
 
6
- * DKIST: https://nso.edu/telescopes/dki-solar-telescope/
7
6
 
8
7
  Development
9
8
  -----------
@@ -60,9 +60,10 @@ definitions:
60
60
  - pip
61
61
  name: Push
62
62
  script:
63
- - python setup.py sdist
64
- - pip install twine
65
- - twine upload dist/*
63
+ - pip install -U pip
64
+ - pip install build twine
65
+ - python -m build --outdir wheelhouse .
66
+ - python -m twine upload --skip-existing wheelhouse/*
66
67
 
67
68
  pipelines:
68
69
  default:
@@ -73,6 +74,23 @@ pipelines:
73
74
  - step: *scan
74
75
  - step: *test
75
76
  - step: *docs
77
+ custom:
78
+ build_rc: # I.e. skip the doc check (because we might have rc dependencies)
79
+ - variables:
80
+ - name: BITBUCKET_TAG
81
+ description: "Tag version to build (e.g., 'vX.Y.ZrcR')"
82
+ - step:
83
+ name: Validate Bitbucket pipeline input
84
+ script:
85
+ - git tag | grep -q ${BITBUCKET_TAG} || { echo Tag ${BITBUCKET_TAG} not found!; exit 1; }
86
+ - echo ${BITBUCKET_TAG} | grep -q "rc[0-9]\+$" || { echo Tag ${BITBUCKET_TAG} is not an rc. SHAME!; exit 1; }
87
+ - parallel:
88
+ - step: *lint
89
+ - step: *changelog
90
+ - parallel:
91
+ - step: *scan
92
+ - step: *test
93
+ - step: *push
76
94
  tags:
77
95
  'v*':
78
96
  - parallel:
@@ -14,6 +14,11 @@ def nd_left_matrix_multiply(*, vector_stack: np.ndarray, matrix_stack: np.ndarra
14
14
  and v is a vector with dimensions ([n1, ...nn], D2).
15
15
 
16
16
  The higher-order dimensions (n1, ...nn) can be anything (or nothing), but they must be the same for M and v.
17
+ A special case where either the matrix or vector has NO higher-order dimensions is also allowed; the result will be
18
+ the single matrix/vector broadcast over the higher-order dimensionality of the other element.
19
+
20
+ Processing inputs with different numbers of higher-order dummy dimensions (i.e., dimension of length 1), while
21
+ technically possible, is not supported because it would be unclear which input should set the output shape.
17
22
 
18
23
  Parameters
19
24
  ----------
@@ -29,13 +34,7 @@ def nd_left_matrix_multiply(*, vector_stack: np.ndarray, matrix_stack: np.ndarra
29
34
  np.ndarray
30
35
  ([n1, ...nn], D1) ND stack of vectors with length D1
31
36
  """
32
- matrix_ND_shape = matrix_stack.shape[:-2]
33
- vector_ND_shape = vector_stack.shape[:-1]
34
- if matrix_ND_shape != vector_ND_shape:
35
- raise ValueError(
36
- f"Inputs must have the same shape for all but the last dimensions. "
37
- f"{matrix_ND_shape} != {vector_ND_shape}"
38
- )
37
+ _check_nd_dimensionality(matrix_stack=matrix_stack, vector_stack=vector_stack)
39
38
 
40
39
  matrix_shape = matrix_stack.shape[-2:]
41
40
  vector_size = vector_stack.shape[-1]
@@ -60,6 +59,11 @@ def nd_right_matrix_multiply(*, vector_stack: np.ndarray, matrix_stack: np.ndarr
60
59
  and v is a vector with dimensions ([n1, ...nn], D1).
61
60
 
62
61
  The higher-order dimensions (n1, ...nn) can be anything (or nothing), but they must be the same for M and v.
62
+ A special case where either the matrix or vector has NO higher-order dimensions is also allowed; the result will be
63
+ the single matrix/vector broadcast over the higher-order dimensionality of the other element.
64
+
65
+ Processing inputs with different numbers of higher-order dummy dimensions (i.e., dimension of length 1), while
66
+ technically possible, is not supported because it would be unclear which input should set the output shape.
63
67
 
64
68
  Parameters
65
69
  ----------
@@ -75,13 +79,7 @@ def nd_right_matrix_multiply(*, vector_stack: np.ndarray, matrix_stack: np.ndarr
75
79
  np.ndarray
76
80
  ([n1, ...nn], D1) ND stack of vectors with length D2
77
81
  """
78
- matrix_ND_shape = matrix_stack.shape[:-2]
79
- vector_ND_shape = vector_stack.shape[:-1]
80
- if matrix_ND_shape != vector_ND_shape:
81
- raise ValueError(
82
- f"Inputs must have the same shape for all but the last dimensions. "
83
- f"{matrix_ND_shape} != {vector_ND_shape}"
84
- )
82
+ _check_nd_dimensionality(matrix_stack=matrix_stack, vector_stack=vector_stack)
85
83
 
86
84
  matrix_shape = matrix_stack.shape[-2:]
87
85
  vector_size = vector_stack.shape[-1]
@@ -92,3 +90,20 @@ def nd_right_matrix_multiply(*, vector_stack: np.ndarray, matrix_stack: np.ndarr
92
90
 
93
91
  result = np.sum(matrix_stack * vector_stack[..., :, None], axis=-2)
94
92
  return result
93
+
94
+
95
+ def _check_nd_dimensionality(matrix_stack, vector_stack):
96
+ """
97
+ Check that the matrix and vector stacks have higher-order dimensions that can be broadcast together.
98
+
99
+ Enforces matrix stack shape[:-2] equals vector stack shape[:-1]. Raises a ValueError if the condition is not met.
100
+
101
+ A special case of a matrix or vector with no higher-order dimensions is allowed.
102
+ """
103
+ matrix_ND_shape = matrix_stack.shape[:-2]
104
+ vector_ND_shape = vector_stack.shape[:-1]
105
+ if matrix_ND_shape and vector_ND_shape and matrix_ND_shape != vector_ND_shape:
106
+ raise ValueError(
107
+ f"Inputs must have the same shape for all but the last dimensions. "
108
+ f"{matrix_ND_shape} != {vector_ND_shape}"
109
+ )
@@ -22,23 +22,52 @@ def extra_dims(num_dims) -> tuple[int]:
22
22
 
23
23
 
24
24
  @pytest.fixture
25
- def matrix_stack(extra_dims, D1, D2) -> np.ndarray:
26
- return np.random.random(extra_dims + (D1, D2))
25
+ def matrix_stack(extra_dims: tuple[int, ...], single_matrix: bool, D1: int, D2: int) -> np.ndarray:
26
+ full_shape = extra_dims + (D1, D2)
27
+ if single_matrix:
28
+ full_shape = (D1, D2)
29
+ return np.random.random(full_shape)
27
30
 
28
31
 
29
32
  @pytest.fixture
30
- def left_vector_stack(extra_dims, D2) -> np.ndarray:
31
- return np.random.random(extra_dims + (D2,))
33
+ def left_vector_stack(extra_dims: tuple[int, ...], single_vector: bool, D2: int) -> np.ndarray:
34
+ full_shape = extra_dims + (D2,)
35
+ if single_vector:
36
+ full_shape = (D2,)
37
+ return np.random.random(full_shape)
32
38
 
33
39
 
34
40
  @pytest.fixture
35
- def right_vector_stack(extra_dims, D1) -> np.ndarray:
36
- return np.random.random(extra_dims + (D1,))
41
+ def right_vector_stack(extra_dims: tuple[int, ...], single_vector: bool, D1: int) -> np.ndarray:
42
+ full_shape = extra_dims + (D1,)
43
+ if single_vector:
44
+ full_shape = (D1,)
45
+ return np.random.random(full_shape)
37
46
 
38
47
 
39
48
  # Stopping at 7 for no real reason. We need 0 and 2 for sure and then others to confirm generality.
40
- @pytest.mark.parametrize("num_dims", [0, 1, 2, 3, 4, 5, 6, 7])
41
- def test_nd_left_matrix_multiply(matrix_stack, left_vector_stack, extra_dims, D1, D2, num_dims):
49
+ # single_matrix = True tests the case where the matrix has no higher dimensions. Probably only need to test it once
50
+ # but we do it twice just because.
51
+ @pytest.mark.parametrize(
52
+ "num_dims, single_matrix, single_vector",
53
+ [
54
+ (0, False, False),
55
+ (1, False, False),
56
+ (2, False, False),
57
+ (2, True, False),
58
+ (2, False, True),
59
+ (3, False, False),
60
+ (4, False, False),
61
+ (4, False, True),
62
+ (5, False, False),
63
+ (5, True, False),
64
+ (6, False, False),
65
+ (7, False, False),
66
+ ],
67
+ )
68
+ def test_nd_left_matrix_multiply(
69
+ matrix_stack, left_vector_stack, extra_dims, single_matrix, single_vector, D1, D2, num_dims
70
+ ):
42
71
  """
43
72
  Given: Matrix and vector stacks with arbitrary higher dimensions
44
73
  When: Left matrix multiplying them
@@ -48,8 +77,19 @@ def test_nd_left_matrix_multiply(matrix_stack, left_vector_stack, extra_dims, D1
48
77
  expected = matrix_stack @ left_vector_stack
49
78
  else:
50
79
  flattened_size = np.prod(extra_dims)
51
- flat_matrix = np.reshape(matrix_stack, (flattened_size, D1, D2))
52
- flat_vector = np.reshape(left_vector_stack, (flattened_size, D2))
80
+
81
+ # If single_* is True then just tile it out to match the flattened size so the loop below works
82
+ flat_matrix = (
83
+ np.reshape(matrix_stack, (flattened_size, D1, D2))
84
+ if not single_matrix
85
+ else np.tile(matrix_stack[None, ...], (flattened_size, 1, 1))
86
+ )
87
+ flat_vector = (
88
+ np.reshape(left_vector_stack, (flattened_size, D2))
89
+ if not single_vector
90
+ else np.tile(left_vector_stack[None, ...], (flattened_size, 1))
91
+ )
92
+
53
93
  flat_expected = np.empty((flattened_size, D1))
54
94
  for i in range(flattened_size):
55
95
  flat_expected[i, :] = flat_matrix[i, :, :] @ flat_vector[i, :]
@@ -77,8 +117,29 @@ def test_nd_left_matrix_multiply_errors():
77
117
  )
78
118
 
79
119
 
80
- @pytest.mark.parametrize("num_dims", [0, 1, 2, 3, 4, 5, 6, 7])
81
- def test_nd_right_matrix_multiply(matrix_stack, right_vector_stack, extra_dims, D1, D2, num_dims):
120
+ # Stopping at 7 for no real reason. We need 0 and 2 for sure and then others to confirm generality.
121
+ # single_matrix = True tests the case where the matrix has no higher dimensions. Probably only need to test it once
122
+ # but we do it twice just because.
123
+ @pytest.mark.parametrize(
124
+ "num_dims, single_matrix, single_vector",
125
+ [
126
+ (0, False, False),
127
+ (1, False, False),
128
+ (2, False, False),
129
+ (2, True, False),
130
+ (2, False, True),
131
+ (3, False, False),
132
+ (3, True, False),
133
+ (4, False, False),
134
+ (5, False, False),
135
+ (5, False, True),
136
+ (6, False, False),
137
+ (7, False, False),
138
+ ],
139
+ )
140
+ def test_nd_right_matrix_multiply(
141
+ matrix_stack, right_vector_stack, extra_dims, single_matrix, single_vector, D1, D2, num_dims
142
+ ):
82
143
  """
83
144
  Given: Matrix and vector stacks with arbitrary higher dimensions
84
145
  When: Right matrix multiplying them
@@ -88,8 +149,20 @@ def test_nd_right_matrix_multiply(matrix_stack, right_vector_stack, extra_dims,
88
149
  expected = right_vector_stack @ matrix_stack
89
150
  else:
90
151
  flattened_size = np.prod(extra_dims)
91
- flat_matrix = np.reshape(matrix_stack, (flattened_size, D1, D2))
92
- flat_vector = np.reshape(right_vector_stack, (flattened_size, D1))
152
+
153
+ # If single_* is True then just tile it out to match the flattened size so the loop below works
154
+ flat_matrix = (
155
+ np.reshape(matrix_stack, (flattened_size, D1, D2))
156
+ if not single_matrix
157
+ else np.tile(matrix_stack[None, ...], (flattened_size, 1, 1))
158
+ )
159
+
160
+ flat_vector = (
161
+ np.reshape(right_vector_stack, (flattened_size, D1))
162
+ if not single_vector
163
+ else np.tile(right_vector_stack[None, ...], (flattened_size, 1))
164
+ )
165
+
93
166
  flat_expected = np.empty((flattened_size, D2))
94
167
  for i in range(flattened_size):
95
168
  flat_expected[i, :] = flat_vector[i, :] @ flat_matrix[i, :, :]
@@ -1,25 +1,43 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dkist-processing-math
3
- Version: 2.1.0rc1
3
+ Version: 2.1.1
4
4
  Summary: Common math functionality used in the DKIST calibrations suite
5
- Home-page: https://bitbucket.org/dkistdc/dkist_processing_math/src/master/
6
- Author: NSO / AURA
7
- Author-email: "dkistdc@nso.edu"
8
- License: MIT
5
+ Author-email: NSO / AURA <dkistdc@nso.edu>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://nso.edu/dkist/data-center/
8
+ Project-URL: Repository, https://bitbucket.org/dkistdc/dkist-processing-math/
9
9
  Project-URL: Documentation, https://docs.dkist.nso.edu/projects/math
10
+ Project-URL: Help, https://nso.atlassian.net/servicedesk/customer/portal/5
10
11
  Classifier: Programming Language :: Python
11
12
  Classifier: Programming Language :: Python :: 3
12
13
  Classifier: Programming Language :: Python :: 3.11
13
14
  Requires-Python: >=3.11
15
+ Description-Content-Type: text/x-rst
16
+ Requires-Dist: dkist-processing-common>=4.0.0
17
+ Requires-Dist: numpy>=1.24.0
18
+ Requires-Dist: scikit-image>=0.21.0
19
+ Requires-Dist: scipy>=1.11.0
20
+ Requires-Dist: peakutils>=1.3.3
14
21
  Provides-Extra: test
22
+ Requires-Dist: pytest; extra == "test"
23
+ Requires-Dist: pytest-cov; extra == "test"
24
+ Requires-Dist: pytest-mock; extra == "test"
25
+ Requires-Dist: hypothesis; extra == "test"
26
+ Requires-Dist: towncrier; extra == "test"
15
27
  Provides-Extra: docs
28
+ Requires-Dist: sphinx; extra == "docs"
29
+ Requires-Dist: sphinx-astropy; extra == "docs"
30
+ Requires-Dist: sphinx-changelog; extra == "docs"
31
+ Requires-Dist: sphinx-autoapi; extra == "docs"
32
+ Requires-Dist: pytest; extra == "docs"
33
+ Requires-Dist: towncrier; extra == "docs"
34
+ Requires-Dist: dkist-sphinx-theme; extra == "docs"
16
35
 
17
36
  dkist-processing-math
18
37
  =====================
19
38
 
20
39
  dkist-processing-math contains the math functions used throughout the DKIST data processing software stack.
21
40
 
22
- * DKIST: https://nso.edu/telescopes/dki-solar-telescope/
23
41
 
24
42
  Development
25
43
  -----------
@@ -6,10 +6,7 @@ README.rst
6
6
  bitbucket-pipelines.yml
7
7
  check_changelog_updated.sh
8
8
  pyproject.toml
9
- setup.cfg
10
- setup.py
11
9
  changelog/.gitempty
12
- changelog/14.feature.rst
13
10
  dkist_processing_math/__init__.py
14
11
  dkist_processing_math/arithmetic.py
15
12
  dkist_processing_math/feature.py
@@ -0,0 +1,5 @@
1
+ changelog
2
+ dkist_processing_math
3
+ docs
4
+ licenses
5
+ wheelhouse
@@ -0,0 +1,100 @@
1
+ [build-system]
2
+ requires = ["setuptools>=64", "setuptools_scm>=8"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [tool.setuptools.packages]
6
+ find = {}
7
+
8
+ [tool.setuptools_scm]
9
+
10
+ [project]
11
+ dynamic = ["version"]
12
+ name = "dkist-processing-math"
13
+ requires-python = ">=3.11"
14
+ description = "Common math functionality used in the DKIST calibrations suite"
15
+ readme = "README.rst"
16
+ authors = [ {name = "NSO / AURA", email = "dkistdc@nso.edu"} ]
17
+ license = {text = "BSD-3-Clause"}
18
+ classifiers = [
19
+ "Programming Language :: Python",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.11",
22
+ ]
23
+ dependencies = [
24
+ "dkist-processing-common >= 4.0.0",
25
+ "numpy >= 1.24.0",
26
+ "scikit-image >= 0.21.0",
27
+ "scipy >= 1.11.0",
28
+ "peakutils >= 1.3.3",
29
+ ]
30
+
31
+ [project.urls]
32
+ Homepage = "https://nso.edu/dkist/data-center/"
33
+ Repository = "https://bitbucket.org/dkistdc/dkist-processing-math/"
34
+ Documentation = "https://docs.dkist.nso.edu/projects/math"
35
+ Help = "https://nso.atlassian.net/servicedesk/customer/portal/5"
36
+
37
+ [project.optional-dependencies]
38
+ test = [
39
+ "pytest",
40
+ "pytest-cov",
41
+ "pytest-mock",
42
+ "hypothesis",
43
+ "towncrier",
44
+ ]
45
+ docs = [
46
+ "sphinx",
47
+ "sphinx-astropy",
48
+ "sphinx-changelog",
49
+ "sphinx-autoapi",
50
+ "pytest",
51
+ "towncrier",
52
+ "dkist-sphinx-theme",
53
+ ]
54
+
55
+ [tool.pytest.ini_options]
56
+ markers = [
57
+ "development: For tests that can only be run while developing with a sidecar proxy (as opposed to in bitbucket pipelines)"
58
+ ]
59
+
60
+ [tool.coverage.run]
61
+ omit = [
62
+ "dkist_processing_math/tests/*",
63
+ "dkist_processing_math/__init__.py",
64
+ ]
65
+
66
+ [tool.coverage.report]
67
+ show_missing = true
68
+
69
+ [tool.towncrier]
70
+ package = "dkist_processing_math"
71
+ filename = "CHANGELOG.rst"
72
+ directory = "changelog/"
73
+ issue_format = "`#{issue} <https://bitbucket.org/dkistdc/dkist-processing-math/pull-requests/{issue}>`__"
74
+ title_format = "{version} ({project_date})"
75
+ ignore = [".gitempty"]
76
+
77
+ [[tool.towncrier.type]]
78
+ directory = "feature"
79
+ name = "Features"
80
+ showcontent = true
81
+
82
+ [[tool.towncrier.type]]
83
+ directory = "bugfix"
84
+ name = "Bugfixes"
85
+ showcontent = true
86
+
87
+ [[tool.towncrier.type]]
88
+ directory = "removal"
89
+ name = "Removals"
90
+ showcontent = true
91
+
92
+ [[tool.towncrier.type]]
93
+ directory = "misc"
94
+ name = "Misc"
95
+ showcontent = true
96
+
97
+ [[tool.towncrier.type]]
98
+ directory = "doc"
99
+ name = "Documentation"
100
+ showcontent = true
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -1 +0,0 @@
1
- Add functions to broadcast matrix multiplication over extra array dimensions.
@@ -1 +0,0 @@
1
- dkist_processing_math
@@ -1,31 +0,0 @@
1
- [tool.towncrier]
2
- package = "dkist_processing_math"
3
- filename = "CHANGELOG.rst"
4
- directory = "changelog/"
5
- issue_format = "`#{issue} <https://bitbucket.org/dkistdc/dkist-processing-math/pull-requests/{issue}>`__"
6
- title_format = "{version} ({project_date})"
7
-
8
- [[tool.towncrier.type]]
9
- directory = "feature"
10
- name = "Features"
11
- showcontent = true
12
-
13
- [[tool.towncrier.type]]
14
- directory = "bugfix"
15
- name = "Bugfixes"
16
- showcontent = true
17
-
18
- [[tool.towncrier.type]]
19
- directory = "removal"
20
- name = "Removals"
21
- showcontent = true
22
-
23
- [[tool.towncrier.type]]
24
- directory = "misc"
25
- name = "Misc"
26
- showcontent = true
27
-
28
- [[tool.towncrier.type]]
29
- directory = "doc"
30
- name = "Documentation"
31
- showcontent = true
@@ -1,60 +0,0 @@
1
- [metadata]
2
- name = dkist-processing-math
3
- description = Common math functionality used in the DKIST calibrations suite
4
- long_description = file: README.rst
5
- author = NSO / AURA
6
- author_email = "dkistdc@nso.edu"
7
- license = MIT
8
- url = https://bitbucket.org/dkistdc/dkist_processing_math/src/master/
9
- project_urls =
10
- Documentation = https://docs.dkist.nso.edu/projects/math
11
- classifiers =
12
- Programming Language :: Python
13
- Programming Language :: Python :: 3
14
- Programming Language :: Python :: 3.11
15
-
16
- [options]
17
- python_requires = >=3.11
18
- setup_requires = setuptools_scm
19
- packages = find:
20
- include_package_data = True
21
- install_requires =
22
- dkist-processing-common >= 4.0.0
23
- numpy >= 1.24.0
24
- scikit-image >= 0.21.0
25
- scipy >= 1.11.0
26
- peakutils >= 1.3.3
27
-
28
- [options.extras_require]
29
- test =
30
- pytest
31
- pytest-cov
32
- pytest-mock
33
- hypothesis
34
- towncrier
35
- docs =
36
- sphinx
37
- sphinx-astropy
38
- sphinx-changelog
39
- sphinx-autoapi
40
- pytest
41
- towncrier
42
- dkist-sphinx-theme
43
-
44
- [build_docs]
45
- source-dir = docs
46
- build-dir = docs/_build
47
- all_files = 1
48
-
49
- [upload_docs]
50
- upload-dir = docs/_build/html
51
- show-response = 1
52
-
53
- [tool:pytest]
54
- markers =
55
- development: For tests that can only be run while developing with a sidecar proxy (as opposed to in bitbucket pipelines)
56
-
57
- [egg_info]
58
- tag_build =
59
- tag_date = 0
60
-
@@ -1,4 +0,0 @@
1
- """Use setup.cfg to configure packaging."""
2
- from setuptools import setup
3
-
4
- setup(use_scm_version=True)