scikit-spatial 7.2.0__tar.gz → 8.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. scikit_spatial-8.1.0/.coveragerc +9 -0
  2. scikit_spatial-8.1.0/.dockerignore +5 -0
  3. scikit_spatial-8.1.0/.github/workflows/main.yml +61 -0
  4. scikit_spatial-8.1.0/.gitignore +16 -0
  5. scikit_spatial-8.1.0/.pre-commit-config.yaml +22 -0
  6. scikit_spatial-8.1.0/.readthedocs.yml +13 -0
  7. scikit_spatial-8.1.0/AUTHORS.rst +16 -0
  8. scikit_spatial-8.1.0/CITATION.cff +11 -0
  9. scikit_spatial-8.1.0/CONTRIBUTING.rst +87 -0
  10. scikit_spatial-8.1.0/HISTORY.rst +352 -0
  11. scikit_spatial-8.1.0/PKG-INFO +277 -0
  12. scikit_spatial-8.1.0/README.md +248 -0
  13. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.measurement.rst +13 -0
  14. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Circle.rst +16 -0
  15. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Cylinder.rst +19 -0
  16. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Line.rst +25 -0
  17. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.LineSegment.rst +13 -0
  18. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Plane.rst +27 -0
  19. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Point.rst +12 -0
  20. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Points.rst +19 -0
  21. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Sphere.rst +16 -0
  22. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Triangle.rst +24 -0
  23. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.Vector.rst +26 -0
  24. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.objects.rst +16 -0
  25. scikit_spatial-8.1.0/docs/source/api_reference/skspatial.transformation.rst +11 -0
  26. scikit_spatial-8.1.0/docs/source/api_reference/toc.rst +20 -0
  27. scikit_spatial-8.1.0/docs/source/conf.py +190 -0
  28. scikit_spatial-8.1.0/docs/source/images/logo.svg +604 -0
  29. scikit_spatial-8.1.0/docs/source/index.rst +63 -0
  30. scikit_spatial-8.1.0/docs/source/objects/circle.rst +29 -0
  31. scikit_spatial-8.1.0/docs/source/objects/cylinder.rst +31 -0
  32. scikit_spatial-8.1.0/docs/source/objects/line.rst +41 -0
  33. scikit_spatial-8.1.0/docs/source/objects/line_segment.rst +35 -0
  34. scikit_spatial-8.1.0/docs/source/objects/plane.rst +35 -0
  35. scikit_spatial-8.1.0/docs/source/objects/point_vector.rst +62 -0
  36. scikit_spatial-8.1.0/docs/source/objects/points.rst +47 -0
  37. scikit_spatial-8.1.0/docs/source/objects/sphere.rst +29 -0
  38. scikit_spatial-8.1.0/docs/source/objects/toc.rst +16 -0
  39. scikit_spatial-8.1.0/docs/source/objects/triangle.rst +57 -0
  40. scikit_spatial-8.1.0/docs/source/plotting.rst +60 -0
  41. scikit_spatial-8.1.0/docs/source/requirements.txt +6 -0
  42. scikit_spatial-8.1.0/examples/README.txt +3 -0
  43. scikit_spatial-8.1.0/examples/fitting/README.txt +3 -0
  44. scikit_spatial-8.1.0/examples/fitting/plot_line_2d.py +31 -0
  45. scikit_spatial-8.1.0/examples/fitting/plot_line_3d.py +31 -0
  46. scikit_spatial-8.1.0/examples/fitting/plot_plane.py +20 -0
  47. scikit_spatial-8.1.0/examples/intersection/README.txt +3 -0
  48. scikit_spatial-8.1.0/examples/intersection/plot_circle_circle.py +24 -0
  49. scikit_spatial-8.1.0/examples/intersection/plot_cylinder_line.py +21 -0
  50. scikit_spatial-8.1.0/examples/intersection/plot_line_circle.py +23 -0
  51. scikit_spatial-8.1.0/examples/intersection/plot_line_line_2d.py +20 -0
  52. scikit_spatial-8.1.0/examples/intersection/plot_line_line_3d.py +20 -0
  53. scikit_spatial-8.1.0/examples/intersection/plot_line_plane.py +20 -0
  54. scikit_spatial-8.1.0/examples/intersection/plot_plane_plane.py +20 -0
  55. scikit_spatial-8.1.0/examples/intersection/plot_sphere_line.py +21 -0
  56. scikit_spatial-8.1.0/examples/projection/README.txt +3 -0
  57. scikit_spatial-8.1.0/examples/projection/plot_line_plane.py +22 -0
  58. scikit_spatial-8.1.0/examples/projection/plot_point_line.py +25 -0
  59. scikit_spatial-8.1.0/examples/projection/plot_point_plane.py +24 -0
  60. scikit_spatial-8.1.0/examples/projection/plot_vector_line.py +22 -0
  61. scikit_spatial-8.1.0/examples/projection/plot_vector_plane.py +24 -0
  62. scikit_spatial-8.1.0/examples/projection/plot_vector_vector.py +24 -0
  63. scikit_spatial-8.1.0/examples/triangle/README.txt +3 -0
  64. scikit_spatial-8.1.0/examples/triangle/plot_normal.py +21 -0
  65. scikit_spatial-8.1.0/examples/triangle/plot_orthocenter.py +19 -0
  66. scikit_spatial-8.1.0/images/logo.svg +604 -0
  67. scikit_spatial-8.1.0/mypy.ini +7 -0
  68. scikit_spatial-8.1.0/pyproject.toml +108 -0
  69. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/_functions.py +3 -3
  70. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/measurement.py +13 -13
  71. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/__init__.py +1 -0
  72. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/_base_array.py +27 -31
  73. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/_base_line_plane.py +2 -5
  74. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/_base_spatial.py +0 -3
  75. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/_base_sphere.py +1 -2
  76. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/_mixins.py +2 -3
  77. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/circle.py +13 -13
  78. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/cylinder.py +33 -36
  79. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/line.py +46 -21
  80. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/line_segment.py +2 -4
  81. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/plane.py +48 -30
  82. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/point.py +6 -6
  83. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/points.py +14 -14
  84. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/sphere.py +8 -8
  85. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/triangle.py +13 -14
  86. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/objects/vector.py +28 -25
  87. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/plotting.py +2 -2
  88. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/transformation.py +2 -2
  89. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/typing.py +2 -3
  90. scikit_spatial-8.1.0/tests/__init__.py +0 -0
  91. scikit_spatial-8.1.0/tests/unit/__init__.py +0 -0
  92. scikit_spatial-8.1.0/tests/unit/objects/__init__.py +0 -0
  93. scikit_spatial-8.1.0/tests/unit/objects/test_all_objects.py +45 -0
  94. scikit_spatial-8.1.0/tests/unit/objects/test_base_array.py +49 -0
  95. scikit_spatial-8.1.0/tests/unit/objects/test_base_array_1d.py +72 -0
  96. scikit_spatial-8.1.0/tests/unit/objects/test_base_array_2d.py +20 -0
  97. scikit_spatial-8.1.0/tests/unit/objects/test_base_line_plane.py +12 -0
  98. scikit_spatial-8.1.0/tests/unit/objects/test_circle.py +254 -0
  99. scikit_spatial-8.1.0/tests/unit/objects/test_cylinder.py +337 -0
  100. scikit_spatial-8.1.0/tests/unit/objects/test_line.py +391 -0
  101. scikit_spatial-8.1.0/tests/unit/objects/test_line_plane.py +52 -0
  102. scikit_spatial-8.1.0/tests/unit/objects/test_line_segment.py +95 -0
  103. scikit_spatial-8.1.0/tests/unit/objects/test_plane.py +507 -0
  104. scikit_spatial-8.1.0/tests/unit/objects/test_point.py +26 -0
  105. scikit_spatial-8.1.0/tests/unit/objects/test_points.py +125 -0
  106. scikit_spatial-8.1.0/tests/unit/objects/test_sphere.py +201 -0
  107. scikit_spatial-8.1.0/tests/unit/objects/test_triangle.py +186 -0
  108. scikit_spatial-8.1.0/tests/unit/objects/test_vector.py +336 -0
  109. scikit_spatial-8.1.0/tests/unit/test_functions.py +39 -0
  110. scikit_spatial-8.1.0/tests/unit/test_measurement.py +78 -0
  111. scikit_spatial-8.1.0/tox.ini +47 -0
  112. scikit_spatial-8.1.0/uv.lock +906 -0
  113. scikit_spatial-7.2.0/PKG-INFO +0 -255
  114. scikit_spatial-7.2.0/README.rst +0 -224
  115. scikit_spatial-7.2.0/pyproject.toml +0 -70
  116. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/LICENSE +0 -0
  117. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/__init__.py +0 -0
  118. {scikit_spatial-7.2.0 → scikit_spatial-8.1.0}/src/skspatial/py.typed +0 -0
