mink 0.0.8__tar.gz → 0.0.9__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 (357) hide show
  1. {mink-0.0.8 → mink-0.0.9}/PKG-INFO +2 -2
  2. {mink-0.0.8 → mink-0.0.9}/mink/lie/se3.py +78 -77
  3. {mink-0.0.8 → mink-0.0.9}/mink/lie/so3.py +84 -56
  4. {mink-0.0.8 → mink-0.0.9}/pyproject.toml +2 -2
  5. {mink-0.0.8 → mink-0.0.9}/LICENSE +0 -0
  6. {mink-0.0.8 → mink-0.0.9}/README.md +0 -0
  7. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/.gitignore +0 -0
  8. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/@plugins_snapshot.json +0 -0
  9. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/__future__.data.json +0 -0
  10. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/__future__.meta.json +0 -0
  11. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_ast.data.json +0 -0
  12. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_ast.meta.json +0 -0
  13. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_codecs.data.json +0 -0
  14. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_codecs.meta.json +0 -0
  15. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_collections_abc.data.json +0 -0
  16. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_collections_abc.meta.json +0 -0
  17. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_ctypes.data.json +0 -0
  18. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_ctypes.meta.json +0 -0
  19. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_thread.data.json +0 -0
  20. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_thread.meta.json +0 -0
  21. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_typeshed/__init__.data.json +0 -0
  22. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_typeshed/__init__.meta.json +0 -0
  23. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_warnings.data.json +0 -0
  24. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/_warnings.meta.json +0 -0
  25. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/abc.data.json +0 -0
  26. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/abc.meta.json +0 -0
  27. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/array.data.json +0 -0
  28. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/array.meta.json +0 -0
  29. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/ast.data.json +0 -0
  30. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/ast.meta.json +0 -0
  31. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/builtins.data.json +0 -0
  32. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/builtins.meta.json +0 -0
  33. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/codecs.data.json +0 -0
  34. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/codecs.meta.json +0 -0
  35. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/collections/__init__.data.json +0 -0
  36. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/collections/__init__.meta.json +0 -0
  37. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/collections/abc.data.json +0 -0
  38. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/collections/abc.meta.json +0 -0
  39. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/contextlib.data.json +0 -0
  40. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/contextlib.meta.json +0 -0
  41. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/ctypes/__init__.data.json +0 -0
  42. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/ctypes/__init__.meta.json +0 -0
  43. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/dataclasses.data.json +0 -0
  44. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/dataclasses.meta.json +0 -0
  45. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/datetime.data.json +0 -0
  46. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/datetime.meta.json +0 -0
  47. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/__init__.data.json +0 -0
  48. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/__init__.meta.json +0 -0
  49. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/charset.data.json +0 -0
  50. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/charset.meta.json +0 -0
  51. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/contentmanager.data.json +0 -0
  52. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/contentmanager.meta.json +0 -0
  53. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/errors.data.json +0 -0
  54. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/errors.meta.json +0 -0
  55. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/header.data.json +0 -0
  56. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/header.meta.json +0 -0
  57. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/message.data.json +0 -0
  58. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/message.meta.json +0 -0
  59. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/policy.data.json +0 -0
  60. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/email/policy.meta.json +0 -0
  61. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/enum.data.json +0 -0
  62. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/enum.meta.json +0 -0
  63. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/genericpath.data.json +0 -0
  64. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/genericpath.meta.json +0 -0
  65. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/__init__.data.json +0 -0
  66. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/__init__.meta.json +0 -0
  67. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/abc.data.json +0 -0
  68. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/abc.meta.json +0 -0
  69. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/machinery.data.json +0 -0
  70. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/machinery.meta.json +0 -0
  71. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/metadata/__init__.data.json +0 -0
  72. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/metadata/__init__.meta.json +0 -0
  73. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/metadata/_meta.data.json +0 -0
  74. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/metadata/_meta.meta.json +0 -0
  75. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/readers.data.json +0 -0
  76. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/readers.meta.json +0 -0
  77. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/resources/__init__.data.json +0 -0
  78. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/resources/__init__.meta.json +0 -0
  79. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/resources/abc.data.json +0 -0
  80. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/importlib/resources/abc.meta.json +0 -0
  81. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/io.data.json +0 -0
  82. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/io.meta.json +0 -0
  83. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/logging/__init__.data.json +0 -0
  84. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/logging/__init__.meta.json +0 -0
  85. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/math.data.json +0 -0
  86. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/math.meta.json +0 -0
  87. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/mink/limits/limit.data.json +0 -0
  88. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/mink/limits/limit.meta.json +0 -0
  89. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/mmap.data.json +0 -0
  90. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/mmap.meta.json +0 -0
  91. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/__init__.data.json +0 -0
  92. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/__init__.meta.json +0 -0
  93. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_pytesttester.data.json +0 -0
  94. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_pytesttester.meta.json +0 -0
  95. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/__init__.data.json +0 -0
  96. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/__init__.meta.json +0 -0
  97. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_add_docstring.data.json +0 -0
  98. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_add_docstring.meta.json +0 -0
  99. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_array_like.data.json +0 -0
  100. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_array_like.meta.json +0 -0
  101. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_callable.data.json +0 -0
  102. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_callable.meta.json +0 -0
  103. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_char_codes.data.json +0 -0
  104. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_char_codes.meta.json +0 -0
  105. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_dtype_like.data.json +0 -0
  106. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_dtype_like.meta.json +0 -0
  107. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_extended_precision.data.json +0 -0
  108. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_extended_precision.meta.json +0 -0
  109. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_nbit.data.json +0 -0
  110. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_nbit.meta.json +0 -0
  111. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_nested_sequence.data.json +0 -0
  112. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_nested_sequence.meta.json +0 -0
  113. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_scalars.data.json +0 -0
  114. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_scalars.meta.json +0 -0
  115. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_shape.data.json +0 -0
  116. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_shape.meta.json +0 -0
  117. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_ufunc.data.json +0 -0
  118. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_typing/_ufunc.meta.json +0 -0
  119. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_utils/__init__.data.json +0 -0
  120. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_utils/__init__.meta.json +0 -0
  121. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_utils/_convertions.data.json +0 -0
  122. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/_utils/_convertions.meta.json +0 -0
  123. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/__init__.data.json +0 -0
  124. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/__init__.meta.json +0 -0
  125. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_asarray.data.json +0 -0
  126. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_asarray.meta.json +0 -0
  127. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_internal.data.json +0 -0
  128. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_internal.meta.json +0 -0
  129. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_type_aliases.data.json +0 -0
  130. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_type_aliases.meta.json +0 -0
  131. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_ufunc_config.data.json +0 -0
  132. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/_ufunc_config.meta.json +0 -0
  133. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/arrayprint.data.json +0 -0
  134. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/arrayprint.meta.json +0 -0
  135. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/defchararray.data.json +0 -0
  136. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/defchararray.meta.json +0 -0
  137. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/einsumfunc.data.json +0 -0
  138. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/einsumfunc.meta.json +0 -0
  139. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/fromnumeric.data.json +0 -0
  140. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/fromnumeric.meta.json +0 -0
  141. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/function_base.data.json +0 -0
  142. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/function_base.meta.json +0 -0
  143. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/multiarray.data.json +0 -0
  144. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/multiarray.meta.json +0 -0
  145. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/numeric.data.json +0 -0
  146. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/numeric.meta.json +0 -0
  147. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/numerictypes.data.json +0 -0
  148. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/numerictypes.meta.json +0 -0
  149. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/records.data.json +0 -0
  150. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/records.meta.json +0 -0
  151. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/shape_base.data.json +0 -0
  152. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/shape_base.meta.json +0 -0
  153. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/umath.data.json +0 -0
  154. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/core/umath.meta.json +0 -0
  155. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ctypeslib.data.json +0 -0
  156. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ctypeslib.meta.json +0 -0
  157. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/dtypes.data.json +0 -0
  158. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/dtypes.meta.json +0 -0
  159. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/exceptions.data.json +0 -0
  160. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/exceptions.meta.json +0 -0
  161. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/__init__.data.json +0 -0
  162. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/__init__.meta.json +0 -0
  163. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/_pocketfft.data.json +0 -0
  164. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/_pocketfft.meta.json +0 -0
  165. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/helper.data.json +0 -0
  166. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/fft/helper.meta.json +0 -0
  167. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/__init__.data.json +0 -0
  168. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/__init__.meta.json +0 -0
  169. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/_version.data.json +0 -0
  170. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/_version.meta.json +0 -0
  171. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arraypad.data.json +0 -0
  172. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arraypad.meta.json +0 -0
  173. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arraysetops.data.json +0 -0
  174. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arraysetops.meta.json +0 -0
  175. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arrayterator.data.json +0 -0
  176. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/arrayterator.meta.json +0 -0
  177. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/format.data.json +0 -0
  178. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/format.meta.json +0 -0
  179. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/function_base.data.json +0 -0
  180. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/function_base.meta.json +0 -0
  181. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/histograms.data.json +0 -0
  182. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/histograms.meta.json +0 -0
  183. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/index_tricks.data.json +0 -0
  184. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/index_tricks.meta.json +0 -0
  185. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/mixins.data.json +0 -0
  186. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/mixins.meta.json +0 -0
  187. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/nanfunctions.data.json +0 -0
  188. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/nanfunctions.meta.json +0 -0
  189. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/npyio.data.json +0 -0
  190. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/npyio.meta.json +0 -0
  191. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/polynomial.data.json +0 -0
  192. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/polynomial.meta.json +0 -0
  193. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/scimath.data.json +0 -0
  194. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/scimath.meta.json +0 -0
  195. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/shape_base.data.json +0 -0
  196. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/shape_base.meta.json +0 -0
  197. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/stride_tricks.data.json +0 -0
  198. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/stride_tricks.meta.json +0 -0
  199. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/twodim_base.data.json +0 -0
  200. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/twodim_base.meta.json +0 -0
  201. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/type_check.data.json +0 -0
  202. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/type_check.meta.json +0 -0
  203. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/ufunclike.data.json +0 -0
  204. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/ufunclike.meta.json +0 -0
  205. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/utils.data.json +0 -0
  206. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/lib/utils.meta.json +0 -0
  207. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/linalg/__init__.data.json +0 -0
  208. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/linalg/__init__.meta.json +0 -0
  209. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/linalg/linalg.data.json +0 -0
  210. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/linalg/linalg.meta.json +0 -0
  211. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/__init__.data.json +0 -0
  212. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/__init__.meta.json +0 -0
  213. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/core.data.json +0 -0
  214. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/core.meta.json +0 -0
  215. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/extras.data.json +0 -0
  216. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/extras.meta.json +0 -0
  217. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/mrecords.data.json +0 -0
  218. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/ma/mrecords.meta.json +0 -0
  219. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/matrixlib/__init__.data.json +0 -0
  220. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/matrixlib/__init__.meta.json +0 -0
  221. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/matrixlib/defmatrix.data.json +0 -0
  222. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/matrixlib/defmatrix.meta.json +0 -0
  223. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/__init__.data.json +0 -0
  224. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/__init__.meta.json +0 -0
  225. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/_polybase.data.json +0 -0
  226. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/_polybase.meta.json +0 -0
  227. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/chebyshev.data.json +0 -0
  228. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/chebyshev.meta.json +0 -0
  229. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/hermite.data.json +0 -0
  230. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/hermite.meta.json +0 -0
  231. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/hermite_e.data.json +0 -0
  232. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/hermite_e.meta.json +0 -0
  233. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/laguerre.data.json +0 -0
  234. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/laguerre.meta.json +0 -0
  235. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/legendre.data.json +0 -0
  236. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/legendre.meta.json +0 -0
  237. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/polynomial.data.json +0 -0
  238. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/polynomial.meta.json +0 -0
  239. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/polyutils.data.json +0 -0
  240. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/polynomial/polyutils.meta.json +0 -0
  241. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/__init__.data.json +0 -0
  242. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/__init__.meta.json +0 -0
  243. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_generator.data.json +0 -0
  244. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_generator.meta.json +0 -0
  245. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_mt19937.data.json +0 -0
  246. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_mt19937.meta.json +0 -0
  247. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_pcg64.data.json +0 -0
  248. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_pcg64.meta.json +0 -0
  249. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_philox.data.json +0 -0
  250. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_philox.meta.json +0 -0
  251. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_sfc64.data.json +0 -0
  252. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/_sfc64.meta.json +0 -0
  253. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/bit_generator.data.json +0 -0
  254. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/bit_generator.meta.json +0 -0
  255. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/mtrand.data.json +0 -0
  256. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/random/mtrand.meta.json +0 -0
  257. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/__init__.data.json +0 -0
  258. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/__init__.meta.json +0 -0
  259. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/_private/__init__.data.json +0 -0
  260. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/_private/__init__.meta.json +0 -0
  261. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/_private/utils.data.json +0 -0
  262. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/testing/_private/utils.meta.json +0 -0
  263. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/typing/__init__.data.json +0 -0
  264. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/typing/__init__.meta.json +0 -0
  265. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/version.data.json +0 -0
  266. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/numpy/version.meta.json +0 -0
  267. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/os/__init__.data.json +0 -0
  268. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/os/__init__.meta.json +0 -0
  269. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/os/path.data.json +0 -0
  270. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/os/path.meta.json +0 -0
  271. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/pathlib.data.json +0 -0
  272. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/pathlib.meta.json +0 -0
  273. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/posixpath.data.json +0 -0
  274. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/posixpath.meta.json +0 -0
  275. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/re.data.json +0 -0
  276. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/re.meta.json +0 -0
  277. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_compile.data.json +0 -0
  278. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_compile.meta.json +0 -0
  279. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_constants.data.json +0 -0
  280. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_constants.meta.json +0 -0
  281. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_parse.data.json +0 -0
  282. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sre_parse.meta.json +0 -0
  283. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/string.data.json +0 -0
  284. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/string.meta.json +0 -0
  285. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/subprocess.data.json +0 -0
  286. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/subprocess.meta.json +0 -0
  287. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sys/__init__.data.json +0 -0
  288. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sys/__init__.meta.json +0 -0
  289. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sys/_monitoring.data.json +0 -0
  290. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/sys/_monitoring.meta.json +0 -0
  291. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/textwrap.data.json +0 -0
  292. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/textwrap.meta.json +0 -0
  293. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/threading.data.json +0 -0
  294. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/threading.meta.json +0 -0
  295. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/time.data.json +0 -0
  296. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/time.meta.json +0 -0
  297. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/types.data.json +0 -0
  298. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/types.meta.json +0 -0
  299. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/typing.data.json +0 -0
  300. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/typing.meta.json +0 -0
  301. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/typing_extensions.data.json +0 -0
  302. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/typing_extensions.meta.json +0 -0
  303. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/__init__.data.json +0 -0
  304. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/__init__.meta.json +0 -0
  305. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/_log.data.json +0 -0
  306. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/_log.meta.json +0 -0
  307. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/async_case.data.json +0 -0
  308. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/async_case.meta.json +0 -0
  309. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/case.data.json +0 -0
  310. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/case.meta.json +0 -0
  311. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/loader.data.json +0 -0
  312. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/loader.meta.json +0 -0
  313. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/main.data.json +0 -0
  314. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/main.meta.json +0 -0
  315. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/result.data.json +0 -0
  316. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/result.meta.json +0 -0
  317. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/runner.data.json +0 -0
  318. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/runner.meta.json +0 -0
  319. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/signals.data.json +0 -0
  320. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/signals.meta.json +0 -0
  321. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/suite.data.json +0 -0
  322. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/unittest/suite.meta.json +0 -0
  323. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/warnings.data.json +0 -0
  324. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/warnings.meta.json +0 -0
  325. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/zipfile.data.json +0 -0
  326. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/3.12/zipfile.meta.json +0 -0
  327. {mink-0.0.8 → mink-0.0.9}/mink/.mypy_cache/CACHEDIR.TAG +0 -0
  328. {mink-0.0.8 → mink-0.0.9}/mink/__init__.py +0 -0
  329. {mink-0.0.8 → mink-0.0.9}/mink/configuration.py +0 -0
  330. {mink-0.0.8 → mink-0.0.9}/mink/constants.py +0 -0
  331. {mink-0.0.8 → mink-0.0.9}/mink/contrib/__init__.py +0 -0
  332. {mink-0.0.8 → mink-0.0.9}/mink/contrib/keyboard_teleop/KEYBOARD.md +0 -0
  333. {mink-0.0.8 → mink-0.0.9}/mink/contrib/keyboard_teleop/__init__.py +0 -0
  334. {mink-0.0.8 → mink-0.0.9}/mink/contrib/keyboard_teleop/keycodes.py +0 -0
  335. {mink-0.0.8 → mink-0.0.9}/mink/contrib/keyboard_teleop/teleop_mocap.py +0 -0
  336. {mink-0.0.8 → mink-0.0.9}/mink/exceptions.py +0 -0
  337. {mink-0.0.8 → mink-0.0.9}/mink/lie/__init__.py +0 -0
  338. {mink-0.0.8 → mink-0.0.9}/mink/lie/base.py +0 -0
  339. {mink-0.0.8 → mink-0.0.9}/mink/lie/utils.py +0 -0
  340. {mink-0.0.8 → mink-0.0.9}/mink/limits/__init__.py +0 -0
  341. {mink-0.0.8 → mink-0.0.9}/mink/limits/collision_avoidance_limit.py +0 -0
  342. {mink-0.0.8 → mink-0.0.9}/mink/limits/configuration_limit.py +0 -0
  343. {mink-0.0.8 → mink-0.0.9}/mink/limits/exceptions.py +0 -0
  344. {mink-0.0.8 → mink-0.0.9}/mink/limits/limit.py +0 -0
  345. {mink-0.0.8 → mink-0.0.9}/mink/limits/velocity_limit.py +0 -0
  346. {mink-0.0.8 → mink-0.0.9}/mink/py.typed +0 -0
  347. {mink-0.0.8 → mink-0.0.9}/mink/solve_ik.py +0 -0
  348. {mink-0.0.8 → mink-0.0.9}/mink/tasks/__init__.py +0 -0
  349. {mink-0.0.8 → mink-0.0.9}/mink/tasks/com_task.py +0 -0
  350. {mink-0.0.8 → mink-0.0.9}/mink/tasks/damping_task.py +0 -0
  351. {mink-0.0.8 → mink-0.0.9}/mink/tasks/equality_constraint_task.py +0 -0
  352. {mink-0.0.8 → mink-0.0.9}/mink/tasks/exceptions.py +0 -0
  353. {mink-0.0.8 → mink-0.0.9}/mink/tasks/frame_task.py +0 -0
  354. {mink-0.0.8 → mink-0.0.9}/mink/tasks/posture_task.py +0 -0
  355. {mink-0.0.8 → mink-0.0.9}/mink/tasks/relative_frame_task.py +0 -0
  356. {mink-0.0.8 → mink-0.0.9}/mink/tasks/task.py +0 -0
  357. {mink-0.0.8 → mink-0.0.9}/mink/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mink
