question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Dependencies] transforms3d is unmaintained and raises concerning deprecation warnings

See original GitHub issue

I’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:

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:closed
  • Created 2 years ago
  • Reactions:3
  • Comments:14 (11 by maintainers)

github_iconTop GitHub Comments

3reactions
leyceccommented, Jun 18, 2021

Relatedly, Gentoo packaging PR is now up. Thanks again for the tremendous work!

2reactions
akaszynskicommented, Jun 19, 2021

I think that we should remove the dependency considering how little of the library we need.

Read more comments on GitHub >

github_iconTop Results From Across the Web

pyvista deprication · Issue #40 · matthew-brett/transforms3d · GitHub
[Dependencies] transforms3d is unmaintained and raises concerning ... Happy to fix up the tests and deprecation warnings - is that what you mean?...
Read more >
What does this deprecation warning mean, and how to fix it?
In short, my understanding: pip builds a tree of dependencies between packages. currently pip requires a temporary folder; this leads ...
Read more >
Dependency Deprecation Warnings | Mend Renovate
Renovate allows raising issues to warn a repository if it is using deprecated npm packages. This prevents that a dependency you use may ......
Read more >
modernizr/CHANGELOG.md - UNPKG
11, - Fix vh unit issue on ios safari / android chrome #1805 ... 38, - Fix typo in README, Update dependencies and...
Read more >
Should deprecation warnings be re-enabled for all code by ...
We rely on endusers to report bugs running our code on platforms, with dependency versions, and in situations that our testing never evaluated....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found