@@ -0,0 +1,9 @@
1
+ [run]
2
+ source =
3
+ src/
4
+ omit =
5
+ */plotting.py
6
+
7
+ [report]
8
+ exclude_lines =
9
+ def *plot*
@@ -0,0 +1,5 @@
1
+ **/*.ipynb
2
+ **/*.md5
3
+ **/*.pickle
4
+ **/*.pyc
5
+ docs/source/gallery
@@ -0,0 +1,61 @@
1
+ name: scikit-spatial
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ tags:
7
+ - "v*.*.*"
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v3
22
+ with:
23
+ version: "0.4.18"
24
+
25
+ - name: Set up Python ${{ matrix.python-version }}
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: ${{ matrix.python-version }}
29
+
30
+ - name: Install tox
31
+ run: uv tool install tox --with tox-uv --with tox-gh
32
+
33
+ - name: Run tox
34
+ run: tox
35
+
36
+ - name: Upload coverage report to codecov
37
+ if: matrix.python-version == '3.12'
38
+ uses: codecov/codecov-action@v4
39
+ with:
40
+ fail_ci_if_error: true
41
+ verbose: true
42
+ token: ${{ secrets.CODECOV_TOKEN }}
43
+
44
+ publish:
45
+ needs: build
46
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
47
+
48
+ runs-on: ubuntu-latest
49
+
50
+ steps:
51
+ - uses: actions/checkout@v2
52
+
53
+ - name: Install uv
54
+ uses: astral-sh/setup-uv@v3
55
+ with:
56
+ version: "0.4.18"
57
+
58
+ - name: Build and publish to PyPI
59
+ run: |
60
+ uv build
61
+ uv publish --token ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,16 @@
1
+ *.egg-info
2
+ *.ipynb
3
+ *.pyc
4
+ *.xml
5
+ .*/
6
+ .coverage
7
+ .python-version
8
+ build/
9
+ dist/
10
+ docs/build/
11
+ docs/source/api_reference/*/
12
+ docs/source/computations/*/
13
+ docs/source/gallery/
14
+ htmlcov/
15
+
16
+ !.github/
@@ -0,0 +1,22 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.4.0
4
+ hooks:
5
+ - id: check-ast
6
+ - id: check-builtin-literals
7
+ - id: check-docstring-first
8
+ - id: check-merge-conflict
9
+ - id: check-yaml
10
+ - id: end-of-file-fixer
11
+ - id: trailing-whitespace
12
+ - repo: https://github.com/pre-commit/mirrors-prettier
13
+ rev: v3.0.0-alpha.4
14
+ hooks:
15
+ - id: prettier
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.2.1
18
+ hooks:
19
+ - id: ruff
20
+ args: [--fix, --preview]
21
+ - id: ruff-format
22
+ args: [--preview]
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ build:
4
+ os: ubuntu-22.04
5
+ tools:
6
+ python: "3.8"
7
+
8
+ sphinx:
9
+ configuration: docs/source/conf.py
10
+
11
+ python:
12
+ install:
13
+ - requirements: docs/source/requirements.txt
@@ -0,0 +1,16 @@
1
+ =======
2
+ Credits
3
+ =======
4
+
5
+ Development Lead
6
+ ----------------
7
+
8
+ * Andrew Hynes (https://github.com/ajhynes7)
9
+
10
+
11
+ Contributors
12
+ ------------
13
+
14
+ * Marcelo Moreno (https://github.com/martxelo)
15
+
16
+ * Cristiano Pizzamiglio (https://github.com/CristianoPizzamiglio)
@@ -0,0 +1,11 @@
1
+ cff-version: 1.2.0
2
+ title: "scikit-spatial: Spatial objects and computations based on NumPy arrays"
3
+ message: "If you use this software, please cite it using the metadata from this file."
4
+ type: software
5
+ authors:
6
+ - given-names: Andrew
7
+ family-names: Hynes
8
+ email: andrewjhynes@gmail.com
9
+ license: BSD-3-Clause
10
+ url: https://scikit-spatial.readthedocs.io
11
+ repository-code: https://github.com/ajhynes7/scikit-spatial
@@ -0,0 +1,87 @@
1
+ ============
2
+ Contributing
3
+ ============
4
+
5
+ You can contribute in many ways:
6
+
7
+ Types of Contributions
8
+ ----------------------
9
+
10
+ Report Bugs
11
+ ~~~~~~~~~~~
12
+
13
+ Report bugs at https://github.com/ajhynes7/scikit-spatial/issues.
14
+
15
+ If you are reporting a bug, please include:
16
+
17
+ * Your operating system name and version.
18
+ * Any details about your local setup that might be helpful in troubleshooting.
19
+ * Detailed steps to reproduce the bug.
20
+
21
+ Fix Bugs
22
+ ~~~~~~~~
23
+
24
+ Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
25
+ wanted" is open to whoever wants to implement it.
26
+
27
+ Implement Features
28
+ ~~~~~~~~~~~~~~~~~~
29
+
30
+ Look through the GitHub issues for features. Anything tagged with "enhancement"
31
+ and "help wanted" is open to whoever wants to implement it.
32
+
33
+ Submit Feedback
34
+ ~~~~~~~~~~~~~~~
35
+
36
+ The best way to send feedback is to file an issue at https://github.com/ajhynes7/scikit-spatial/issues.
37
+
38
+
39
+ Get Started!
40
+ ------------
41
+
42
+ Ready to contribute? Here's how to set up `scikit-spatial` for local development.
43
+
44
+ 1. Fork the `scikit-spatial` repo on GitHub.
45
+
46
+ 2. Create a branch for local development::
47
+
48
+ $ git checkout -b name-of-your-bugfix-or-feature
49
+
50
+ Now you can make your changes locally.
51
+
52
+ 3. When you're done making changes, check that your changes pass linting and tests.
53
+ See ``.travis.yml`` for test commands.
54
+
55
+ 4. Commit your changes and push your branch to GitHub::
56
+
57
+ $ git add .
58
+ $ git commit -m "Your detailed description of your changes."
59
+ $ git push origin name-of-your-bugfix-or-feature
60
+
61
+ 5. Submit a pull request through the GitHub website.
62
+
63
+
64
+ Pull Request Guidelines
65
+ -----------------------
66
+
67
+ Before you submit a pull request, check that it meets these guidelines:
68
+
69
+ 1. The pull request should include tests.
70
+ 2. If the pull request adds functionality, the docs should be updated. Put
71
+ your new functionality into a function with a docstring.
72
+ 3. Check https://travis-ci.org/ajhynes7/scikit-spatial/pull_requests
73
+ and make sure that the tests pass for all supported Python versions.
74
+
75
+
76
+ Deploying
77
+ ---------
78
+
79
+ A reminder for the maintainers on how to deploy.
80
+ Make sure all your changes are committed (including an entry in HISTORY.rst).
81
+ Then run::
82
+
83
+ $ bumpversion patch # possible: major / minor / patch
84
+ $ git push
85
+ $ git push --tags
86
+
87
+ Travis will then deploy to PyPI if tests pass.
@@ -0,0 +1,352 @@
1
+ =======
2
+ History
3
+ =======
4
+
5
+ 8.1.0 (2024-12-23)
6
+ ------------------
7
+
8
+ Features
9
+ ~~~~~~~~
10
+ - Add optiont to return error for line and plane of best fit.
11
+
12
+
13
+ 8.0.0 (2024-10-03)
14
+ ------------------
15
+
16
+ Features
17
+ ~~~~~~~~
18
+ - Support NumPy 2.0.
19
+
20
+
21
+ 7.2.2 (2024-03-27)
22
+ ------------------
23
+
24
+ Fixes
25
+ ~~~~~
26
+ - Change reference in `Plane.best_fit` docstring as the previous link was broken.
27
+ - Change `README.rst` to `README.md` as GitHub was not rendering the former well.
28
+
29
+
30
+ 7.2.1 (2024-02-17)
31
+ ------------------
32
+
33
+ Docs
34
+ ~~~~
35
+ Include new methods in the documentation:
36
+ - `Line.project_points`
37
+ - `Line.distance_points`
38
+ - `Plane.project_points`
39
+ - `Plane.distance_points`
40
+
41
+
42
+ 7.2.0 (2024-02-12)
43
+ ------------------
44
+
45
+ Features
46
+ ~~~~~~~~
47
+ - Add new methods:
48
+ - `Line.project_points`
49
+ - `Line.distance_points`
50
+ - `Plane.project_points`
51
+ - `Plane.distance_points`
52
+
53
+
54
+ 7.1.1 (2024-01-29)
55
+ ------------------
56
+
57
+ Fixes
58
+ ~~~~~
59
+ - Restore import of `importlib_metadata`.
60
+
61
+
62
+ 7.1.0 (2024-01-28)
63
+ ------------------
64
+
65
+ Features
66
+ ~~~~~~~~
67
+ - Add support for Python 3.12.
68
+
69
+
70
+ 7.0.0 (2023-03-26)
71
+ ------------------
72
+
73
+ Breaking Changes
74
+ ~~~~~~~~~~~~~~~~
75
+ - Drop support for Python 3.7.
76
+ - Increase minimum NumPy version to 1.17.3 (to be compatible with the new dependency SciPy).
77
+
78
+ Features
79
+ ~~~~~~~~
80
+ - Add `Cylinder.best_fit` method.
81
+
82
+
83
+ 6.8.1 (2023-03-07)
84
+ ------------------
85
+
86
+ Fixes
87
+ ~~~~~
88
+ - Add missing `plotter` method to `LineSegment`.
89
+
90
+
91
+ 6.8.0 (2023-01-28)
92
+ ------------------
93
+
94
+ Features
95
+ ~~~~~~~~
96
+ - Add `Circle.from_points` method.
97
+ - Add `check_coplanar` kwarg to `Line.intersect_line`.
98
+ - Lower minimum NumPy version to 1.16.
99
+
100
+
101
+ 6.7.0 (2022-12-28)
102
+ ------------------
103
+
104
+ Features
105
+ ~~~~~~~~
106
+ - Add `Circle.intersect_circle` method.
107
+
108
+
109
+ 6.6.0 (2022-11-20)
110
+ ------------------
111
+
112
+ Features
113
+ ~~~~~~~~
114
+ - Add `Vector.angle_signed_3d` method.
115
+
116
+
117
+ 6.5.0 (2022-09-05)
118
+ ------------------
119
+
120
+ Features
121
+ ~~~~~~~~
122
+ - Add `LineSegment` class.
123
+
124
+ Docs
125
+ ~~~~
126
+ - Add plot of Cylinder-Line Intersection to the gallery.
127
+
128
+
129
+ 6.4.1 (2022-06-21)
130
+ ------------------
131
+
132
+ Fixes
133
+ ~~~~~
134
+ - Update the `dimension` value of a slice, instead of using the value of the original array.
135
+ - Fix the output radius of `Cylinder.to_mesh`.
136
+
137
+
138
+ 6.4.0 (2022-04-07)
139
+ ------------------
140
+
141
+ Features
142
+ ~~~~~~~~
143
+ - Add `Plane.project_line` method to project a line onto a plane.
144
+
145
+
146
+ 6.3.0 (2022-02-26)
147
+ ------------------
148
+
149
+ Features
150
+ ~~~~~~~~
151
+ - Add `Circle.best_fit` method to fit a circle to 2D points.
152
+ - Add `area_signed` function to compute the signed area of a polygon using the shoelace algorithm.
153
+
154
+
155
+ 6.2.1 (2022-01-08)
156
+ ------------------
157
+
158
+ Fixes
159
+ ~~~~~
160
+ - Allow for versions of `importlib-metadata` above 1.
161
+
162
+
163
+ 6.2.0 (2021-10-06)
164
+ ------------------
165
+
166
+ Features
167
+ ~~~~~~~~
168
+ - Add `infinite` keyword argument to `Cylinder.intersect_line` with a default value of `True`.
169
+ Now the line can be intersected with a finite cylinder by passing `infinite=False`.
170
+
171
+ Fixes
172
+ ~~~~~
173
+ - Fix the return type hint of `Plane.intersect_line` (from Plane to Point).
174
+
175
+
176
+ 6.1.1 (2021-09-11)
177
+ ------------------
178
+
179
+ Fixes
180
+ ~~~~~
181
+ - Add code to `skspatial.__init__.py` to keep the __version__ attribute in sync with the version in `pyproject.toml`.
182
+
183
+
184
+ 6.1.0 (2021-07-25)
185
+ ------------------
186
+
187
+ Features
188
+ ~~~~~~~~
189
+ - Add `lateral_surface_area` and `surface_area` methods to `Cylinder`.
190
+
191
+ Improvements
192
+ ~~~~~~~~~~~~
193
+ - Remove unnecessary `np.copy` from `Circle.intersect_line`.
194
+ - Complete the docstring for `Line.distance_point`.
195
+
196
+
197
+ 6.0.1 (2021-03-25)
198
+ ------------------
199
+
200
+ Fixes
201
+ ~~~~~
202
+ * Wrap `filterwarnings("error")` in a `catch_warnings` context manager, in `__BaseArray.__new__()`.
203
+ Now the warning level is reset at the end of the context manager.
204
+
205
+
206
+ 6.0.0 (2021-03-21)
207
+ ------------------
208
+
209
+ Breaking changes
210
+ ~~~~~~~~~~~~~~~~
211
+ * Require NumPy >= 1.20 to make use of the static types introduced in 1.20.
212
+ Now numpy-stubs doesn't need to be installed for static type checking.
213
+ * Move tests outside of package, and move package under ``src`` directory.
214
+ This ensures that tox is running the tests with the installed package.
215
+ * Switch from ``setup.py`` to ``pyproject.toml``.
216
+ * Add more ValueErrors for clarity, such as "The lines must have the same dimension"
217
+ ValueError in ``Line.intersect_line``.
218
+
219
+ Features
220
+ ~~~~~~~~
221
+ * Add ``Cylinder`` class.
222
+ * Add ``Vector.different_direction`` method.
223
+ * Add ``Sphere.best_fit`` method.
224
+
225
+ Refactoring
226
+ ~~~~~~~~~~~
227
+ * Delete ``Vector.dot`` method. The ``dot`` method is already inherited from NumPy.
228
+
229
+
230
+ 5.2.0 (2020-12-19)
231
+ ------------------
232
+ * Add keyword arguments to ``Plane.best_fit`` and ``Line.best_fit``.
233
+ These are passed to ``np.linalg.svd``.
234
+
235
+
236
+ 5.1.0 (2020-12-07)
237
+ ------------------
238
+ * Edit type annotations to support Python 3.6.
239
+ * CI now tests Python versions 3.6-3.9.
240
+
241
+
242
+ 5.0.0 (2020-11-23)
243
+ ------------------
244
+ * Return regular ``ndarray`` from inherited NumPy functions, e.g. ``vector.sum()``
245
+ - This prevents getting spatial objects with disallowed dimensions, such as a 0-D vector.
246
+ - This fixes broken examples in the README.
247
+ * Test README examples with doctest.
248
+ * Replace tox with Docker.
249
+ - Docker multi-stage builds are a convenient feature for isolating test environments.
250
+ * Organize requirements into multiple files.
251
+ - This makes it easy to install only what's needed for each test environment.
252
+
253
+
254
+ 4.0.1 (2020-02-01)
255
+ ------------------
256
+ * Fix to replace Python 3.6 with 3.8 in the setup.py file.
257
+
258
+
259
+ 4.0.0 (2020-02-01)
260
+ ------------------
261
+ * Drop support for Python 3.6 (this allows for postponed evaluation of type annotations, introduced in Python 3.7).
262
+ * Add Triangle class.
263
+
264
+
265
+ 3.0.0 (2019-11-02)
266
+ ------------------
267
+ * Add `Points.normalize_distance` method to fit points inside a unit sphere.
268
+ * Change `Points.mean_center` to only return the centroid of the points if specified.
269
+ This allows for chaining with other transformations on points, like `normalize_distance`.
270
+ * Add `to_array` method to convert an array based object to a regular NumPy array.
271
+
272
+
273
+ 2.0.1 (2019-08-15)
274
+ ------------------
275
+ * Use installation of numpy-stubs from its GitHub repository instead of a custom numpy stubs folder.
276
+ * Introduce 'array_like' type annotation as the union of np.ndarray and Sequence.
277
+ * Add py.typed file so that annotations can be used when scikit-spatial is installed.
278
+
279
+
280
+ 2.0.0 (2019-07-20)
281
+ ------------------
282
+ * Replace some NumPy functions with ones from Python math module. The math functions are faster than NumPy when the inputs are scalars.
283
+ The tolerances for isclose are now rel_tol and abs_tol instead of rtol and atol.
284
+ The math.isclose function is preferable to np.isclose for three main reasons:
285
+ * It is symmetric (isclose(a, b) == isclose(b, a)).
286
+ * It has a default absolute tolerance of zero.
287
+ * It does not correlate the absolute and relative tolerances.
288
+ * Add type annotations to methods and run mypy in Travis CI.
289
+ * Add round method to array objects (Point, Points and Vector). Now a Vector is returned when a Vector is rounded.
290
+ * Add methods to return coordinates on the surface of a Plane or Sphere. The coordinates are used for 3D plotting.
291
+ * Improve Plane plotting so that vertical planes can be plotted.
292
+
293
+
294
+ 1.5.0 (2019-07-04)
295
+ ------------------
296
+ * Add Circle and Sphere spatial objects.
297
+ * Add scalar keyword argument to Vector plot methods.
298
+ * Improve plotting of Plane. The x and y limits now treat the plane point as the origin.
299
+
300
+
301
+ 1.4.2 (2019-06-21)
302
+ ------------------
303
+ * Extra release because regex for version tags was incorrect in Travis.
304
+
305
+
306
+ 1.4.1 (2019-06-21)
307
+ ------------------
308
+ * Extra release because Travis did not deploy the last one.
309
+
310
+
311
+ 1.4.0 (2019-06-21)
312
+ ------------------
313
+ * Add functions `plot_2d` and `plot_3d` to facilitate plotting multiple spatial objects.
314
+ * Change `_plotting` module name to `plotting`, because it now contains some public functions.
315
+
316
+
317
+ 1.3.0 (2019-06-19)
318
+ ------------------
319
+ * Remove dpcontracts as a dependency. The contracts were causing performance issues.
320
+ * Add 'dimension' attribute to all spatial objects.
321
+ * Add Vector.angle_signed method.
322
+ * Add Line.from_slope method.
323
+
324
+
325
+ 1.2.0 (2019-06-11)
326
+ ------------------
327
+ * Move tests into skspatial directory. This allows for importing custom hypothesis strategies for testing other projects.
328
+ * Drop support for Python 3.5 (matplotlib requires >= 3.6).
329
+
330
+
331
+ 1.1.0 (2019-05-04)
332
+ ------------------
333
+ * Add methods for 2D and 3D plotting.
334
+ * Rename private modules and functions to include leading underscore.
335
+
336
+
337
+ 1.0.1 (2019-03-29)
338
+ ------------------
339
+ * Support Python versions 3.5-3.7.
340
+
341
+
342
+ 1.0.0 (2019-03-26)
343
+ ------------------
344
+ * Change Vector and Point to be subclasses of the NumPy `ndarray`.
345
+ * Change all spatial objects to accept `array_like` inputs, such as a list or tuple.
346
+ * Add the Points class to represent multiple points in space. This is also an `ndarray` subclass.
347
+ * The dimension of the objects is no longer automatically set to 3D. Points and vectors can be 2D and up.
348
+
349
+
350
+ 0.1.0 (2019-02-27)
351
+ ------------------
352
+ * First release on PyPI.