3
- Version: 0.0.8
3
+ Version: 0.0.9
4
4
  Summary: mink: MuJoCo inverse kinematics.
5
5
  Keywords: inverse,kinematics,mujoco
6
6
  Author-email: Kevin Zakka <zakka@berkeley.edu>
@@ -21,7 +21,7 @@ License-File: LICENSE
21
21
  Requires-Dist: mujoco >= 3.1.6
22
22
  Requires-Dist: qpsolvers[daqp] >= 4.3.1
23
23
  Requires-Dist: typing_extensions
24
- Requires-Dist: numpy < 2.0.0
24
+ Requires-Dist: numpy
25
25
  Requires-Dist: mink[examples, dev] ; extra == "all"
26
26
  Requires-Dist: black ; extra == "dev"
27
27
  Requires-Dist: mink[test] ; extra == "dev"
@@ -113,130 +113,131 @@ class SE3(MatrixLieGroup):
113
113
 
114
114
  @classmethod
115
115
  def exp(cls, tangent: np.ndarray) -> SE3:
116
- assert tangent.shape == (SE3.tangent_dim,)
116
+ assert tangent.shape == (cls.tangent_dim,)
117
117
  rotation = SO3.exp(tangent[3:])
118
- theta_squared = tangent[3:] @ tangent[3:]
119
- use_taylor = theta_squared < get_epsilon(theta_squared.dtype)
120
- theta_squared_safe = 1.0 if use_taylor else theta_squared
121
- theta_safe = np.sqrt(theta_squared_safe)
122
- skew_omega = skew(tangent[3:])
123
- if use_taylor:
124
- V = rotation.as_matrix()
118
+ theta = np.float64(mujoco.mju_norm3(tangent[3:]))
119
+ t2 = theta * theta
120
+ if t2 < get_epsilon(t2.dtype):
121
+ v_mat = rotation.as_matrix()
125
122
  else:
