[Dependencies] transforms3d is unmaintained and raises concerning deprecation warnings
See original GitHub issueI’m currently packaging PyVista for inclusion in Gentoo Linux’s Science overlay. yay! I couldn’t help but notice that a mandatory runtime dependency of PyVista is unmaintained, which both complicates packaging and raises concerns with forward-compatibility and runtime stability.
Yes, we are sadly speaking of transforms3d. It’s still a solid little API, but:
- Its last stable release was exactly four years ago. Yup, exactly to the day of this issue. There’s only a 0.3% of that happening, which would mean something if we were all numerologists.
- Its last commit was nearly a year ago.
Most concerningly, the transform3d test suite now raises this ominous wall of eyebrow-curling deprecation warnings:
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/quaternions.py:26: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
_MAX_FLOAT = np.maximum_sctype(np.float)
transforms3d/quaternions.py:27
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/quaternions.py:27: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
_FLOAT_EPS = np.finfo(np.float).eps
transforms3d/reflections.py:16
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/reflections.py:16: DeprecationWarning: invalid escape sequence \|
""" Matrix to reflect in plane through origin, orthogonal to `normal`
../../../../../../../usr/lib/python3.9/site-packages/nose/importer.py:12
/usr/lib/python3.9/site-packages/nose/importer.py:12: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
from imp import find_module, load_module, acquire_lock, release_lock
transforms3d/tests/test_affines.py:15
transforms3d/tests/test_affines.py:15: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_compose will be ignored
def test_compose():
transforms3d/tests/test_affines.py:23
transforms3d/tests/test_affines.py:23: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_de_compose will be ignored
@dec.slow
transforms3d/tests/test_affines.py:41
transforms3d/tests/test_affines.py:41: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_decompose_shears will be ignored
def test_decompose_shears():
transforms3d/tests/test_affines.py:47
transforms3d/tests/test_affines.py:47: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_rand_de_compose will be ignored
def test_rand_de_compose():
transforms3d/_gohlketransforms.py:38
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/_gohlketransforms.py:38: DeprecationWarning: invalid escape sequence \*
"""Homogeneous Transformation Matrices and Quaternions.
transforms3d/_gohlketransforms.py:888
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/_gohlketransforms.py:888: DeprecationWarning: invalid escape sequence \*
"""Return affine transform matrix to register two point sets.
transforms3d/_gohlketransforms.py:997
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/_gohlketransforms.py:997: DeprecationWarning: invalid escape sequence \*
"""Return matrix to transform given 3D point set into second point set.
transforms3d/tests/test_implementations.py:25
transforms3d/tests/test_implementations.py:25: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_quaternion_imps will be ignored
def test_quaternion_imps():
transforms3d/tests/test_implementations.py:38
transforms3d/tests/test_implementations.py:38: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_euler_imps will be ignored
def test_euler_imps():
transforms3d/tests/test_implementations.py:48
transforms3d/tests/test_implementations.py:48: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_zooms_shears will be ignored
def test_zooms_shears():
transforms3d/tests/test_implementations.py:75
transforms3d/tests/test_implementations.py:75: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_reflections will be ignored
def test_reflections():
transforms3d/tests/test_implementations.py:91
transforms3d/tests/test_implementations.py:91: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_shears will be ignored
def test_shears():
transforms3d/tests/test_quaternions.py:72
transforms3d/tests/test_quaternions.py:72: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_quat2mat will be ignored
def test_quat2mat():
transforms3d/tests/test_quaternions.py:89
transforms3d/tests/test_quaternions.py:89: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_qinverse will be ignored
def test_qinverse():
transforms3d/tests/test_quaternions.py:101
transforms3d/tests/test_quaternions.py:101: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_qeye will be ignored
def test_qeye():
transforms3d/tests/test_quaternions.py:108
transforms3d/tests/test_quaternions.py:108: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_qnorm will be ignored
def test_qnorm():
transforms3d/tests/test_quaternions.py:116
transforms3d/tests/test_quaternions.py:116: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_qmult will be ignored
def test_qmult():
transforms3d/tests/test_quaternions.py:124
transforms3d/tests/test_quaternions.py:124: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_qrotate will be ignored
def test_qrotate():
transforms3d/tests/test_quaternions.py:132
transforms3d/tests/test_quaternions.py:132: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_quaternion_reconstruction will be ignored
def test_quaternion_reconstruction():
transforms3d/tests/test_quaternions.py:219
transforms3d/tests/test_quaternions.py:219: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_axis_angle will be ignored
def test_axis_angle():
transforms3d/tests/test_taitbryan.py:17
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/tests/test_taitbryan.py:17: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
FLOAT_EPS = np.finfo(np.float).eps
transforms3d/tests/test_taitbryan.py:123
transforms3d/tests/test_taitbryan.py:123: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_euler_instability will be ignored
def test_euler_instability():
transforms3d/tests/test_taitbryan.py:142
transforms3d/tests/test_taitbryan.py:142: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_quats will be ignored
def test_quats():
transforms3d/tests/test_zooms_shears.py:16
transforms3d/tests/test_zooms_shears.py:16: PytestCollectionWarning: yield tests were removed in pytest 4.0 - test_zdir_zmat_aff will be ignored
def test_zdir_zmat_aff():
transforms3d/tests/test_axangles.py: 97 warnings
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/axangles.py:197: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
R = np.asarray(aff, dtype=np.float)
transforms3d/tests/test_axangles.py: 166 warnings
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/axangles.py:147: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
M = np.asarray(mat, dtype=np.float)
transforms3d/tests/test_quaternions.py::test_quat2axangle
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/quaternions.py:455: RuntimeWarning: overflow encountered in double_scalars
Nq = w * w + x * x + y * y + z * z
transforms3d/tests/test_reflections.py: 88 warnings
/var/tmp/portage/dev-python/transforms3d-0.3.1/work/transforms3d-0.3.1/transforms3d/reflections.py:46: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
normal = np.asarray(normal, dtype=np.float)
-- Docs: https://docs.pytest.org/en/stable/warnings.html
So, transform3d is no longer testable in entirety and likely to break under future CPython and NumPy releases. That’s not a good look.
Jettisoning transform3d wouldn’t be the worst idea. The simplest solution would probably be to just embed the subset of transforms3d required by PyVista into PyVista itself. Since transforms3d was thankfully published under the permissive 2-clause BSD license, there should be no real roadblocks there.
Thanks as always for the tremendous visualization work, everyone! PyVista makes VTK a thing of terrifying beauty in our web app. 👍
Issue Analytics
- State:
- Created 2 years ago
- Reactions:3
- Comments:14 (11 by maintainers)
Top GitHub Comments
Relatedly, Gentoo packaging PR is now up. Thanks again for the tremendous work!
I think that we should remove the dependency considering how little of the library we need.