126
- V = (
123
+ skew_omega = skew(tangent[3:])
124
+ v_mat = (
127
125
  np.eye(3, dtype=np.float64)
128
- + (1.0 - np.cos(theta_safe)) / (theta_squared_safe) * skew_omega
129
- + (theta_safe - np.sin(theta_safe))
130
- / (theta_squared_safe * theta_safe)
131
- * (skew_omega @ skew_omega)
126
+ + (1.0 - np.cos(theta)) / t2 * skew_omega
127
+ + (theta - np.sin(theta)) / (t2 * theta) * (skew_omega @ skew_omega)
132
128
  )
133
- return SE3.from_rotation_and_translation(
129
+ return cls.from_rotation_and_translation(
134
130
  rotation=rotation,
135
- translation=V @ tangent[:3],
131
+ translation=v_mat @ tangent[:3],
136
132
  )
137
133
 
138
134
  def inverse(self) -> SE3:
139
- R_inv = self.rotation().inverse()
140
- return SE3.from_rotation_and_translation(
141
- rotation=R_inv,
142
- translation=-(R_inv @ self.translation()),
135
+ inverse_wxyz_xyz = np.empty(SE3.parameters_dim, dtype=np.float64)
136
+ mujoco.mju_negQuat(inverse_wxyz_xyz[:4], self.wxyz_xyz[:4])
137
+ mujoco.mju_rotVecQuat(
138
+ inverse_wxyz_xyz[4:], -1.0 * self.wxyz_xyz[4:], inverse_wxyz_xyz[:4]
143
139
  )
140
+ return SE3(wxyz_xyz=inverse_wxyz_xyz)
144
141
 
145
142
  def normalize(self) -> SE3:
146
- return SE3.from_rotation_and_translation(
147
- rotation=self.rotation().normalize(),
148
- translation=self.translation(),
149
- )
143
+ normalized_wxyz_xyz = np.array(self.wxyz_xyz)
144
+ mujoco.mju_normalize4(normalized_wxyz_xyz[:4])
145
+ return SE3(wxyz_xyz=normalized_wxyz_xyz)
150
146
 
151
147
  def apply(self, target: np.ndarray) -> np.ndarray:
152
148
  assert target.shape == (SE3.space_dim,)
153
- return self.rotation() @ target + self.translation()
149
+ rotated_target = np.empty(SE3.space_dim, dtype=np.float64)
150
+ mujoco.mju_rotVecQuat(rotated_target, target, self.wxyz_xyz[:4])
151
+ return rotated_target + self.wxyz_xyz[4:]
154
152
 
155
153
  def multiply(self, other: SE3) -> SE3:
156
- return SE3.from_rotation_and_translation(
157
- rotation=self.rotation() @ other.rotation(),
158
- translation=(self.rotation() @ other.translation()) + self.translation(),
159
- )
154
+ wxyz_xyz = np.empty(SE3.parameters_dim, dtype=np.float64)
155
+ mujoco.mju_mulQuat(wxyz_xyz[:4], self.wxyz_xyz[:4], other.wxyz_xyz[:4])
156
+ mujoco.mju_rotVecQuat(wxyz_xyz[4:], other.wxyz_xyz[4:], self.wxyz_xyz[:4])
157
+ wxyz_xyz[4:] += self.wxyz_xyz[4:]
158
+ return SE3(wxyz_xyz=wxyz_xyz)
160
159
 
161
160
  def log(self) -> np.ndarray:
162
161
  omega = self.rotation().log()
163
- theta_squared = omega @ omega
164
- use_taylor = theta_squared < get_epsilon(theta_squared.dtype)
162
+ theta = np.float64(mujoco.mju_norm3(omega))
163
+ t2 = theta * theta
165
164
  skew_omega = skew(omega)
166
- theta_squared_safe = 1.0 if use_taylor else theta_squared
167
- theta_safe = np.sqrt(theta_squared_safe)
168
- half_theta_safe = 0.5 * theta_safe
169
- skew_omega_norm = skew_omega @ skew_omega
170
- if use_taylor:
171
- V_inv = (
172
- np.eye(3, dtype=np.float64) - 0.5 * skew_omega + skew_omega_norm / 12.0
165
+ skew_omega2 = skew_omega @ skew_omega
166
+ if t2 < get_epsilon(t2.dtype):
167
+ vinv_mat = (
168
+ np.eye(3, dtype=np.float64) - 0.5 * skew_omega + skew_omega2 / 12.0
173
169
  )
174
170
  else:
175
- V_inv = (
171
+ half_theta = 0.5 * theta
172
+ vinv_mat = (
176
173
  np.eye(3, dtype=np.float64)
177
174
  - 0.5 * skew_omega
178
- + (
179
- 1.0
180
- - theta_safe
181
- * np.cos(half_theta_safe)
182
- / (2.0 * np.sin(half_theta_safe))
183
- )
184
- / theta_squared_safe
185
- * skew_omega_norm
175
+ + (1.0 - 0.5 * theta * np.cos(half_theta) / np.sin(half_theta))
176
+ / t2
177
+ * skew_omega2
186
178
  )
187
- return np.concatenate([V_inv @ self.translation(), omega])
179
+ tangent = np.empty(SE3.tangent_dim, dtype=np.float64)
180
+ tangent[:3] = vinv_mat @ self.translation()
181
+ tangent[3:] = omega
182
+ return tangent
188
183
 
189
184
  def adjoint(self) -> np.ndarray:
190
- R = self.rotation().as_matrix()
191
- return np.block(
192
- [
193
- [R, skew(self.translation()) @ R],
194
- [np.zeros((3, 3), dtype=np.float64), R],
195
- ]
196
- )
185
+ rotation = self.rotation()
186
+ rotation_mat = rotation.as_matrix()
187
+ tangent_mat = skew(self.translation()) @ rotation_mat
188
+ adjoint_mat = np.zeros((SE3.tangent_dim, SE3.tangent_dim), dtype=np.float64)
189
+ adjoint_mat[:3, :3] = rotation_mat
190
+ adjoint_mat[:3, 3:] = tangent_mat
191
+ adjoint_mat[3:, 3:] = rotation_mat
192
+ return adjoint_mat
197
193
 
198
194
  # Jacobians.
199
195
 
200
196
  # Eqn 179 a)
201
197
  @classmethod
202
198
  def ljac(cls, other: np.ndarray) -> np.ndarray:
203
- theta = other[3:]
204
- if theta @ theta < get_epsilon(theta.dtype):
199
+ theta_squared = np.float64(mujoco.mju_dot3(other[3:], other[3:]))
200
+ if theta_squared < get_epsilon(theta_squared.dtype):
205
201
  return np.eye(cls.tangent_dim)
206
- Q = _getQ(other)
207
- J = SO3.ljac(theta)
208
- O = np.zeros((3, 3))
209
- return np.block([[J, Q], [O, J]])
202
+ ljac_se3 = np.zeros((cls.tangent_dim, cls.tangent_dim), dtype=np.float64)
203
+ ljac_translation = _getQ(other)
204
+ ljac_so3 = SO3.ljac(other[3:])
205
+ ljac_se3[:3, :3] = ljac_so3
206
+ ljac_se3[:3, 3:] = ljac_translation
207
+ ljac_se3[3:, 3:] = ljac_so3
208
+ return ljac_se3
210
209
 
211
210
  # Eqn 179 b)
212
211
  @classmethod
213
212
  def ljacinv(cls, other: np.ndarray) -> np.ndarray:
214
- theta = other[3:]
215
- if theta @ theta < get_epsilon(theta.dtype):
213
+ theta_squared = np.float64(mujoco.mju_dot3(other[3:], other[3:]))
214
+ if theta_squared < get_epsilon(theta_squared.dtype):
216
215
  return np.eye(cls.tangent_dim)
217
- Q = _getQ(other)
218
- J_inv = SO3.ljacinv(theta)
219
- O = np.zeros((3, 3))
220
- return np.block([[J_inv, -J_inv @ Q @ J_inv], [O, J_inv]])
216
+ ljacinv_se3 = np.zeros((cls.tangent_dim, cls.tangent_dim), dtype=np.float64)
217
+ ljac_translation = _getQ(other)
218
+ ljacinv_so3 = SO3.ljacinv(other[3:])
219
+ ljacinv_se3[:3, :3] = ljacinv_so3
220
+ ljacinv_se3[:3, 3:] = -ljacinv_so3 @ ljac_translation @ ljacinv_so3
221
+ ljacinv_se3[3:, 3:] = ljacinv_so3
222
+ return ljacinv_se3
221
223
 
222
224
 
223
225
  # Eqn 180.
224
226
  def _getQ(c) -> np.ndarray:
225
- theta_sq = c[3:] @ c[3:]
227
+ theta = np.float64(mujoco.mju_norm3(c[3:]))
228
+ t2 = theta * theta
226
229
  A = 0.5
227
- if theta_sq < get_epsilon(theta_sq.dtype):
228
- B = (1.0 / 6.0) + (1.0 / 120.0) * theta_sq
229
- C = -(1.0 / 24.0) + (1.0 / 720.0) * theta_sq
230
+ if t2 < get_epsilon(t2.dtype):
231
+ B = (1.0 / 6.0) + (1.0 / 120.0) * t2
232
+ C = -(1.0 / 24.0) + (1.0 / 720.0) * t2
230
233
  D = -(1.0 / 60.0)
231
234
  else:
232
- theta = np.sqrt(theta_sq)
235
+ t4 = t2 * t2
233
236
  sin_theta = np.sin(theta)
234
237
  cos_theta = np.cos(theta)
235
- B = (theta - sin_theta) / (theta_sq * theta)
236
- C = (1.0 - theta_sq / 2.0 - cos_theta) / (theta_sq * theta_sq)
237
- D = ((2) * theta - (3) * sin_theta + theta * cos_theta) / (
238
- (2) * theta_sq * theta_sq * theta
239
- )
238
+ B = (theta - sin_theta) / (t2 * theta)
239
+ C = (1.0 - 0.5 * t2 - cos_theta) / t4
240
+ D = (2.0 * theta - 3.0 * sin_theta + theta * cos_theta) / (2.0 * t4 * theta)
240
241
  V = skew(c[:3])
241
242
  W = skew(c[3:])
242
243
  VW = V @ W
@@ -246,6 +247,6 @@ def _getQ(c) -> np.ndarray:
246
247
  return (
247
248
  +A * V
248
249
  + B * (WV + VW + WVW)
249
- - C * (VWW - VWW.T - 3 * WVW)
250
+ - C * (VWW - VWW.T - 3.0 * WVW)
250
251
  + D * (WVW @ W + W @ WVW)
251
252
  )
@@ -7,10 +7,9 @@ import mujoco
7
7
  import numpy as np
8
8
 
9
9
  from .base import MatrixLieGroup
10
- from .utils import get_epsilon, skew
10
+ from .utils import get_epsilon
11
11
 
12
12
  _IDENTITIY_WXYZ = np.array([1.0, 0.0, 0.0, 0.0], dtype=np.float64)
13
- _INVERT_QUAT_SIGN = np.array([1.0, -1.0, -1.0, -1.0], dtype=np.float64)
14
13
 
15
14
 
16
15
  class RollPitchYaw(NamedTuple):
@@ -137,63 +136,47 @@ class SO3(MatrixLieGroup):
137
136
  yaw=self.compute_yaw_radians(),
138
137
  )
139
138
 
140
- # Paragraph above Appendix B.A.
141
139
  def inverse(self) -> SO3:
142
- return SO3(wxyz=self.wxyz * _INVERT_QUAT_SIGN)
140
+ conjugate_wxyz = np.empty(4)
141
+ mujoco.mju_negQuat(conjugate_wxyz, self.wxyz)
142
+ return SO3(wxyz=conjugate_wxyz)
143
143
 
144
144
  def normalize(self) -> SO3:
145
- return SO3(wxyz=self.wxyz / np.linalg.norm(self.wxyz))
145
+ normalized_wxyz = np.array(self.wxyz)
146
+ mujoco.mju_normalize4(normalized_wxyz)
147
+ return SO3(wxyz=normalized_wxyz)
146
148
 
147
149
  # Eq. 136.
148
150
  def apply(self, target: np.ndarray) -> np.ndarray:
149
151
  assert target.shape == (SO3.space_dim,)
150
- padded_target = np.concatenate([np.zeros(1, dtype=np.float64), target])
151
- return (self @ SO3(wxyz=padded_target) @ self.inverse()).wxyz[1:]
152
+ rotated_target = np.empty(SO3.space_dim, dtype=np.float64)
153
+ mujoco.mju_rotVecQuat(rotated_target, target, self.wxyz)
154
+ return rotated_target
152
155
 
153
156
  def multiply(self, other: SO3) -> SO3:
154
157
  res = np.empty(self.parameters_dim, dtype=np.float64)
155
158
  mujoco.mju_mulQuat(res, self.wxyz, other.wxyz)
156
159
  return SO3(wxyz=res)
157
160
 
158
- ##
159
- #
160
- ##
161
-
162
161
  # Eq. 132.
163
162
  @classmethod
164
163
  def exp(cls, tangent: np.ndarray) -> SO3:
165
- assert tangent.shape == (SO3.tangent_dim,)
166
- theta_squared = tangent @ tangent
167
- theta_pow_4 = theta_squared * theta_squared
168
- use_taylor = theta_squared < get_epsilon(tangent.dtype)
169
- safe_theta = 1.0 if use_taylor else np.sqrt(theta_squared)
170
- safe_half_theta = 0.5 * safe_theta
171
- if use_taylor:
172
- real = 1.0 - theta_squared / 8.0 + theta_pow_4 / 384.0
173
- imaginary = 0.5 - theta_squared / 48.0 + theta_pow_4 / 3840.0
174
- else:
175
- real = np.cos(safe_half_theta)
176
- imaginary = np.sin(safe_half_theta) / safe_theta
177
- wxyz = np.concatenate([np.array([real]), imaginary * tangent])
164
+ axis = np.array(tangent)
165
+ theta = mujoco.mju_normalize3(axis)
166
+ wxyz = np.zeros(4)
167
+ mujoco.mju_axisAngle2Quat(wxyz, axis, theta)
178
168
  return SO3(wxyz=wxyz)
179
169
 
180
170
  # Eq. 133.
181
171
  def log(self) -> np.ndarray:
182
- w = self.wxyz[0]
183
- norm_sq = self.wxyz[1:] @ self.wxyz[1:]
184
- use_taylor = norm_sq < get_epsilon(norm_sq.dtype)
185
- norm_safe = 1.0 if use_taylor else np.sqrt(norm_sq)
186
- w_safe = w if use_taylor else 1.0
187
- atan_n_over_w = np.arctan2(-norm_safe if w < 0 else norm_safe, abs(w))
188
- if use_taylor:
189
- atan_factor = 2.0 / w_safe - 2.0 / 3.0 * norm_sq / w_safe**3
172
+ if self.wxyz[0] < 0.0:
173
+ theta = 2.0 * np.arccos(-self.wxyz[0])
174
+ axis = -1.0 * np.array(self.wxyz[1:])
190
175
  else:
191
- if abs(w) < get_epsilon(w.dtype):
192
- scl = 1.0 if w > 0.0 else -1.0
193
- atan_factor = scl * np.pi / norm_safe
194
- else:
195
- atan_factor = 2.0 * atan_n_over_w / norm_safe
196
- return atan_factor * self.wxyz[1:]
176
+ theta = 2.0 * np.arccos(self.wxyz[0])
177
+ axis = np.array(self.wxyz[1:])
178
+ mujoco.mju_normalize3(axis)
179
+ return theta * axis
197
180
 
198
181
  # Eq. 139.
199
182
  def adjoint(self) -> np.ndarray:
@@ -204,28 +187,73 @@ class SO3(MatrixLieGroup):
204
187
  # Eqn. 145, 174.
205
188
  @classmethod
206
189
  def ljac(cls, other: np.ndarray) -> np.ndarray:
207
- theta = np.sqrt(other @ other)
208
- use_taylor = theta < get_epsilon(theta.dtype)
209
- if use_taylor:
210
- t2 = theta**2
211
- A = (1.0 / 2.0) * (1.0 - t2 / 12.0 * (1.0 - t2 / 30.0 * (1.0 - t2 / 56.0)))
212
- B = (1.0 / 6.0) * (1.0 - t2 / 20.0 * (1.0 - t2 / 42.0 * (1.0 - t2 / 72.0)))
190
+ theta = np.float64(mujoco.mju_norm3(other))
191
+ t2 = theta * theta
192
+ if theta < get_epsilon(theta.dtype):
193
+ alpha = (1.0 / 2.0) * (
194
+ 1.0 - t2 / 12.0 * (1.0 - t2 / 30.0 * (1.0 - t2 / 56.0))
195
+ )
196
+ beta = (1.0 / 6.0) * (
197
+ 1.0 - t2 / 20.0 * (1.0 - t2 / 42.0 * (1.0 - t2 / 72.0))
198
+ )
213
199
  else:
214
- A = (1 - np.cos(theta)) / (theta**2)
215
- B = (theta - np.sin(theta)) / (theta**3)
216
- skew_other = skew(other)
217
- return np.eye(3) + A * skew_other + B * (skew_other @ skew_other)
200
+ t3 = t2 * theta
201
+ alpha = (1 - np.cos(theta)) / t2
202
+ beta = (theta - np.sin(theta)) / t3
203
+ # ljac = eye(3) + alpha * skew_other + beta * (skew_other @ skew_other)
204
+ ljac = np.empty((3, 3))
205
+ # skew_other @ skew_other == outer(other) - inner(other) * eye(3)
206
+ mujoco.mju_mulMatMat(ljac, other.reshape(3, 1), other.reshape(1, 3))
207
+ inner_product = mujoco.mju_dot3(other, other)
208
+ ljac[0, 0] -= inner_product
209
+ ljac[1, 1] -= inner_product
210
+ ljac[2, 2] -= inner_product
211
+ ljac *= beta
212
+ # + alpha * skew_other
213
+ alpha_vec = alpha * other
214
+ ljac[0, 1] += -alpha_vec[2]
215
+ ljac[0, 2] += alpha_vec[1]
216
+ ljac[1, 0] += alpha_vec[2]
217
+ ljac[1, 2] += -alpha_vec[0]
218
+ ljac[2, 0] += -alpha_vec[1]
219
+ ljac[2, 1] += alpha_vec[0]
220
+ # + eye(3)
221
+ ljac[0, 0] += 1.0
222
+ ljac[1, 1] += 1.0
223
+ ljac[2, 2] += 1.0
224
+ return ljac
218
225
 
219
226
  @classmethod
220
227
  def ljacinv(cls, other: np.ndarray) -> np.ndarray:
221
- theta = np.sqrt(other @ other)
222
- use_taylor = theta < get_epsilon(theta.dtype)
223
- if use_taylor:
224
- t2 = theta**2
225
- A = (1.0 / 12.0) * (1.0 + t2 / 60.0 * (1.0 + t2 / 42.0 * (1.0 + t2 / 40.0)))
228
+ theta = np.float64(mujoco.mju_norm3(other))
229
+ t2 = theta * theta
230
+ if theta < get_epsilon(theta.dtype):
231
+ beta = (1.0 / 12.0) * (
232
+ 1.0 + t2 / 60.0 * (1.0 + t2 / 42.0 * (1.0 + t2 / 40.0))
233
+ )
226
234
  else:
227
- A = (1.0 / theta**2) * (
235
+ beta = (1.0 / t2) * (
228
236
  1.0 - (theta * np.sin(theta) / (2.0 * (1.0 - np.cos(theta))))
229
237
  )
230
- skew_other = skew(other)
231
- return np.eye(3) - 0.5 * skew_other + A * (skew_other @ skew_other)
238
+ # ljacinv = eye(3) - 0.5 * skew_other + beta * (skew_other @ skew_other)
239
+ ljacinv = np.empty((3, 3))
240
+ # skew_other @ skew_other == outer(other) - inner(other) * eye(3)
241
+ mujoco.mju_mulMatMat(ljacinv, other.reshape(3, 1), other.reshape(1, 3))
242
+ inner_product = mujoco.mju_dot3(other, other)
243
+ ljacinv[0, 0] -= inner_product
244
+ ljacinv[1, 1] -= inner_product
245
+ ljacinv[2, 2] -= inner_product
246
+ ljacinv *= beta
247
+ # - 0.5 * skew_other
248
+ alpha_vec = -0.5 * other
249
+ ljacinv[0, 1] += -alpha_vec[2]
250
+ ljacinv[0, 2] += alpha_vec[1]
251
+ ljacinv[1, 0] += alpha_vec[2]
252
+ ljacinv[1, 2] += -alpha_vec[0]
253
+ ljacinv[2, 0] += -alpha_vec[1]
254
+ ljacinv[2, 1] += alpha_vec[0]
255
+ # + eye(3)
256
+ ljacinv[0, 0] += 1.0
257
+ ljacinv[1, 1] += 1.0
258
+ ljacinv[2, 2] += 1.0
259
+ return ljacinv
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "mink"
7
- version = "0.0.8"
7
+ version = "0.0.9"
8
8
  readme = "README.md"
9
9
  authors = [
10
10
  {name = "Kevin Zakka", email = "zakka@berkeley.edu"},
@@ -29,7 +29,7 @@ dependencies = [
29
29
  "mujoco >= 3.1.6",
30
30
  "qpsolvers[daqp] >= 4.3.1",
31
31
  "typing_extensions",
32
- "numpy < 2.0.0",
32
+ "numpy",
33
33
  ]
34
34
  keywords = ["inverse", "kinematics", "mujoco"]
35
35
 
File without changes
File without changes
File without changes