Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Type-check spatialmath #143

Open
jbarnett-bdai opened this issue Oct 28, 2024 · 8 comments
Open

Type-check spatialmath #143

jbarnett-bdai opened this issue Oct 28, 2024 · 8 comments
Assignees

Comments

@jbarnett-bdai
Copy link
Contributor

Spatialmath should be type-checked using mypy; it is full of type annotations, but without a type-checker confirming them, they may be inaccurate. Running mypy reveals various errors; resolving the first few reveal many more (>500).

Generally, these should be resolved without changing the interface or implementation when possible.

@jbarnett-bdai jbarnett-bdai self-assigned this Oct 28, 2024
@jbarnett-bdai
Copy link
Contributor Author

Initial error, along with version info:

jbarnett@jbarnett-LT:~/spatialmath-python$ mypy --version
mypy 0.942
jbarnett@jbarnett-LT:~/spatialmath-python$ python --version
Python 3.10.12
jbarnett@jbarnett-LT:~/spatialmath-python$ mypy spatialmath
spatialmath/geom3d.py:717: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:736: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:755: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:774: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:992: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:1022: error: Invalid "type: ignore" comment
spatialmath/geom3d.py:1050: error: Invalid "type: ignore" comment
Found 7 errors in 1 file (errors prevented further checking)

@jbarnett-bdai
Copy link
Contributor Author

Next up:

jbarnett@jbarnett-LT:~/spatialmath-python$ mypy spatialmath
/home/jbarnett/.local/lib/python3.10/site-packages/numpy/__init__.pyi:651: error: Positional-only parameters are only supported in Python 3.8 and greater
Found 1 error in 1 file (errors prevented further checking)

Even though I'm running python 3.10, mypy complains; this is due to a bug in the version that ships in Ubuntu 22.04.

@jbarnett-bdai
Copy link
Contributor Author

After upgrading mypy (by adding it as a dev dependency, and installing a virtual environment):

(.venv) jbarnett@jbarnett-LT:~/spatialmath-python$ mypy --version
mypy 1.13.0 (compiled: yes)
(.venv) jbarnett@jbarnett-LT:~/spatialmath-python$ mypy spatialmath
spatialmath/timing.py:11: error: Skipping analyzing "ansitable": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/_types_311.py:3: error: Module "typing" has no attribute "Self"  [attr-defined]
spatialmath/base/_types_311.py:3: note: Use `from typing_extensions import Self` instead
spatialmath/base/_types_311.py:3: note: See https://mypy.readthedocs.io/en/stable/runtime_troubles.html#using-new-additions-to-the-typing-module
spatialmath/base/types.py:9: error: Incompatible import of "SE2Array" (imported name has type "type[ndarray[Any, Any]]", local name has type "type[ndarray[Any, Any]]")  [assignment]
spatialmath/base/types.py:9: error: Incompatible import of "SO2Array" (imported name has type "type[ndarray[Any, Any]]", local name has type "type[ndarray[Any, Any]]")  [assignment]
spatialmath/base/types.py:11: error: Incompatible import of "L" (imported name has type "typing_extensions._SpecialForm", local name has type "<typing special form>")  [assignment]
spatialmath/base/symbolic.py:19: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/symbolic.py:28: error: Incompatible types in assignment (expression has type "tuple[()]", variable has type "tuple[Any]")  [assignment]
spatialmath/base/argcheck.py:291: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/vectors.py:21: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/vectors.py:56: error: Incompatible types in assignment (expression has type "float | Any", variable has type "int")  [assignment]
spatialmath/base/vectors.py:90: error: Incompatible types in assignment (expression has type "float | Any", variable has type "int")  [assignment]
spatialmath/base/vectors.py:846: error: Unsupported left operand type for - ("list[float]")  [operator]
spatialmath/base/vectors.py:846: error: Unsupported left operand type for - ("tuple[float, float, float]")  [operator]
spatialmath/base/vectors.py:846: note: Both left and right operands are unions
spatialmath/base/transformsNd.py:27: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transformsNd.py:594: error: Overloaded function signatures 1 and 2 overlap with incompatible return types  [overload-overlap]
spatialmath/base/transforms2d.py:22: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:22: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:37: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:66: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:464: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms2d.py:474: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms2d.py:654: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None", variable has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms2d.py:665: error: No overload variant of "__mul__" of "ndarray" matches argument type "None"  [operator]
spatialmath/base/transforms2d.py:665: note: Possible overload variants:
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | timedelta64]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | timedelta64]]] | bool | int | _NestedSequence[bool | int], /) -> ndarray[Any, dtype[timedelta64]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/base/transforms2d.py:665: note: Right operand is of type "float | None"
spatialmath/base/transforms2d.py:666: error: Argument 1 to "cos" has incompatible type "float | None"; expected "SupportsFloat | SupportsIndex"  [arg-type]
spatialmath/base/transforms2d.py:666: note: Left operand is of type "ndarray[Any, dtype[floating[Any]]] | Any"
spatialmath/base/transforms2d.py:667: error: Unsupported operand types for - ("None" and "float")  [operator]
spatialmath/base/transforms2d.py:667: note: Left operand is of type "float | None"
spatialmath/base/transforms2d.py:667: note: Left operand is of type "ndarray[Any, dtype[floating[Any]]] | Any"
spatialmath/base/transforms2d.py:667: error: Argument 1 to "sin" has incompatible type "float | None"; expected "SupportsFloat | SupportsIndex"  [arg-type]
spatialmath/base/transforms2d.py:694: error: Single overload definition, multiple required  [misc]
spatialmath/base/transforms2d.py:699: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/transforms2d.py:699: error: Overloaded function implementation cannot produce return type of signature 1  [misc]
spatialmath/base/transforms2d.py:923: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:945: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:1134: error: Skipping analyzing "scipy.spatial": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:1213: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms2d.py:1229: error: Skipping analyzing "matplotlib.axes": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:1441: error: Incompatible types in assignment (expression has type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "str")  [assignment]
spatialmath/base/transforms2d.py:1455: error: Incompatible types in assignment (expression has type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "str")  [assignment]
spatialmath/base/quaternions.py:19: error: Skipping analyzing "scipy.interpolate": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/quaternions.py:19: error: Skipping analyzing "scipy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/quaternions.py:79: error: Unsupported operand type for unary - ("list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [operator]
spatialmath/base/quaternions.py:81: error: Incompatible return value type (got "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/quaternions.py:109: error: Incompatible return value type (got "floating[Any]", expected "float")  [return-value]
spatialmath/base/quaternions.py:187: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/quaternions.py:431: error: Unsupported operand types for ** ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:431: error: Unsupported operand types for ** ("tuple[float, float, float]" and "int")  [operator]
spatialmath/base/quaternions.py:431: note: Left operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"
spatialmath/base/quaternions.py:432: error: Unsupported operand types for ** ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:432: error: Unsupported operand types for ** ("tuple[float, float, float]" and "int")  [operator]
spatialmath/base/quaternions.py:432: note: Left operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"
spatialmath/base/quaternions.py:598: error: Argument "check" to "isrot" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/base/quaternions.py:878: error: Argument 1 to "_compute_cdf_sin_squared" has incompatible type "ndarray[Any, dtype[floating[Any]]]"; expected "float"  [arg-type]
spatialmath/base/quaternions.py:923: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None")  [assignment]
spatialmath/base/quaternions.py:945: error: Unsupported operand types for / ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:945: error: Unsupported operand types for / ("tuple[float, ...]" and "int")  [operator]
spatialmath/base/quaternions.py:945: note: Left operand is of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"
spatialmath/base/quaternions.py:1091: error: Missing return statement  [return]
spatialmath/base/quaternions.py:1131: error: Argument 2 to "replace" of "str" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/base/quaternions.py:1132: error: Value of type "tuple[str, str] | None" is not indexable  [index]
spatialmath/base/graphics.py:5: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:26: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:27: error: Skipping analyzing "matplotlib.patches": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:28: error: Skipping analyzing "mpl_toolkits.mplot3d.art3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:33: error: Skipping analyzing "mpl_toolkits.mplot3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:209: error: Argument 2 to "islistof" has incompatible type "tuple[type[tuple[Any, ...]], type[list[Any]]]"; expected "type[Any] | Callable[..., Any]"  [arg-type]
spatialmath/base/graphics.py:210: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:211: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:242: error: Incompatible types in assignment (expression has type "list[tuple[Any, Any]]", variable has type "zip[tuple[Any, Any]]")  [assignment]
spatialmath/base/graphics.py:412: error: Incompatible types in assignment (expression has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]", variable has type "float | None")  [assignment]
spatialmath/base/graphics.py:484: error: Item "None" of "str | None" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/base/graphics.py:490: error: Incompatible types in assignment (expression has type "None", variable has type "str")  [assignment]
spatialmath/base/graphics.py:502: error: Missing return statement  [return]
spatialmath/base/graphics.py:582: error: Incompatible types in assignment (expression has type "list[str]", variable has type "str")  [assignment]
spatialmath/base/graphics.py:635: error: Argument "fmt" to "_render2D" has incompatible type "tuple[Any, ...]"; expected "Callable[..., Any] | None"  [arg-type]
spatialmath/base/graphics.py:696: error: Tuple index out of range  [misc]
spatialmath/base/graphics.py:749: error: Argument 3 to "circle" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/base/graphics.py:799: error: Skipping analyzing "scipy.linalg": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:805: error: Skipping analyzing "scipy.stats.distributions": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:808: error: Unsupported operand types for * ("float" and "None")  [operator]
spatialmath/base/graphics.py:808: note: Right operand is of type "float | None"
spatialmath/base/graphics.py:810: error: Incompatible types in assignment (expression has type "float | None", variable has type "float")  [assignment]
spatialmath/base/graphics.py:812: error: Argument "resolution" to "circle" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/base/graphics.py:812: error: Argument "closed" to "circle" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/base/graphics.py:820: error: Missing return statement  [return]
spatialmath/base/graphics.py:891: error: Incompatible default for argument "centre" (default has type "tuple[int, int, int]", argument has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None")  [assignment]
spatialmath/base/graphics.py:910: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:911: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:915: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:916: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:917: error: Tuple index out of range  [misc]
spatialmath/base/graphics.py:917: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:980: error: Argument 1 to "getmatrix" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1035: error: Unsupported operand types for * ("float" and "None")  [operator]
spatialmath/base/graphics.py:1035: note: Right operand is of type "float | None"
spatialmath/base/graphics.py:1037: error: Incompatible types in assignment (expression has type "float | None", variable has type "float")  [assignment]
spatialmath/base/graphics.py:1043: error: Argument 1 to "getvector" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1108: error: Argument 1 to "ellipsoid" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1144: error: No overload variant of "linspace" matches argument types "int", "float", "float"  [call-overload]
spatialmath/base/graphics.py:1144: note: Possible overload variants:
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1144: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[_SCT]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[Any]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[floating[Any]]], floating[Any]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[complexfloating[Any, Any]]], complexfloating[Any, Any]]
spatialmath/base/graphics.py:1144: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[_SCT]], _SCT]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[Any]], Any]
spatialmath/base/graphics.py:1145: error: No overload variant of "linspace" matches argument types "int", "float", "float"  [call-overload]
spatialmath/base/graphics.py:1145: note: Possible overload variants:
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1145: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[_SCT]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[Any]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[floating[Any]]], floating[Any]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[complexfloating[Any, Any]]], complexfloating[Any, Any]]
spatialmath/base/graphics.py:1145: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[_SCT]], _SCT]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[Any]], Any]
spatialmath/base/graphics.py:1146: error: Name "z" is not defined  [name-defined]
spatialmath/base/graphics.py:1205: error: List item 1 has incompatible type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]"; expected "float"  [list-item]
spatialmath/base/graphics.py:1208: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1208: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1213: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1219: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1222: error: No overload variant of "get" of "dict" matches argument types "str", "bool"  [call-overload]
spatialmath/base/graphics.py:1222: note: Possible overload variants:
spatialmath/base/graphics.py:1222: note:     def get(self, str, /) -> Any | None
spatialmath/base/graphics.py:1222: note:     def get(self, str, Any, /) -> Any
spatialmath/base/graphics.py:1222: note:     def [_T] get(self, str, _T, /) -> Any | _T
spatialmath/base/graphics.py:1224: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1226: error: Value of type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/graphics.py:1228: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1230: error: Value of type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/graphics.py:1289: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1290: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1294: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1295: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1296: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1303: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1306: error: No overload variant of "get" of "dict" matches argument types "str", "bool"  [call-overload]
spatialmath/base/graphics.py:1306: note: Possible overload variants:
spatialmath/base/graphics.py:1306: note:     def get(self, str, /) -> Any | None
spatialmath/base/graphics.py:1306: note:     def get(self, str, Any, /) -> Any
spatialmath/base/graphics.py:1306: note:     def [_T] get(self, str, _T, /) -> Any | _T
spatialmath/base/graphics.py:1307: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1309: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:1311: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1313: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:1359: error: No overload variant of "__add__" of "ndarray" matches argument type "None"  [operator]
spatialmath/base/graphics.py:1359: note: Possible overload variants:
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/base/graphics.py:1359: note: Right operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"
spatialmath/base/graphics.py:1374: error: "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]" has no attribute "A"  [attr-defined]
spatialmath/base/graphics.py:1498: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/graphics.py:1498: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/base/graphics.py:1573: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1573: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1573: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1628: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1628: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1628: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1688: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1688: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1688: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1745: error: Name "get_ipython" is not defined  [name-defined]
spatialmath/base/graphics.py:1769: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1769: note: Original:
spatialmath/base/graphics.py:1769: note:     def plot_text(pos: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], text: str, ax: Any | None = ..., color: str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1769: note: Redefinition:
spatialmath/base/graphics.py:1769: note:     def plot_text(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1772: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1772: note: Original:
spatialmath/base/graphics.py:1772: note:     def plot_box(*fmt: str | None, lbrt: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lrbt: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lbwh: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., bbox: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., ltrb: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lb: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., lt: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., rb: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., rt: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., wh: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., w: float | None = ..., h: float | None = ..., ax: Any | None = ..., filled: bool = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1772: note: Redefinition:
spatialmath/base/graphics.py:1772: note:     def plot_box(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1775: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1775: note: Original:
spatialmath/base/graphics.py:1775: note:     def plot_circle(radius: float, centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], *fmt: str | None, resolution: int | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1775: note: Redefinition:
spatialmath/base/graphics.py:1775: note:     def plot_circle(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1778: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1778: note: Original:
spatialmath/base/graphics.py:1778: note:     def plot_ellipse(E: ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]], centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], *fmt: str | None, scale: float | None = ..., confidence: float | None = ..., resolution: int | None = ..., inverted: bool | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1778: note: Redefinition:
spatialmath/base/graphics.py:1778: note:     def plot_ellipse(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1781: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1781: note: Original:
spatialmath/base/graphics.py:1781: note:     def plot_arrow(start: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], end: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], label: str | None = ..., label_pos: str = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1781: note: Redefinition:
spatialmath/base/graphics.py:1781: note:     def plot_arrow(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1784: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1784: note: Original:
spatialmath/base/graphics.py:1784: note:     def plot_sphere(radius: float, centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., resolution: int | None = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1784: note: Redefinition:
spatialmath/base/graphics.py:1784: note:     def plot_sphere(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1787: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1787: note: Original:
spatialmath/base/graphics.py:1787: note:     def plot_ellipsoid(E: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]], centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., scale: float | None = ..., confidence: float | None = ..., resolution: int | None = ..., inverted: bool | None = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1787: note: Redefinition:
spatialmath/base/graphics.py:1787: note:     def plot_ellipsoid(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1790: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1790: note: Original:
spatialmath/base/graphics.py:1790: note:     def plot_text(pos: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], text: str, ax: Any | None = ..., color: str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1790: note: Redefinition:
spatialmath/base/graphics.py:1790: note:     def plot_text(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1793: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1793: note: Original:
spatialmath/base/graphics.py:1793: note:     def plot_cuboid(sides: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1793: note: Redefinition:
spatialmath/base/graphics.py:1793: note:     def plot_cuboid(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1796: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1796: note: Original:
spatialmath/base/graphics.py:1796: note:     def plot_cone(radius: float, height: float, resolution: int | None = ..., flip: bool | None = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., ends: bool | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1796: note: Redefinition:
spatialmath/base/graphics.py:1796: note:     def plot_cone(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1799: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1799: note: Original:
spatialmath/base/graphics.py:1799: note:     def plot_cylinder(radius: float, height: float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], resolution: int | None = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., ends: Any = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any = ..., filled: Any = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1799: note: Redefinition:
spatialmath/base/graphics.py:1799: note:     def plot_cylinder(*args: Any, **kwargs: Any) -> None
spatialmath/base/animate.py:14: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/animate.py:14: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
spatialmath/base/animate.py:14: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/animate.py:76: error: Need type annotation for "displaylist" (hint: "displaylist: list[<type>] = ...")  [var-annotated]
spatialmath/base/animate.py:106: error: Argument "dim" to "plotvol3" has incompatible type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:155: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:157: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/animate.py:163: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:467: error: Argument 4 to "plot" of "Animate" has incompatible type "str"; expected "list[Any]"  [arg-type]
spatialmath/base/animate.py:539: error: Need type annotation for "displaylist" (hint: "displaylist: list[<type>] = ...")  [var-annotated]
spatialmath/base/animate.py:555: error: Argument 1 to "len" has incompatible type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"; expected "Sized"  [arg-type]
spatialmath/base/animate.py:557: error: Value of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/animate.py:558: error: Value of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/animate.py:595: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:82: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:121: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:155: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:499: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]")  [assignment]
spatialmath/base/transforms3d.py:501: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]")  [assignment]
spatialmath/base/transforms3d.py:501: error: Argument 1 to "getunit" has incompatible type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:648: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]")  [assignment]
spatialmath/base/transforms3d.py:650: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]")  [assignment]
spatialmath/base/transforms3d.py:650: error: Argument 1 to "getunit" has incompatible type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:652: error: Argument 1 to "rotz" has incompatible type "generic | int | float | complex | str | bytes | memoryview[int] | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:652: error: Argument 1 to "roty" has incompatible type "generic | int | float | complex | str | bytes | memoryview[int] | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:762: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:842: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:1024: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1097: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1113: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms3d.py:1114: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms3d.py:1186: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1287: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:1292: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:1370: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1418: error: Overloaded function signatures 3 and 4 overlap with incompatible return types  [overload-overlap]
spatialmath/base/transforms3d.py:1544: error: Single overload definition, multiple required  [misc]
spatialmath/base/transforms3d.py:1549: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/transforms3d.py:1549: error: Overloaded function implementation cannot produce return type of signature 1  [misc]
spatialmath/base/transforms3d.py:2241: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2251: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2473: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2540: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2541: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2542: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2773: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:2860: error: Argument 1 to "transl" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:2892: error: Incompatible types in assignment (expression has type "str", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:2894: error: Unsupported operand types for + ("float" and "str")  [operator]
spatialmath/base/transforms3d.py:2911: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:2911: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:2912: error: Skipping analyzing "mpl_toolkits.mplot3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:3219: error: Incompatible types in assignment (expression has type "tuple[float, float, float]", variable has type "ndarray[Any, dtype[Any]]")  [assignment]
spatialmath/twist.py:1822: error: Invalid conversion specifier in format string: unexpected }  [str-format]
spatialmath/spline.py:12: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:12: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:14: error: Skipping analyzing "scipy.interpolate": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:15: error: Skipping analyzing "scipy.spatial.transform": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:65: error: Argument 1 to "tranimate" has incompatible type "list[SE3]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/spline.py:102: error: Incompatible types in assignment (expression has type "list[SE3]", variable has type "SE3")  [assignment]
spatialmath/spline.py:204: error: Incompatible types in assignment (expression has type "float", variable has type "floating[Any]")  [assignment]
spatialmath/spline.py:226: error: "None" not callable  [misc]
spatialmath/spline.py:235: error: List comprehension has incompatible type List[floating[Any]]; expected List[float]  [misc]
spatialmath/spline.py:235: error: "None" not callable  [misc]
spatialmath/spline.py:267: error: Incompatible types in assignment (expression has type "list[SE3]", variable has type "SE3")  [assignment]
spatialmath/spline.py:278: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:279: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:280: error: Argument 2 to "append" has incompatible type "None"; expected "_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]"  [arg-type]
spatialmath/spline.py:282: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:283: error: Argument 1 to "append" has incompatible type "None"; expected "_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]"  [arg-type]
spatialmath/quaternion.py:134: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/quaternion.py:134: note:      Superclass:
spatialmath/quaternion.py:134: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/quaternion.py:134: note:      Subclass:
spatialmath/quaternion.py:134: note:          @staticmethod
spatialmath/quaternion.py:134: note:          def isvalid(x: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]) -> bool
spatialmath/quaternion.py:154: error: Item "list[float]" of "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:154: error: Item "tuple[float, ...]" of "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:179: error: Incompatible return value type (got "ndarray[Any, dtype[Any]] | Any", expected "float")  [return-value]
spatialmath/quaternion.py:181: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/quaternion.py:206: error: Incompatible return value type (got "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", expected "ndarray[tuple[Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/quaternion.py:235: error: Incompatible return value type (got "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/quaternion.py:292: error: Argument 1 to "qmatrix" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:336: error: Argument 1 to "qnorm" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:338: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/quaternion.py:471: error: Incompatible return value type (got "list[Any]", expected "float")  [return-value]
spatialmath/quaternion.py:476: error: Argument 1 of "__eq__" is incompatible with supertype "UserList"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:476: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:476: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:476: note: It is recommended for "__eq__" to work with arbitrary objects, for example:
spatialmath/quaternion.py:476: note:     def __eq__(self, other: object) -> bool:
spatialmath/quaternion.py:476: note:         if not isinstance(other, Quaternion):
spatialmath/quaternion.py:476: note:             return NotImplemented
spatialmath/quaternion.py:476: note:         return <logic to compare two Quaternion instances>
spatialmath/quaternion.py:476: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:501: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:504: error: Argument 1 of "__ne__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:504: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:504: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:528: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:531: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:531: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:531: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:594: error: Argument 1 of "__rmul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:594: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:594: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:618: error: Return type "bool" of "__imul__" incompatible with return type "Quaternion" in supertype "UserList"  [override]
spatialmath/quaternion.py:618: error: Return type "bool" of "__imul__" incompatible with return type "Quaternion" in "__mul__" of supertype "UserList"  [override]
spatialmath/quaternion.py:619: error: Argument 1 of "__imul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:619: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:619: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:619: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:644: error: Incompatible return value type (got "Quaternion", expected "bool")  [return-value]
spatialmath/quaternion.py:698: error: Argument 1 of "__add__" is incompatible with supertype "UserList"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/quaternion.py:698: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:698: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1003: error: Argument "check" to "isrot" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/quaternion.py:1051: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/quaternion.py:1051: note:      Superclass:
spatialmath/quaternion.py:1051: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/quaternion.py:1051: note:      Subclass:
spatialmath/quaternion.py:1051: note:          @staticmethod
spatialmath/quaternion.py:1051: note:          def isvalid(x: float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]], check: bool | None = ...) -> bool
spatialmath/quaternion.py:1071: error: Item "float" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1071: error: Item "list[float]" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1071: error: Item "tuple[float, ...]" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1103: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1134: error: Argument 1 to "q2v" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1162: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1164: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1192: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1194: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1222: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1224: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1287: error: Incompatible types in assignment (expression has type "list[float]", variable has type "tuple[list[float], ...]")  [assignment]
spatialmath/quaternion.py:1289: error: Argument 1 to "eul2r" has incompatible type "tuple[list[float], ...]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1289: error: Argument "unit" to "eul2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1342: error: Incompatible types in assignment (expression has type "list[float]", variable has type "tuple[list[float], ...]")  [assignment]
spatialmath/quaternion.py:1344: error: Argument 1 to "rpy2r" has incompatible type "tuple[list[float], ...]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1344: error: Argument "unit" to "rpy2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1344: error: Argument "order" to "rpy2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1414: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1414: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1553: error: Argument 1 to "qdot" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1570: error: Argument 1 to "qdotb" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1573: error: Argument 1 of "__mul__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1573: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1573: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1573: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1643: error: Incompatible return value type (got "Quaternion", expected "UnitQuaternion")  [return-value]
spatialmath/quaternion.py:1670: error: Return type "UnitQuaternion" of "__imul__" incompatible with return type "bool" in supertype "Quaternion"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1671: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1671: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1695: error: Argument 1 of "__truediv__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1695: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1695: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1754: error: Incompatible return value type (got "Quaternion", expected "UnitQuaternion")  [return-value]
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1759: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1759: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1759: note: It is recommended for "__eq__" to work with arbitrary objects, for example:
spatialmath/quaternion.py:1759: note:     def __eq__(self, other: object) -> bool:
spatialmath/quaternion.py:1759: note:         if not isinstance(other, UnitQuaternion):
spatialmath/quaternion.py:1759: note:             return NotImplemented
spatialmath/quaternion.py:1759: note:         return <logic to compare two UnitQuaternion instances>
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "UserList"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1785: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:1790: error: Argument 1 of "__ne__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1790: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1790: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1790: error: Argument 1 of "__ne__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1816: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:1886: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1888: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1912: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/quaternion.py:1962: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1964: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1984: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/quaternion.py:2016: error: Argument 1 to "qqmul" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "str"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "tuple[str, str, str]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "float"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool | str | tuple[str, float] | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "float | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "tuple[float, float, float]"  [arg-type]
spatialmath/quaternion.py:2063: error: Argument 1 to "tranimate" has incompatible type "list[ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2065: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2110: error: Argument "unit" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2110: error: Argument "order" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2112: error: Argument "unit" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2112: error: Argument "order" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2146: error: Argument "unit" to "tr2eul" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2148: error: Argument "unit" to "tr2eul" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2174: error: Argument "unit" to "tr2angvec" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2278: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:65: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/pose3d.py:111: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:111: note:      Superclass:
spatialmath/pose3d.py:111: note:          abstractstaticmethod[[], Any]
spatialmath/pose3d.py:111: note:      Subclass:
spatialmath/pose3d.py:111: note:          @staticmethod
spatialmath/pose3d.py:111: note:          def _identity() -> ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]
spatialmath/pose3d.py:247: error: Name "base" is not defined  [name-defined]
spatialmath/pose3d.py:348: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:348: note:      Superclass:
spatialmath/pose3d.py:348: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/pose3d.py:348: note:      Subclass:
spatialmath/pose3d.py:348: note:          @staticmethod
spatialmath/pose3d.py:348: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/pose3d.py:702: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:702: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:703: error: Argument 1 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:703: error: Argument 2 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:710: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:710: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:711: error: Argument 1 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:711: error: Argument 2 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:718: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:718: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:719: error: Argument 1 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:719: error: Argument 2 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:924: error: Incompatible types in assignment (expression has type "Callable[[Any, Any], float]", variable has type "Callable[[Any, Any], floating[Any]]")  [assignment]
spatialmath/pose3d.py:924: error: Incompatible return value type (got "float", expected "floating[Any]")  [return-value]
spatialmath/pose3d.py:1032: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:1032: note:      Superclass:
spatialmath/pose3d.py:1032: note:          abstractstaticmethod[[], Any]
spatialmath/pose3d.py:1032: note:      Subclass:
spatialmath/pose3d.py:1032: note:          @staticmethod
spatialmath/pose3d.py:1032: note:          def _identity() -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1048: error: "Callable[[SO3], ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]]" has no attribute "setter"  [attr-defined]
spatialmath/pose3d.py:1053: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[slice, slice]", "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [call-overload]
spatialmath/pose3d.py:1053: note: Possible overload variants:
spatialmath/pose3d.py:1053: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1053: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1079: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, int]"  [call-overload]
spatialmath/pose3d.py:1079: note: Possible overload variants:
spatialmath/pose3d.py:1079: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1079: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1088: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[slice, int]", "ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [call-overload]
spatialmath/pose3d.py:1088: note: Possible overload variants:
spatialmath/pose3d.py:1088: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1088: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1113: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1113: note: Possible overload variants:
spatialmath/pose3d.py:1113: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1113: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1115: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1121: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1121: note: Possible overload variants:
spatialmath/pose3d.py:1121: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1121: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1146: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1146: note: Possible overload variants:
spatialmath/pose3d.py:1146: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1146: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1148: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1154: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1154: note: Possible overload variants:
spatialmath/pose3d.py:1154: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1154: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1179: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1179: note: Possible overload variants:
spatialmath/pose3d.py:1179: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1179: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1181: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1187: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1187: note: Possible overload variants:
spatialmath/pose3d.py:1187: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1187: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1220: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1220: error: Argument 1 to "trinv" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1224: error: Missing return statement  [return]
spatialmath/pose3d.py:1291: error: Argument 1 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1293: error: Argument 1 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1293: error: Argument 2 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None"  [arg-type]
spatialmath/pose3d.py:1319: error: Incompatible return value type (got "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[6], Literal[6]], dtype[floating[Any]]]")  [return-value]
spatialmath/pose3d.py:1319: error: Argument 1 to "tr2adjoint" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1345: error: Argument 1 to "tr2jac" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1369: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:1369: note:      Superclass:
spatialmath/pose3d.py:1369: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/pose3d.py:1369: note:      Subclass:
spatialmath/pose3d.py:1369: note:          @staticmethod
spatialmath/pose3d.py:1369: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/pose3d.py:1562: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1565: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1568: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1576: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1576: error: Signature of "Eul" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1576: note:      Superclass:
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          @classmethod
spatialmath/pose3d.py:1576: note:          def Eul(cls, *angles: float, unit: str = ...) -> Any
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          @classmethod
spatialmath/pose3d.py:1576: note:          def Eul(cls, *angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], unit: str = ...) -> Any
spatialmath/pose3d.py:1576: note:      Subclass:
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          def Eul(cls, phi: float, theta: float, psi: float, unit: str = ...) -> SE3
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          def Eul(cls, angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]], unit: str = ...) -> SE3
spatialmath/pose3d.py:1584: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/pose3d.py:1584: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1626: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1626: error: Signature of "RPY" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1626: note:      Superclass:
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          @classmethod
spatialmath/pose3d.py:1626: note:          def RPY(cls, *angles: float, unit: str = ..., order: Any = ...) -> Any
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          @classmethod
spatialmath/pose3d.py:1626: note:          def RPY(cls, *angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], unit: str = ..., order: Any = ...) -> Any
spatialmath/pose3d.py:1626: note:      Subclass:
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          def RPY(cls, roll: float, pitch: float, yaw: float, unit: str = ...) -> SE3
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          def RPY(cls, angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]], unit: str = ...) -> SE3
spatialmath/pose3d.py:1634: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/pose3d.py:1634: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1730: error: Name "unit" is not defined  [name-defined]
spatialmath/pose3d.py:1815: error: Signature of "Exp" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1815: note:      Superclass:
spatialmath/pose3d.py:1815: note:          @classmethod
spatialmath/pose3d.py:1815: note:          def Exp(cls, S: ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], check: bool = ..., so3: bool = ...) -> Any
spatialmath/pose3d.py:1815: note:      Subclass:
spatialmath/pose3d.py:1815: note:          @classmethod
spatialmath/pose3d.py:1815: note:          def Exp(cls, S: ndarray[tuple[Literal[6]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]], check: bool = ...) -> SE3
spatialmath/pose3d.py:1834: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1834: error: Argument 1 to "trexp" has incompatible type "ndarray[tuple[Literal[6]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "trnorm" has incompatible type "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "delta2tr" has incompatible type "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[6]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1856: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1864: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1992: error: Incompatible types in assignment (expression has type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", variable has type "SO3 | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/pose3d.py:2000: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:2000: error: Argument 1 to "rt2tr" has incompatible type "SO3 | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:2000: error: Argument 2 to "rt2tr" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[_64Bit]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:2023: error: Argument 1 of "angdist" is incompatible with supertype "SO3"; supertype defines the argument type as "SO3"  [override]
spatialmath/pose3d.py:2023: note: This violates the Liskov substitution principle
spatialmath/pose3d.py:2023: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/pose3d.py:2080: error: Incompatible types in assignment (expression has type "Callable[[Any, Any], float]", variable has type "Callable[[Any, Any], floating[Any]]")  [assignment]
spatialmath/pose3d.py:2080: error: Incompatible return value type (got "float", expected "floating[Any]")  [return-value]
spatialmath/pose3d.py:2088: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/geom3d.py:9: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom3d.py:9: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom3d.py:223: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:226: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:227: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:328: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/geom3d.py:328: note:      Superclass:
spatialmath/geom3d.py:328: note:          abstractstaticmethod[[], Any]
spatialmath/geom3d.py:328: note:      Subclass:
spatialmath/geom3d.py:328: note:          @staticmethod
spatialmath/geom3d.py:328: note:          def _identity() -> ndarray[tuple[Literal[6]], dtype[floating[Any]]]
spatialmath/geom3d.py:332: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/geom3d.py:332: note:      Superclass:
spatialmath/geom3d.py:332: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/geom3d.py:332: note:      Subclass:
spatialmath/geom3d.py:332: note:          @staticmethod
spatialmath/geom3d.py:332: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/geom3d.py:420: error: Argument 1 of "append" is incompatible with supertype "BasePoseList"; supertype defines the argument type as "BasePoseList"  [override]
spatialmath/geom3d.py:420: note: This violates the Liskov substitution principle
spatialmath/geom3d.py:420: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/geom3d.py:436: error: Argument 1 to "append" of "BasePoseList" has incompatible type "ndarray[tuple[Literal[6]], dtype[floating[Any]]]"; expected "BasePoseList"  [arg-type]
spatialmath/geom3d.py:444: error: Incompatible return value type (got "list[Any]", expected "ndarray[tuple[Literal[6]], dtype[floating[Any]]]")  [return-value]
spatialmath/geom3d.py:850: error: Name "dot" is not defined  [name-defined]
spatialmath/geom3d.py:988: error: Incompatible return value type (got "tuple[ndarray[Any, dtype[Any]], floating[Any]]", expected "tuple[ndarray[tuple[Literal[3]], dtype[floating[Any]]], float]")  [return-value]
spatialmath/geom3d.py:1008: error: Incompatible return value type (got "None", expected "Line3")  [return-value]
spatialmath/geom3d.py:1020: error: Return type "float" of "__mul__" incompatible with return type "Line3" in supertype "UserList"  [override]
spatialmath/geom3d.py:1021: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/geom3d.py:1021: note: This violates the Liskov substitution principle
spatialmath/geom3d.py:1021: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/geom3d.py:1049: error: Name "SE3" is not defined  [name-defined]
spatialmath/geom3d.py:1123: error: Too many arguments for "tuple"  [call-arg]
spatialmath/geom3d.py:1125: error: Incompatible return value type (got "None", expected "tuple[ndarray[tuple[Literal[3]], dtype[floating[Any]]], float]")  [return-value]
spatialmath/geom3d.py:1155: error: Item "list[float]" of "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]" has no attribute "reshape"  [union-attr]
spatialmath/geom3d.py:1155: error: Item "tuple[float, ...]" of "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]" has no attribute "reshape"  [union-attr]
spatialmath/geom3d.py:1172: error: Incompatible types in assignment (expression has type "float | Any", target has type "int")  [assignment]
spatialmath/geom3d.py:1173: error: Argument "p" to "PointNormal" of "Plane3" has incompatible type "list[int]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/geom3d.py:1173: note: "List" is invariant -- see https://mypy.readthedocs.io/en/stable/common_issues.html#variance
spatialmath/geom3d.py:1173: note: Consider using "Sequence" instead, which is covariant
spatialmath/geom3d.py:1177: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "list[int]")  [assignment]
spatialmath/geom3d.py:1198: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[int]")  [assignment]
spatialmath/geom3d.py:1200: error: Too many arguments for "tuple"  [call-arg]
spatialmath/geom2d.py:12: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:12: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:13: error: Skipping analyzing "matplotlib.path": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:14: error: Skipping analyzing "matplotlib.patches": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:15: error: Skipping analyzing "matplotlib.transforms": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:731: error: Argument 1 to "__call__" of "_UFunc_Nin1_Nout1" has incompatible type "float | None"; expected "int | float | complex | str | bytes | generic"  [arg-type]
spatialmath/geom2d.py:799: error: No overload variant of "__matmul__" of "ndarray" matches argument type "None"  [operator]
spatialmath/geom2d.py:799: note: Possible overload variants:
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/geom2d.py:799: note: Both left and right operands are unions
spatialmath/geom2d.py:925: error: Incompatible return value type (got "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[2]], dtype[floating[Any]]]")  [return-value]
spatialmath/geom2d.py:1066: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:26: error: Skipping analyzing "colored": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/baseposematrix.py:38: error: Skipping analyzing "ansitable": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/baseposematrix.py:304: error: Missing return statement  [return]
spatialmath/baseposematrix.py:327: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, slice]"  [call-overload]
spatialmath/baseposematrix.py:327: note: Possible overload variants:
spatialmath/baseposematrix.py:327: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/baseposematrix.py:327: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/baseposematrix.py:329: error: Incompatible return value type (got "list[Any]", expected "tuple[float, ndarray[tuple[Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]]")  [return-value]
spatialmath/baseposematrix.py:332: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, slice]"  [call-overload]
spatialmath/baseposematrix.py:332: note: Possible overload variants:
spatialmath/baseposematrix.py:332: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/baseposematrix.py:332: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/baseposematrix.py:334: error: Incompatible return value type (got "list[Any]", expected "tuple[float, ndarray[tuple[Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]]")  [return-value]
spatialmath/baseposematrix.py:372: error: Argument "twist" to "trlog2" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/baseposematrix.py:374: error: List comprehension has incompatible type List[ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]]; expected List[ndarray[tuple[Literal[2]], dtype[floating[Any]]]]  [misc]
spatialmath/baseposematrix.py:374: error: Argument "twist" to "trlog" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/baseposematrix.py:380: error: Incompatible default for argument "s" (default has type "None", argument has type "int | float")  [assignment]
spatialmath/baseposematrix.py:380: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/baseposematrix.py:380: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/baseposematrix.py:421: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "int | float")  [assignment]
spatialmath/baseposematrix.py:423: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "int | float")  [assignment]
spatialmath/baseposematrix.py:430: error: Argument 1 to "len" has incompatible type "bool"; expected "Sized"  [arg-type]
spatialmath/baseposematrix.py:432: error: "bool" has no attribute "A"  [attr-defined]
spatialmath/baseposematrix.py:437: error: No overload variant of "trinterp2" matches argument types "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", "bool | None", "Any", "bool"  [call-overload]
spatialmath/baseposematrix.py:437: note: Possible overload variants:
spatialmath/baseposematrix.py:437: note:     def trinterp2(start: ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:437: note:     def trinterp2(start: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:437: error: Item "int" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:437: error: Item "float" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:443: error: No overload variant of "trinterp" matches argument types "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", "bool | None", "Any", "bool"  [call-overload]
spatialmath/baseposematrix.py:443: note: Possible overload variants:
spatialmath/baseposematrix.py:443: note:     def trinterp(start: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:443: note:     def trinterp(start: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:443: error: Item "int" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:443: error: Item "float" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:446: error: Incompatible default for argument "s" (default has type "None", argument has type "float")  [assignment]
spatialmath/baseposematrix.py:446: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/baseposematrix.py:446: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/baseposematrix.py:497: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/baseposematrix.py:502: error: Argument 1 to "len" has incompatible type "float"; expected "Sized"  [arg-type]
spatialmath/baseposematrix.py:504: error: Name "start" is not defined  [name-defined]
spatialmath/baseposematrix.py:504: error: Argument 2 to "trinterp2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:504: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/baseposematrix.py:507: error: Name "start" is not defined  [name-defined]
spatialmath/baseposematrix.py:507: error: Value of type "float" is not indexable  [index]
spatialmath/baseposematrix.py:513: error: Argument 2 to "trinterp" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:513: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/baseposematrix.py:516: error: Value of type "float" is not indexable  [index]
spatialmath/baseposematrix.py:623: error: Item "list[ndarray[Any, dtype[Any]]]" of "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]" has no attribute "T"  [union-attr]
spatialmath/baseposematrix.py:625: error: "BasePoseMatrix" has no attribute "inv"  [attr-defined]
spatialmath/baseposematrix.py:775: error: "trprint2" gets multiple values for keyword argument "file"  [misc]
spatialmath/baseposematrix.py:775: error: Argument "file" to "trprint2" has incompatible type "bool"; expected "TextIO"  [arg-type]
spatialmath/baseposematrix.py:778: error: "trprint" gets multiple values for keyword argument "file"  [misc]
spatialmath/baseposematrix.py:778: error: Argument "file" to "trprint" has incompatible type "bool"; expected "TextIO"  [arg-type]
spatialmath/baseposematrix.py:902: error: Incompatible redefinition (redefinition with type "Callable[[Any, Any], Any]", original type "bool | None")  [misc]
spatialmath/baseposematrix.py:908: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:908: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:909: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:909: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:910: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:910: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:911: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:911: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:912: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:912: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:1000: error: Argument 1 to "trplot2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1002: error: Argument 1 to "trplot" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1033: error: Argument 1 to "tranimate2" has incompatible type "list[Any]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1035: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:1035: error: Argument 1 to "tranimate" has incompatible type "list[Any]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1039: error: Argument 1 to "tranimate2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1041: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:1041: error: Argument 1 to "tranimate" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposelist.py:78: error: Method must have at least one argument. Did you forget the "self" argument?  [misc]
spatialmath/baseposelist.py:102: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:136: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:137: error: Argument 1 to "range" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/baseposelist.py:289: error: Signature of "__getitem__" incompatible with supertype "UserList"  [override]
spatialmath/baseposelist.py:289: note:      Superclass:
spatialmath/baseposelist.py:289: note:          @overload
spatialmath/baseposelist.py:289: note:          def __getitem__(self, SupportsIndex, /) -> Any
spatialmath/baseposelist.py:289: note:          @overload
spatialmath/baseposelist.py:289: note:          def __getitem__(self, slice, /) -> BasePoseList
spatialmath/baseposelist.py:289: note:      Subclass:
spatialmath/baseposelist.py:289: note:          def __getitem__(self, int | slice, /) -> BasePoseList
spatialmath/baseposelist.py:326: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:330: error: No overload variant of "BasePoseList" matches argument types "Any", "bool"  [call-overload]
spatialmath/baseposelist.py:330: note: Possible overload variants:
spatialmath/baseposelist.py:330: note:     def BasePoseList(self, initlist: None = ...) -> BasePoseList
spatialmath/baseposelist.py:330: note:     def BasePoseList(self, initlist: Iterable[Any]) -> BasePoseList
spatialmath/baseposelist.py:335: error: Signature of "__setitem__" incompatible with supertype "UserList"  [override]
spatialmath/baseposelist.py:335: note:      Superclass:
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, SupportsIndex, Any, /) -> None
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, slice, Iterable[Any], /) -> None
spatialmath/baseposelist.py:335: note:      Subclass:
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, BasePoseList, /) -> None
spatialmath/baseposelist.py:335: error: Signature of "__setitem__" incompatible with supertype "MutableSequence"  [override]
spatialmath/baseposelist.py:335: note:      Superclass:
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, Any, /) -> None
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, slice, Iterable[Any], /) -> None
spatialmath/baseposelist.py:335: note:      Subclass:
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, BasePoseList, /) -> None
spatialmath/baseposelist.py:365: error: Return type "type[Exception]" of "__lt__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:365: error: Argument 1 of "__lt__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:365: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:365: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:368: error: Return type "type[Exception]" of "__le__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:368: error: Argument 1 of "__le__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:368: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:368: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:371: error: Return type "type[Exception]" of "__gt__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:371: error: Argument 1 of "__gt__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:371: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:371: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:374: error: Return type "type[Exception]" of "__ge__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:374: error: Argument 1 of "__ge__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:374: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:374: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:405: error: Argument 1 of "extend" is incompatible with supertype "UserList"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/baseposelist.py:405: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:405: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:405: error: Argument 1 of "extend" is incompatible with supertype "MutableSequence"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/baseposelist.py:495: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:495: error: Argument 1 to "pop" of "UserList" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/baseposelist.py:673: error: List item 0 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:673: error: List item 1 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:673: error: List item 2 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:676: error: Incompatible types in assignment (expression has type "SO2", variable has type "SO3")  [assignment]
spatialmath/DualQuaternion.py:33: error: Incompatible default for argument "real" (default has type "None", argument has type "Quaternion")  [assignment]
spatialmath/DualQuaternion.py:33: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/DualQuaternion.py:33: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/DualQuaternion.py:33: error: Incompatible default for argument "dual" (default has type "None", argument has type "Quaternion")  [assignment]
spatialmath/DualQuaternion.py:70: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:71: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:98: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:98: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:118: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:119: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:119: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:141: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:141: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:160: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:160: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:179: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:179: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:200: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:201: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:201: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:206: error: No overload variant of "UnitDualQuaternion" matches argument types "Any", "Any"  [call-overload]
spatialmath/DualQuaternion.py:206: note: Possible overload variant:
spatialmath/DualQuaternion.py:206: note:     def __init__(self, T: SE3) -> UnitDualQuaternion
spatialmath/DualQuaternion.py:235: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:235: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:254: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:254: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:273: error: Single overload definition, multiple required  [misc]
spatialmath/DualQuaternion.py:277: error: The implementation for an overloaded function must come last  [misc]
spatialmath/DualQuaternion.py:348: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:349: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:349: error: Cannot determine type of "real"  [has-type]
Found 521 errors in 21 files (checked 28 source files)

@jbarnett-bdai
Copy link
Contributor Author

Focusing on

spatialmath/base/_types_311.py:3: error: Module "typing" has no attribute "Self"  [attr-defined]
spatialmath/base/_types_311.py:3: note: Use `from typing_extensions import Self` instead
spatialmath/base/_types_311.py:3: note: See https://mypy.readthedocs.io/en/stable/runtime_troubles.html#using-new-additions-to-the-typing-module
spatialmath/base/types.py:9: error: Incompatible import of "SE2Array" (imported name has type "type[ndarray[Any, Any]]", local name has type "type[ndarray[Any, Any]]")  [assignment]
spatialmath/base/types.py:9: error: Incompatible import of "SO2Array" (imported name has type "type[ndarray[Any, Any]]", local name has type "type[ndarray[Any, Any]]")  [assignment]
spatialmath/base/types.py:11: error: Incompatible import of "L" (imported name has type "typing_extensions._SpecialForm", local name has type "<typing special form>")  [assignment]

It looks like the python version conditionals are not written in a way that mypy can undertsand.

@jbarnett-bdai
Copy link
Contributor Author

Fixing that reveals more problems:

(.venv) jbarnett@jbarnett-LT:~/spatialmath-python$ mypy spatialmath
spatialmath/timing.py:11: error: Skipping analyzing "ansitable": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/symbolic.py:19: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/symbolic.py:28: error: Incompatible types in assignment (expression has type "tuple[()]", variable has type "tuple[Any]")  [assignment]
spatialmath/base/argcheck.py:291: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/vectors.py:21: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/vectors.py:56: error: Incompatible types in assignment (expression has type "float | Any", variable has type "int")  [assignment]
spatialmath/base/vectors.py:90: error: Incompatible types in assignment (expression has type "float | Any", variable has type "int")  [assignment]
spatialmath/base/vectors.py:846: error: Unsupported left operand type for - ("list[float]")  [operator]
spatialmath/base/vectors.py:846: error: Unsupported left operand type for - ("tuple[float, float, float]")  [operator]
spatialmath/base/vectors.py:846: note: Both left and right operands are unions
spatialmath/base/transformsNd.py:27: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transformsNd.py:594: error: Overloaded function signatures 1 and 2 overlap with incompatible return types  [overload-overlap]
spatialmath/base/transforms2d.py:22: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:22: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:37: error: Skipping analyzing "sympy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:66: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:464: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms2d.py:474: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms2d.py:654: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None", variable has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms2d.py:665: error: No overload variant of "__mul__" of "ndarray" matches argument type "None"  [operator]
spatialmath/base/transforms2d.py:665: note: Possible overload variants:
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[bool_ | integer[Any] | timedelta64]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | timedelta64]]] | bool | int | _NestedSequence[bool | int], /) -> ndarray[Any, dtype[timedelta64]]
spatialmath/base/transforms2d.py:665: note:     def __mul__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/base/transforms2d.py:665: note: Right operand is of type "float | None"
spatialmath/base/transforms2d.py:666: error: Argument 1 to "cos" has incompatible type "float | None"; expected "SupportsFloat | SupportsIndex"  [arg-type]
spatialmath/base/transforms2d.py:666: note: Left operand is of type "ndarray[Any, dtype[floating[Any]]] | Any"
spatialmath/base/transforms2d.py:667: error: Unsupported operand types for - ("None" and "float")  [operator]
spatialmath/base/transforms2d.py:667: note: Left operand is of type "float | None"
spatialmath/base/transforms2d.py:667: note: Left operand is of type "ndarray[Any, dtype[floating[Any]]] | Any"
spatialmath/base/transforms2d.py:667: error: Argument 1 to "sin" has incompatible type "float | None"; expected "SupportsFloat | SupportsIndex"  [arg-type]
spatialmath/base/transforms2d.py:694: error: Single overload definition, multiple required  [misc]
spatialmath/base/transforms2d.py:699: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/transforms2d.py:699: error: Overloaded function implementation cannot produce return type of signature 1  [misc]
spatialmath/base/transforms2d.py:923: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:945: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/base/transforms2d.py:1134: error: Skipping analyzing "scipy.spatial": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:1213: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms2d.py:1229: error: Skipping analyzing "matplotlib.axes": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms2d.py:1441: error: Incompatible types in assignment (expression has type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "str")  [assignment]
spatialmath/base/transforms2d.py:1455: error: Incompatible types in assignment (expression has type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "str")  [assignment]
spatialmath/base/quaternions.py:19: error: Skipping analyzing "scipy.interpolate": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/quaternions.py:19: error: Skipping analyzing "scipy": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/quaternions.py:79: error: Unsupported operand type for unary - ("list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [operator]
spatialmath/base/quaternions.py:81: error: Incompatible return value type (got "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/quaternions.py:109: error: Incompatible return value type (got "floating[Any]", expected "float")  [return-value]
spatialmath/base/quaternions.py:187: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/quaternions.py:431: error: Unsupported operand types for ** ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:431: error: Unsupported operand types for ** ("tuple[float, float, float]" and "int")  [operator]
spatialmath/base/quaternions.py:431: note: Left operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"
spatialmath/base/quaternions.py:432: error: Unsupported operand types for ** ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:432: error: Unsupported operand types for ** ("tuple[float, float, float]" and "int")  [operator]
spatialmath/base/quaternions.py:432: note: Left operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"
spatialmath/base/quaternions.py:598: error: Argument "check" to "isrot" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/base/quaternions.py:878: error: Argument 1 to "_compute_cdf_sin_squared" has incompatible type "ndarray[Any, dtype[floating[Any]]]"; expected "float"  [arg-type]
spatialmath/base/quaternions.py:923: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None")  [assignment]
spatialmath/base/quaternions.py:945: error: Unsupported operand types for / ("list[float]" and "int")  [operator]
spatialmath/base/quaternions.py:945: error: Unsupported operand types for / ("tuple[float, ...]" and "int")  [operator]
spatialmath/base/quaternions.py:945: note: Left operand is of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"
spatialmath/base/quaternions.py:1091: error: Missing return statement  [return]
spatialmath/base/quaternions.py:1131: error: Argument 2 to "replace" of "str" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/base/quaternions.py:1132: error: Value of type "tuple[str, str] | None" is not indexable  [index]
spatialmath/base/graphics.py:5: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:26: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:27: error: Skipping analyzing "matplotlib.patches": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:28: error: Skipping analyzing "mpl_toolkits.mplot3d.art3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:33: error: Skipping analyzing "mpl_toolkits.mplot3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:209: error: Argument 2 to "islistof" has incompatible type "tuple[type[tuple[Any, ...]], type[list[Any]]]"; expected "type[Any] | Callable[..., Any]"  [arg-type]
spatialmath/base/graphics.py:210: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:211: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:242: error: Incompatible types in assignment (expression has type "list[tuple[Any, Any]]", variable has type "zip[tuple[Any, Any]]")  [assignment]
spatialmath/base/graphics.py:412: error: Incompatible types in assignment (expression has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]", variable has type "float | None")  [assignment]
spatialmath/base/graphics.py:484: error: Item "None" of "str | None" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/base/graphics.py:490: error: Incompatible types in assignment (expression has type "None", variable has type "str")  [assignment]
spatialmath/base/graphics.py:502: error: Missing return statement  [return]
spatialmath/base/graphics.py:582: error: Incompatible types in assignment (expression has type "list[str]", variable has type "str")  [assignment]
spatialmath/base/graphics.py:635: error: Argument "fmt" to "_render2D" has incompatible type "tuple[Any, ...]"; expected "Callable[..., Any] | None"  [arg-type]
spatialmath/base/graphics.py:696: error: Tuple index out of range  [misc]
spatialmath/base/graphics.py:749: error: Argument 3 to "circle" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/base/graphics.py:799: error: Skipping analyzing "scipy.linalg": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:805: error: Skipping analyzing "scipy.stats.distributions": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/graphics.py:808: error: Unsupported operand types for * ("float" and "None")  [operator]
spatialmath/base/graphics.py:808: note: Right operand is of type "float | None"
spatialmath/base/graphics.py:810: error: Incompatible types in assignment (expression has type "float | None", variable has type "float")  [assignment]
spatialmath/base/graphics.py:812: error: Argument "resolution" to "circle" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/base/graphics.py:812: error: Argument "closed" to "circle" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/base/graphics.py:820: error: Missing return statement  [return]
spatialmath/base/graphics.py:891: error: Incompatible default for argument "centre" (default has type "tuple[int, int, int]", argument has type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None")  [assignment]
spatialmath/base/graphics.py:910: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:911: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:915: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:916: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:917: error: Tuple index out of range  [misc]
spatialmath/base/graphics.py:917: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:980: error: Argument 1 to "getmatrix" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1035: error: Unsupported operand types for * ("float" and "None")  [operator]
spatialmath/base/graphics.py:1035: note: Right operand is of type "float | None"
spatialmath/base/graphics.py:1037: error: Incompatible types in assignment (expression has type "float | None", variable has type "float")  [assignment]
spatialmath/base/graphics.py:1043: error: Argument 1 to "getvector" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1108: error: Argument 1 to "ellipsoid" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/graphics.py:1144: error: No overload variant of "linspace" matches argument types "int", "float", "float"  [call-overload]
spatialmath/base/graphics.py:1144: note: Possible overload variants:
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1144: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[_SCT]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[Any]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[floating[Any]]], floating[Any]]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[complexfloating[Any, Any]]], complexfloating[Any, Any]]
spatialmath/base/graphics.py:1144: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[_SCT]], _SCT]
spatialmath/base/graphics.py:1144: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[Any]], Any]
spatialmath/base/graphics.py:1145: error: No overload variant of "linspace" matches argument types "int", "float", "float"  [call-overload]
spatialmath/base/graphics.py:1145: note: Possible overload variants:
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1145: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[_SCT]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[False] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> ndarray[Any, dtype[Any]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[floating[Any]]], floating[Any]]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[complexfloating[Any, Any]]], complexfloating[Any, Any]]
spatialmath/base/graphics.py:1145: note:     def [_SCT: generic] linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[_SCT] | type[_SCT] | _SupportsDType[dtype[_SCT]] = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[_SCT]], _SCT]
spatialmath/base/graphics.py:1145: note:     def linspace(start: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], stop: _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], num: SupportsIndex = ..., endpoint: bool = ..., retstep: Literal[True] = ..., dtype: dtype[Any] | type[Any] | _SupportsDType[dtype[Any]] | str | tuple[Any, int] | tuple[Any, SupportsIndex | Sequence[SupportsIndex]] | list[Any] | _DTypeDict | tuple[Any, Any] | None = ..., axis: SupportsIndex = ...) -> tuple[ndarray[Any, dtype[Any]], Any]
spatialmath/base/graphics.py:1146: error: Name "z" is not defined  [name-defined]
spatialmath/base/graphics.py:1205: error: List item 1 has incompatible type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]"; expected "float"  [list-item]
spatialmath/base/graphics.py:1208: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1208: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1213: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1219: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1222: error: No overload variant of "get" of "dict" matches argument types "str", "bool"  [call-overload]
spatialmath/base/graphics.py:1222: note: Possible overload variants:
spatialmath/base/graphics.py:1222: note:     def get(self, str, /) -> Any | None
spatialmath/base/graphics.py:1222: note:     def get(self, str, Any, /) -> Any
spatialmath/base/graphics.py:1222: note:     def [_T] get(self, str, _T, /) -> Any | _T
spatialmath/base/graphics.py:1224: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1226: error: Value of type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/graphics.py:1228: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1230: error: Value of type "float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/graphics.py:1289: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1290: error: Argument 3 to "linspace" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/base/graphics.py:1294: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1295: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1296: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1303: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1306: error: No overload variant of "get" of "dict" matches argument types "str", "bool"  [call-overload]
spatialmath/base/graphics.py:1306: note: Possible overload variants:
spatialmath/base/graphics.py:1306: note:     def get(self, str, /) -> Any | None
spatialmath/base/graphics.py:1306: note:     def get(self, str, Any, /) -> Any
spatialmath/base/graphics.py:1306: note:     def [_T] get(self, str, _T, /) -> Any | _T
spatialmath/base/graphics.py:1307: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1309: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:1311: error: Value of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/base/graphics.py:1313: error: Value of type "float" is not indexable  [index]
spatialmath/base/graphics.py:1359: error: No overload variant of "__add__" of "ndarray" matches argument type "None"  [operator]
spatialmath/base/graphics.py:1359: note: Possible overload variants:
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/base/graphics.py:1359: note:     def __add__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/base/graphics.py:1359: note: Right operand is of type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"
spatialmath/base/graphics.py:1374: error: "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]" has no attribute "A"  [attr-defined]
spatialmath/base/graphics.py:1498: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/graphics.py:1498: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/base/graphics.py:1573: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1573: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1573: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1628: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1628: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1628: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1688: error: Incompatible default for argument "dim" (default has type "None", argument has type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]")  [assignment]
spatialmath/base/graphics.py:1688: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/base/graphics.py:1688: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/base/graphics.py:1745: error: Name "get_ipython" is not defined  [name-defined]
spatialmath/base/graphics.py:1769: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1769: note: Original:
spatialmath/base/graphics.py:1769: note:     def plot_text(pos: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], text: str, ax: Any | None = ..., color: str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1769: note: Redefinition:
spatialmath/base/graphics.py:1769: note:     def plot_text(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1772: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1772: note: Original:
spatialmath/base/graphics.py:1772: note:     def plot_box(*fmt: str | None, lbrt: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lrbt: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lbwh: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., bbox: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., ltrb: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]] | None = ..., lb: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., lt: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., rb: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., rt: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., wh: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None = ..., w: float | None = ..., h: float | None = ..., ax: Any | None = ..., filled: bool = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1772: note: Redefinition:
spatialmath/base/graphics.py:1772: note:     def plot_box(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1775: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1775: note: Original:
spatialmath/base/graphics.py:1775: note:     def plot_circle(radius: float, centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], *fmt: str | None, resolution: int | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1775: note: Redefinition:
spatialmath/base/graphics.py:1775: note:     def plot_circle(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1778: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1778: note: Original:
spatialmath/base/graphics.py:1778: note:     def plot_ellipse(E: ndarray[tuple[Literal[2], Literal[2]], dtype[floating[Any]]], centre: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], *fmt: str | None, scale: float | None = ..., confidence: float | None = ..., resolution: int | None = ..., inverted: bool | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1778: note: Redefinition:
spatialmath/base/graphics.py:1778: note:     def plot_ellipse(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1781: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1781: note: Original:
spatialmath/base/graphics.py:1781: note:     def plot_arrow(start: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], end: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], label: str | None = ..., label_pos: str = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1781: note: Redefinition:
spatialmath/base/graphics.py:1781: note:     def plot_arrow(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1784: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1784: note: Original:
spatialmath/base/graphics.py:1784: note:     def plot_sphere(radius: float, centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., resolution: int | None = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1784: note: Redefinition:
spatialmath/base/graphics.py:1784: note:     def plot_sphere(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1787: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1787: note: Original:
spatialmath/base/graphics.py:1787: note:     def plot_ellipsoid(E: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]], centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., scale: float | None = ..., confidence: float | None = ..., resolution: int | None = ..., inverted: bool | None = ..., ax: Any | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1787: note: Redefinition:
spatialmath/base/graphics.py:1787: note:     def plot_ellipsoid(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1790: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1790: note: Original:
spatialmath/base/graphics.py:1790: note:     def plot_text(pos: list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], text: str, ax: Any | None = ..., color: str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1790: note: Redefinition:
spatialmath/base/graphics.py:1790: note:     def plot_text(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1793: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1793: note: Original:
spatialmath/base/graphics.py:1793: note:     def plot_cuboid(sides: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1793: note: Redefinition:
spatialmath/base/graphics.py:1793: note:     def plot_cuboid(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1796: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1796: note: Original:
spatialmath/base/graphics.py:1796: note:     def plot_cone(radius: float, height: float, resolution: int | None = ..., flip: bool | None = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., ends: bool | None = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any | None = ..., filled: bool | None = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1796: note: Redefinition:
spatialmath/base/graphics.py:1796: note:     def plot_cone(*args: Any, **kwargs: Any) -> None
spatialmath/base/graphics.py:1799: error: All conditional function variants must have identical signatures  [misc]
spatialmath/base/graphics.py:1799: note: Original:
spatialmath/base/graphics.py:1799: note:     def plot_cylinder(radius: float, height: float | list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]], resolution: int | None = ..., centre: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None = ..., ends: Any = ..., pose: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None = ..., ax: Any = ..., filled: Any = ..., **kwargs: Any) -> list[Any]
spatialmath/base/graphics.py:1799: note: Redefinition:
spatialmath/base/graphics.py:1799: note:     def plot_cylinder(*args: Any, **kwargs: Any) -> None
spatialmath/base/animate.py:14: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/animate.py:14: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
spatialmath/base/animate.py:14: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/animate.py:76: error: Need type annotation for "displaylist" (hint: "displaylist: list[<type>] = ...")  [var-annotated]
spatialmath/base/animate.py:106: error: Argument "dim" to "plotvol3" has incompatible type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]] | None"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:155: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:157: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/animate.py:163: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:467: error: Argument 4 to "plot" of "Animate" has incompatible type "str"; expected "list[Any]"  [arg-type]
spatialmath/base/animate.py:539: error: Need type annotation for "displaylist" (hint: "displaylist: list[<type>] = ...")  [var-annotated]
spatialmath/base/animate.py:555: error: Argument 1 to "len" has incompatible type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"; expected "Sized"  [arg-type]
spatialmath/base/animate.py:557: error: Value of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/animate.py:558: error: Value of type "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/base/animate.py:593: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/animate.py:595: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/animate.py:601: error: Argument 1 to "r2t" has incompatible type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:82: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:121: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:155: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:499: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]")  [assignment]
spatialmath/base/transforms3d.py:501: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]")  [assignment]
spatialmath/base/transforms3d.py:501: error: Argument 1 to "getunit" has incompatible type "list[list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None]"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:505: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:507: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "roty" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "rotx" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:509: error: Argument 1 to "rotz" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | float | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:648: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]")  [assignment]
spatialmath/base/transforms3d.py:650: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]")  [assignment]
spatialmath/base/transforms3d.py:650: error: Argument 1 to "getunit" has incompatible type "list[generic | int | float | complex | str | bytes | memoryview[int] | None]"; expected "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:652: error: Argument 1 to "rotz" has incompatible type "generic | int | float | complex | str | bytes | memoryview[int] | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:652: error: Argument 1 to "roty" has incompatible type "generic | int | float | complex | str | bytes | memoryview[int] | None"; expected "float"  [arg-type]
spatialmath/base/transforms3d.py:762: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:842: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:1022: error: Argument 1 to "t2r" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:1024: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1095: error: Argument 1 to "t2r" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:1097: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1113: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms3d.py:1114: error: Incompatible types in assignment (expression has type "float", variable has type "int")  [assignment]
spatialmath/base/transforms3d.py:1184: error: Argument 1 to "t2r" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:1186: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1287: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:1292: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:1343: error: Argument 1 to "tr2rt" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:1370: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]", variable has type "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]")  [assignment]
spatialmath/base/transforms3d.py:1418: error: Overloaded function signatures 3 and 4 overlap with incompatible return types  [overload-overlap]
spatialmath/base/transforms3d.py:1544: error: Single overload definition, multiple required  [misc]
spatialmath/base/transforms3d.py:1549: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/base/transforms3d.py:1549: error: Overloaded function implementation cannot produce return type of signature 1  [misc]
spatialmath/base/transforms3d.py:2241: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2251: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2473: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/transforms3d.py:2540: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2541: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2542: error: Incompatible types in assignment (expression has type "Callable[[SupportsFloat | SupportsIndex], float]", variable has type overloaded function)  [assignment]
spatialmath/base/transforms3d.py:2773: error: Incompatible return value type (got "ndarray[Any, dtype[bool_]]", expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/base/transforms3d.py:2860: error: Argument 1 to "transl" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/base/transforms3d.py:2892: error: Incompatible types in assignment (expression has type "str", variable has type "float")  [assignment]
spatialmath/base/transforms3d.py:2894: error: Unsupported operand types for + ("float" and "str")  [operator]
spatialmath/base/transforms3d.py:2911: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:2911: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:2912: error: Skipping analyzing "mpl_toolkits.mplot3d": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/base/transforms3d.py:3219: error: Incompatible types in assignment (expression has type "tuple[float, float, float]", variable has type "ndarray[Any, dtype[Any]]")  [assignment]
spatialmath/twist.py:1822: error: Invalid conversion specifier in format string: unexpected }  [str-format]
spatialmath/spline.py:12: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:12: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:14: error: Skipping analyzing "scipy.interpolate": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:15: error: Skipping analyzing "scipy.spatial.transform": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/spline.py:65: error: Argument 1 to "tranimate" has incompatible type "list[SE3]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/spline.py:102: error: Incompatible types in assignment (expression has type "list[SE3]", variable has type "SE3")  [assignment]
spatialmath/spline.py:204: error: Incompatible types in assignment (expression has type "float", variable has type "floating[Any]")  [assignment]
spatialmath/spline.py:226: error: "None" not callable  [misc]
spatialmath/spline.py:235: error: List comprehension has incompatible type List[floating[Any]]; expected List[float]  [misc]
spatialmath/spline.py:235: error: "None" not callable  [misc]
spatialmath/spline.py:267: error: Incompatible types in assignment (expression has type "list[SE3]", variable has type "SE3")  [assignment]
spatialmath/spline.py:278: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:279: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:280: error: Argument 2 to "append" has incompatible type "None"; expected "_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]"  [arg-type]
spatialmath/spline.py:282: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[float] | None")  [assignment]
spatialmath/spline.py:283: error: Argument 1 to "append" has incompatible type "None"; expected "_SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]"  [arg-type]
spatialmath/quaternion.py:134: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/quaternion.py:134: note:      Superclass:
spatialmath/quaternion.py:134: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/quaternion.py:134: note:      Subclass:
spatialmath/quaternion.py:134: note:          @staticmethod
spatialmath/quaternion.py:134: note:          def isvalid(x: list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]) -> bool
spatialmath/quaternion.py:154: error: Item "list[float]" of "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:154: error: Item "tuple[float, ...]" of "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:179: error: Incompatible return value type (got "ndarray[Any, dtype[Any]] | Any", expected "float")  [return-value]
spatialmath/quaternion.py:181: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/quaternion.py:206: error: Incompatible return value type (got "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", expected "ndarray[tuple[Literal[3]], dtype[floating[Any]]]")  [return-value]
spatialmath/quaternion.py:235: error: Incompatible return value type (got "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]]")  [return-value]
spatialmath/quaternion.py:292: error: Argument 1 to "qmatrix" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:336: error: Argument 1 to "qnorm" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:338: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/quaternion.py:471: error: Incompatible return value type (got "list[Any]", expected "float")  [return-value]
spatialmath/quaternion.py:476: error: Argument 1 of "__eq__" is incompatible with supertype "UserList"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:476: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:476: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:476: note: It is recommended for "__eq__" to work with arbitrary objects, for example:
spatialmath/quaternion.py:476: note:     def __eq__(self, other: object) -> bool:
spatialmath/quaternion.py:476: note:         if not isinstance(other, Quaternion):
spatialmath/quaternion.py:476: note:             return NotImplemented
spatialmath/quaternion.py:476: note:         return <logic to compare two Quaternion instances>
spatialmath/quaternion.py:476: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:501: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:504: error: Argument 1 of "__ne__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:504: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:504: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:528: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:531: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:531: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:531: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:594: error: Argument 1 of "__rmul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:594: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:594: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:618: error: Return type "bool" of "__imul__" incompatible with return type "Quaternion" in supertype "UserList"  [override]
spatialmath/quaternion.py:618: error: Return type "bool" of "__imul__" incompatible with return type "Quaternion" in "__mul__" of supertype "UserList"  [override]
spatialmath/quaternion.py:619: error: Argument 1 of "__imul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:619: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:619: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:619: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:644: error: Incompatible return value type (got "Quaternion", expected "bool")  [return-value]
spatialmath/quaternion.py:698: error: Argument 1 of "__add__" is incompatible with supertype "UserList"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/quaternion.py:698: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:698: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1003: error: Argument "check" to "isrot" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/quaternion.py:1051: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/quaternion.py:1051: note:      Superclass:
spatialmath/quaternion.py:1051: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/quaternion.py:1051: note:      Subclass:
spatialmath/quaternion.py:1051: note:          @staticmethod
spatialmath/quaternion.py:1051: note:          def isvalid(x: float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]], check: bool | None = ...) -> bool
spatialmath/quaternion.py:1071: error: Item "float" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1071: error: Item "list[float]" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1071: error: Item "tuple[float, ...]" of "float | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" has no attribute "shape"  [union-attr]
spatialmath/quaternion.py:1103: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1134: error: Argument 1 to "q2v" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1162: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1164: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1192: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1194: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1222: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1224: error: Item "float" of "float | ndarray[Any, dtype[floating[Any]]]" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/quaternion.py:1287: error: Incompatible types in assignment (expression has type "list[float]", variable has type "tuple[list[float], ...]")  [assignment]
spatialmath/quaternion.py:1289: error: Argument 1 to "eul2r" has incompatible type "tuple[list[float], ...]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1289: error: Argument "unit" to "eul2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1342: error: Incompatible types in assignment (expression has type "list[float]", variable has type "tuple[list[float], ...]")  [assignment]
spatialmath/quaternion.py:1344: error: Argument 1 to "rpy2r" has incompatible type "tuple[list[float], ...]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1344: error: Argument "unit" to "rpy2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1344: error: Argument "order" to "rpy2r" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1414: error: Incompatible types in assignment (expression has type "float | ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1414: error: Argument 2 to "getunit" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:1553: error: Argument 1 to "qdot" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1570: error: Argument 1 to "qdotb" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:1573: error: Argument 1 of "__mul__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1573: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1573: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1573: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1643: error: Incompatible return value type (got "Quaternion", expected "UnitQuaternion")  [return-value]
spatialmath/quaternion.py:1670: error: Return type "UnitQuaternion" of "__imul__" incompatible with return type "bool" in supertype "Quaternion"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1671: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1671: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1671: error: Argument 1 of "__imul__" is incompatible with "__mul__" of supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/quaternion.py:1695: error: Argument 1 of "__truediv__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1695: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1695: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1754: error: Incompatible return value type (got "Quaternion", expected "UnitQuaternion")  [return-value]
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1759: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1759: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1759: note: It is recommended for "__eq__" to work with arbitrary objects, for example:
spatialmath/quaternion.py:1759: note:     def __eq__(self, other: object) -> bool:
spatialmath/quaternion.py:1759: note:         if not isinstance(other, UnitQuaternion):
spatialmath/quaternion.py:1759: note:             return NotImplemented
spatialmath/quaternion.py:1759: note:         return <logic to compare two UnitQuaternion instances>
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "UserList"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1759: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1785: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:1790: error: Argument 1 of "__ne__" is incompatible with supertype "Quaternion"; supertype defines the argument type as "Quaternion"  [override]
spatialmath/quaternion.py:1790: note: This violates the Liskov substitution principle
spatialmath/quaternion.py:1790: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/quaternion.py:1790: error: Argument 1 of "__ne__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/quaternion.py:1816: error: Incompatible return value type (got "list[Any]", expected "bool")  [return-value]
spatialmath/quaternion.py:1886: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1888: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1912: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/quaternion.py:1962: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1964: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/quaternion.py:1984: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/quaternion.py:2016: error: Argument 1 to "qqmul" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "str"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "tuple[str, str, str]"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "float"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "bool | str | tuple[str, float] | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "float | None"  [arg-type]
spatialmath/quaternion.py:2037: error: Argument 2 to "trplot" has incompatible type "*tuple[list[Any], ...]"; expected "tuple[float, float, float]"  [arg-type]
spatialmath/quaternion.py:2063: error: Argument 1 to "tranimate" has incompatible type "list[ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2065: error: Argument 1 to "q2r" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4]], dtype[floating[Any]]] | list[float] | tuple[float, float, float, float] | ndarray[tuple[Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/quaternion.py:2110: error: Argument "unit" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2110: error: Argument "order" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2112: error: Argument "unit" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2112: error: Argument "order" to "tr2rpy" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2146: error: Argument "unit" to "tr2eul" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2148: error: Argument "unit" to "tr2eul" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2174: error: Argument "unit" to "tr2angvec" has incompatible type "str | None"; expected "str"  [arg-type]
spatialmath/quaternion.py:2278: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:65: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/pose3d.py:111: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:111: note:      Superclass:
spatialmath/pose3d.py:111: note:          abstractstaticmethod[[], Any]
spatialmath/pose3d.py:111: note:      Subclass:
spatialmath/pose3d.py:111: note:          @staticmethod
spatialmath/pose3d.py:111: note:          def _identity() -> ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]
spatialmath/pose3d.py:221: error: Incompatible return value type (got "SO3", expected "Self")  [return-value]
spatialmath/pose3d.py:247: error: Name "base" is not defined  [name-defined]
spatialmath/pose3d.py:348: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:348: note:      Superclass:
spatialmath/pose3d.py:348: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/pose3d.py:348: note:      Subclass:
spatialmath/pose3d.py:348: note:          @staticmethod
spatialmath/pose3d.py:348: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/pose3d.py:702: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:702: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:703: error: Argument 1 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:703: error: Argument 2 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:710: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:710: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:711: error: Argument 1 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:711: error: Argument 2 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:718: error: Argument 1 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:718: error: Argument 2 to "orthogonalize" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:719: error: Argument 1 to "cross" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:719: error: Argument 2 to "cross" has incompatible type "str | list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | None"; expected "_SupportsArray[dtype[_UnknownType]] | _NestedSequence[_SupportsArray[dtype[_UnknownType]]] | _UnknownType | _NestedSequence[_UnknownType]"  [arg-type]
spatialmath/pose3d.py:924: error: Incompatible types in assignment (expression has type "Callable[[Any, Any], float]", variable has type "Callable[[Any, Any], floating[Any]]")  [assignment]
spatialmath/pose3d.py:924: error: Incompatible return value type (got "float", expected "floating[Any]")  [return-value]
spatialmath/pose3d.py:1032: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:1032: note:      Superclass:
spatialmath/pose3d.py:1032: note:          abstractstaticmethod[[], Any]
spatialmath/pose3d.py:1032: note:      Subclass:
spatialmath/pose3d.py:1032: note:          @staticmethod
spatialmath/pose3d.py:1032: note:          def _identity() -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1048: error: "Callable[[SO3], ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]]" has no attribute "setter"  [attr-defined]
spatialmath/pose3d.py:1053: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[slice, slice]", "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [call-overload]
spatialmath/pose3d.py:1053: note: Possible overload variants:
spatialmath/pose3d.py:1053: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1053: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1079: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, int]"  [call-overload]
spatialmath/pose3d.py:1079: note: Possible overload variants:
spatialmath/pose3d.py:1079: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1079: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1088: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[slice, int]", "ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [call-overload]
spatialmath/pose3d.py:1088: note: Possible overload variants:
spatialmath/pose3d.py:1088: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1088: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1113: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1113: note: Possible overload variants:
spatialmath/pose3d.py:1113: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1113: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1115: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1121: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1121: note: Possible overload variants:
spatialmath/pose3d.py:1121: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1121: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1146: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1146: note: Possible overload variants:
spatialmath/pose3d.py:1146: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1146: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1148: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1154: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1154: note: Possible overload variants:
spatialmath/pose3d.py:1154: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1154: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1179: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[int, int]"  [call-overload]
spatialmath/pose3d.py:1179: note: Possible overload variants:
spatialmath/pose3d.py:1179: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/pose3d.py:1179: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/pose3d.py:1181: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/pose3d.py:1187: error: No overload variant of "__setitem__" of "list" matches argument types "tuple[int, int]", "float"  [call-overload]
spatialmath/pose3d.py:1187: note: Possible overload variants:
spatialmath/pose3d.py:1187: note:     def __setitem__(self, SupportsIndex, ndarray[Any, dtype[Any]], /) -> None
spatialmath/pose3d.py:1187: note:     def __setitem__(self, slice, Iterable[ndarray[Any, dtype[Any]]], /) -> None
spatialmath/pose3d.py:1220: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1220: error: Argument 1 to "trinv" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1224: error: Missing return statement  [return]
spatialmath/pose3d.py:1291: error: Argument 1 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1293: error: Argument 1 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1293: error: Argument 2 to "tr2delta" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None"  [arg-type]
spatialmath/pose3d.py:1319: error: Incompatible return value type (got "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[6], Literal[6]], dtype[floating[Any]]]")  [return-value]
spatialmath/pose3d.py:1319: error: Argument 1 to "tr2adjoint" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1345: error: Argument 1 to "tr2jac" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1369: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/pose3d.py:1369: note:      Superclass:
spatialmath/pose3d.py:1369: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/pose3d.py:1369: note:      Subclass:
spatialmath/pose3d.py:1369: note:          @staticmethod
spatialmath/pose3d.py:1369: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/pose3d.py:1562: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1565: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1568: error: Value of type "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]] | None" is not indexable  [index]
spatialmath/pose3d.py:1576: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1576: error: Signature of "Eul" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1576: note:      Superclass:
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          @classmethod
spatialmath/pose3d.py:1576: note:          def Eul(cls, *angles: float, unit: str = ...) -> SE3
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          @classmethod
spatialmath/pose3d.py:1576: note:          def Eul(cls, *angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], unit: str = ...) -> SE3
spatialmath/pose3d.py:1576: note:      Subclass:
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          def Eul(cls, phi: float, theta: float, psi: float, unit: str = ...) -> SE3
spatialmath/pose3d.py:1576: note:          @overload
spatialmath/pose3d.py:1576: note:          def Eul(cls, angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]], unit: str = ...) -> SE3
spatialmath/pose3d.py:1584: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/pose3d.py:1584: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1626: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1626: error: Signature of "RPY" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1626: note:      Superclass:
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          @classmethod
spatialmath/pose3d.py:1626: note:          def RPY(cls, *angles: float, unit: str = ..., order: Any = ...) -> SE3
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          @classmethod
spatialmath/pose3d.py:1626: note:          def RPY(cls, *angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], unit: str = ..., order: Any = ...) -> SE3
spatialmath/pose3d.py:1626: note:      Subclass:
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          def RPY(cls, roll: float, pitch: float, yaw: float, unit: str = ...) -> SE3
spatialmath/pose3d.py:1626: note:          @overload
spatialmath/pose3d.py:1626: note:          def RPY(cls, angles: list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]], unit: str = ...) -> SE3
spatialmath/pose3d.py:1634: error: Overloaded function implementation does not accept all possible arguments of signature 1  [misc]
spatialmath/pose3d.py:1634: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1730: error: Name "unit" is not defined  [name-defined]
spatialmath/pose3d.py:1815: error: Signature of "Exp" incompatible with supertype "SO3"  [override]
spatialmath/pose3d.py:1815: note:      Superclass:
spatialmath/pose3d.py:1815: note:          @classmethod
spatialmath/pose3d.py:1815: note:          def Exp(cls, S: ndarray[tuple[Literal[3]], dtype[floating[Any]]] | ndarray[Any, dtype[Any]], check: bool = ..., so3: bool = ...) -> SE3
spatialmath/pose3d.py:1815: note:      Subclass:
spatialmath/pose3d.py:1815: note:          @classmethod
spatialmath/pose3d.py:1815: note:          def Exp(cls, S: ndarray[tuple[Literal[6]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]], check: bool = ...) -> SE3
spatialmath/pose3d.py:1834: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1834: error: Argument 1 to "trexp" has incompatible type "ndarray[tuple[Literal[6]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "SE3" has incompatible type "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "trnorm" has incompatible type "ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1854: error: Argument 1 to "delta2tr" has incompatible type "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[6]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:1856: error: Overload does not consistently use the "@classmethod" decorator on all function signatures.  [misc]
spatialmath/pose3d.py:1864: error: Overloaded function implementation does not accept all possible arguments of signature 2  [misc]
spatialmath/pose3d.py:1992: error: Incompatible types in assignment (expression has type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", variable has type "SO3 | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]")  [assignment]
spatialmath/pose3d.py:2000: error: Argument 1 to "rt2tr" has incompatible type "SO3 | ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:2000: error: Argument 2 to "rt2tr" has incompatible type "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[_64Bit]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"; expected "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/pose3d.py:2023: error: Argument 1 of "angdist" is incompatible with supertype "SO3"; supertype defines the argument type as "SO3"  [override]
spatialmath/pose3d.py:2023: note: This violates the Liskov substitution principle
spatialmath/pose3d.py:2023: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/pose3d.py:2080: error: Incompatible types in assignment (expression has type "Callable[[Any, Any], float]", variable has type "Callable[[Any, Any], floating[Any]]")  [assignment]
spatialmath/pose3d.py:2080: error: Incompatible return value type (got "float", expected "floating[Any]")  [return-value]
spatialmath/pose3d.py:2088: error: Incompatible return value type (got "ndarray[Any, dtype[Any]]", expected "float")  [return-value]
spatialmath/geom3d.py:9: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom3d.py:9: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom3d.py:223: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:226: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:227: error: Value of type "float | Any | list[float] | tuple[float, ...] | ndarray[Any, dtype[floating[Any]]]" is not indexable  [index]
spatialmath/geom3d.py:328: error: Signature of "_identity" incompatible with supertype "BasePoseList"  [override]
spatialmath/geom3d.py:328: note:      Superclass:
spatialmath/geom3d.py:328: note:          abstractstaticmethod[[], Any]
spatialmath/geom3d.py:328: note:      Subclass:
spatialmath/geom3d.py:328: note:          @staticmethod
spatialmath/geom3d.py:328: note:          def _identity() -> ndarray[tuple[Literal[6]], dtype[floating[Any]]]
spatialmath/geom3d.py:332: error: Signature of "isvalid" incompatible with supertype "BasePoseList"  [override]
spatialmath/geom3d.py:332: note:      Superclass:
spatialmath/geom3d.py:332: note:          abstractstaticmethod[[Any, Any], Any]
spatialmath/geom3d.py:332: note:      Subclass:
spatialmath/geom3d.py:332: note:          @staticmethod
spatialmath/geom3d.py:332: note:          def isvalid(x: ndarray[Any, dtype[Any]], check: bool = ...) -> bool
spatialmath/geom3d.py:420: error: Argument 1 of "append" is incompatible with supertype "BasePoseList"; supertype defines the argument type as "BasePoseList"  [override]
spatialmath/geom3d.py:420: note: This violates the Liskov substitution principle
spatialmath/geom3d.py:420: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/geom3d.py:436: error: Argument 1 to "append" of "BasePoseList" has incompatible type "ndarray[tuple[Literal[6]], dtype[floating[Any]]]"; expected "BasePoseList"  [arg-type]
spatialmath/geom3d.py:444: error: Incompatible return value type (got "list[Any]", expected "ndarray[tuple[Literal[6]], dtype[floating[Any]]]")  [return-value]
spatialmath/geom3d.py:850: error: Name "dot" is not defined  [name-defined]
spatialmath/geom3d.py:988: error: Incompatible return value type (got "tuple[ndarray[Any, dtype[Any]], floating[Any]]", expected "tuple[ndarray[tuple[Literal[3]], dtype[floating[Any]]], float]")  [return-value]
spatialmath/geom3d.py:1008: error: Incompatible return value type (got "None", expected "Line3")  [return-value]
spatialmath/geom3d.py:1020: error: Return type "float" of "__mul__" incompatible with return type "Line3" in supertype "UserList"  [override]
spatialmath/geom3d.py:1021: error: Argument 1 of "__mul__" is incompatible with supertype "UserList"; supertype defines the argument type as "int"  [override]
spatialmath/geom3d.py:1021: note: This violates the Liskov substitution principle
spatialmath/geom3d.py:1021: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/geom3d.py:1049: error: Name "SE3" is not defined  [name-defined]
spatialmath/geom3d.py:1123: error: Too many arguments for "tuple"  [call-arg]
spatialmath/geom3d.py:1125: error: Incompatible return value type (got "None", expected "tuple[ndarray[tuple[Literal[3]], dtype[floating[Any]]], float]")  [return-value]
spatialmath/geom3d.py:1155: error: Item "list[float]" of "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]" has no attribute "reshape"  [union-attr]
spatialmath/geom3d.py:1155: error: Item "tuple[float, ...]" of "list[float] | tuple[float, float, float, float, float, float] | ndarray[tuple[Literal[6]], dtype[floating[Any]]]" has no attribute "reshape"  [union-attr]
spatialmath/geom3d.py:1172: error: Incompatible types in assignment (expression has type "float | Any", target has type "int")  [assignment]
spatialmath/geom3d.py:1173: error: Argument "p" to "PointNormal" of "Plane3" has incompatible type "list[int]"; expected "list[float] | tuple[float, float, float] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/geom3d.py:1173: note: "List" is invariant -- see https://mypy.readthedocs.io/en/stable/common_issues.html#variance
spatialmath/geom3d.py:1173: note: Consider using "Sequence" instead, which is covariant
spatialmath/geom3d.py:1177: error: Incompatible types in assignment (expression has type "ndarray[tuple[Literal[3]], dtype[floating[Any]]]", variable has type "list[int]")  [assignment]
spatialmath/geom3d.py:1198: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "list[int]")  [assignment]
spatialmath/geom3d.py:1200: error: Too many arguments for "tuple"  [call-arg]
spatialmath/geom2d.py:12: error: Skipping analyzing "matplotlib.pyplot": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:12: error: Skipping analyzing "matplotlib": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:13: error: Skipping analyzing "matplotlib.path": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:14: error: Skipping analyzing "matplotlib.patches": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:15: error: Skipping analyzing "matplotlib.transforms": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/geom2d.py:636: error: Incompatible return value type (got "Polygon2", expected "Self")  [return-value]
spatialmath/geom2d.py:731: error: Argument 1 to "__call__" of "_UFunc_Nin1_Nout1" has incompatible type "float | None"; expected "int | float | complex | str | bytes | generic"  [arg-type]
spatialmath/geom2d.py:799: error: No overload variant of "__matmul__" of "ndarray" matches argument type "None"  [operator]
spatialmath/geom2d.py:799: note: Possible overload variants:
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any]]]] | bool | int | float | _NestedSequence[bool | int | float], /) -> ndarray[Any, dtype[floating[Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | integer[Any] | floating[Any] | complexfloating[Any, Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[complexfloating[Any, Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[bool_ | number[Any]]] | _NestedSequence[_SupportsArray[dtype[bool_ | number[Any]]]] | bool | int | float | complex | _NestedSequence[bool | int | float | complex], /) -> ndarray[Any, dtype[number[Any]]]
spatialmath/geom2d.py:799: note:     def __matmul__(self, _SupportsArray[dtype[object_]] | _NestedSequence[_SupportsArray[dtype[object_]]], /) -> Any
spatialmath/geom2d.py:799: note: Both left and right operands are unions
spatialmath/geom2d.py:925: error: Incompatible return value type (got "list[float] | tuple[float, float] | ndarray[tuple[Literal[2]], dtype[floating[Any]]]", expected "ndarray[tuple[Literal[2]], dtype[floating[Any]]]")  [return-value]
spatialmath/geom2d.py:1066: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:26: error: Skipping analyzing "colored": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/baseposematrix.py:38: error: Skipping analyzing "ansitable": module is installed, but missing library stubs or py.typed marker  [import-untyped]
spatialmath/baseposematrix.py:304: error: Missing return statement  [return]
spatialmath/baseposematrix.py:327: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, slice]"  [call-overload]
spatialmath/baseposematrix.py:327: note: Possible overload variants:
spatialmath/baseposematrix.py:327: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/baseposematrix.py:327: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/baseposematrix.py:329: error: Incompatible return value type (got "list[Any]", expected "tuple[float, ndarray[tuple[Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]]")  [return-value]
spatialmath/baseposematrix.py:332: error: No overload variant of "__getitem__" of "list" matches argument type "tuple[slice, slice]"  [call-overload]
spatialmath/baseposematrix.py:332: note: Possible overload variants:
spatialmath/baseposematrix.py:332: note:     def __getitem__(self, SupportsIndex, /) -> ndarray[Any, dtype[Any]]
spatialmath/baseposematrix.py:332: note:     def __getitem__(self, slice, /) -> list[ndarray[Any, dtype[Any]]]
spatialmath/baseposematrix.py:334: error: Incompatible return value type (got "list[Any]", expected "tuple[float, ndarray[tuple[Literal[2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3]], dtype[floating[Any]]]]")  [return-value]
spatialmath/baseposematrix.py:372: error: Argument "twist" to "trlog2" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/baseposematrix.py:374: error: List comprehension has incompatible type List[ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]]; expected List[ndarray[tuple[Literal[2]], dtype[floating[Any]]]]  [misc]
spatialmath/baseposematrix.py:374: error: Argument "twist" to "trlog" has incompatible type "bool | None"; expected "bool"  [arg-type]
spatialmath/baseposematrix.py:380: error: Missing return statement  [return]
spatialmath/baseposematrix.py:380: error: Incompatible default for argument "s" (default has type "None", argument has type "int | float")  [assignment]
spatialmath/baseposematrix.py:380: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/baseposematrix.py:380: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/baseposematrix.py:421: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[floating[Any]]]", variable has type "int | float")  [assignment]
spatialmath/baseposematrix.py:423: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "int | float")  [assignment]
spatialmath/baseposematrix.py:430: error: Argument 1 to "len" has incompatible type "bool"; expected "Sized"  [arg-type]
spatialmath/baseposematrix.py:432: error: "bool" has no attribute "A"  [attr-defined]
spatialmath/baseposematrix.py:437: error: No overload variant of "trinterp2" matches argument types "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", "bool | None", "Any", "bool"  [call-overload]
spatialmath/baseposematrix.py:437: note: Possible overload variants:
spatialmath/baseposematrix.py:437: note:     def trinterp2(start: ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:437: note:     def trinterp2(start: ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:437: error: Item "int" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:437: error: Item "float" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:443: error: No overload variant of "trinterp" matches argument types "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]", "bool | None", "Any", "bool"  [call-overload]
spatialmath/baseposematrix.py:443: note: Possible overload variants:
spatialmath/baseposematrix.py:443: note:     def trinterp(start: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:443: note:     def trinterp(start: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]] | None, end: ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]], s: float, shortest: bool = ...) -> ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]
spatialmath/baseposematrix.py:443: error: Item "int" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:443: error: Item "float" of "int | float" has no attribute "__iter__" (not iterable)  [union-attr]
spatialmath/baseposematrix.py:446: error: Missing return statement  [return]
spatialmath/baseposematrix.py:446: error: Incompatible default for argument "s" (default has type "None", argument has type "float")  [assignment]
spatialmath/baseposematrix.py:446: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/baseposematrix.py:446: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/baseposematrix.py:497: error: Incompatible types in assignment (expression has type "ndarray[Any, dtype[Any]]", variable has type "float")  [assignment]
spatialmath/baseposematrix.py:502: error: Argument 1 to "len" has incompatible type "float"; expected "Sized"  [arg-type]
spatialmath/baseposematrix.py:504: error: Name "start" is not defined  [name-defined]
spatialmath/baseposematrix.py:504: error: Argument 2 to "trinterp2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:504: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/baseposematrix.py:507: error: Name "start" is not defined  [name-defined]
spatialmath/baseposematrix.py:507: error: Value of type "float" is not indexable  [index]
spatialmath/baseposematrix.py:511: error: Argument 1 to "len" has incompatible type "float"; expected "Sized"  [arg-type]
spatialmath/baseposematrix.py:513: error: Argument 2 to "trinterp" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:513: error: "float" has no attribute "__iter__"; maybe "__int__"? (not iterable)  [attr-defined]
spatialmath/baseposematrix.py:516: error: Value of type "float" is not indexable  [index]
spatialmath/baseposematrix.py:623: error: Item "list[ndarray[Any, dtype[Any]]]" of "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]" has no attribute "T"  [union-attr]
spatialmath/baseposematrix.py:625: error: "BasePoseMatrix" has no attribute "inv"  [attr-defined]
spatialmath/baseposematrix.py:775: error: "trprint2" gets multiple values for keyword argument "file"  [misc]
spatialmath/baseposematrix.py:775: error: Argument "file" to "trprint2" has incompatible type "bool"; expected "TextIO"  [arg-type]
spatialmath/baseposematrix.py:778: error: "trprint" gets multiple values for keyword argument "file"  [misc]
spatialmath/baseposematrix.py:778: error: Argument "file" to "trprint" has incompatible type "bool"; expected "TextIO"  [arg-type]
spatialmath/baseposematrix.py:902: error: Incompatible redefinition (redefinition with type "Callable[[Any, Any], Any]", original type "bool | None")  [misc]
spatialmath/baseposematrix.py:908: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:908: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:909: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:910: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:910: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:911: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:911: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:912: error: "bool" not callable  [operator]
spatialmath/baseposematrix.py:912: error: "None" not callable  [misc]
spatialmath/baseposematrix.py:1000: error: Argument 1 to "trplot2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1002: error: Argument 1 to "trplot" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1033: error: Argument 1 to "tranimate2" has incompatible type "list[Any]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1035: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:1035: error: Argument 1 to "tranimate" has incompatible type "list[Any]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1039: error: Argument 1 to "tranimate2" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[2, 2]], dtype[floating[Any]]] | ndarray[tuple[Literal[3, 3]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1041: error: No return value expected  [return-value]
spatialmath/baseposematrix.py:1041: error: Argument 1 to "tranimate" has incompatible type "list[ndarray[Any, dtype[Any]]] | ndarray[Any, dtype[Any]]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]] | ndarray[tuple[Literal[4], Literal[4]], dtype[floating[Any]]]"  [arg-type]
spatialmath/baseposematrix.py:1558: error: Signatures of "__isub__" and "__sub__" are incompatible  [misc]
spatialmath/baseposematrix.py:1575: error: Argument 1 of "__eq__" is incompatible with supertype "UserList"; supertype defines the argument type as "object"  [override]
spatialmath/baseposematrix.py:1575: note: This violates the Liskov substitution principle
spatialmath/baseposematrix.py:1575: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposematrix.py:1575: note: It is recommended for "__eq__" to work with arbitrary objects, for example:
spatialmath/baseposematrix.py:1575: note:     def __eq__(self, other: object) -> bool:
spatialmath/baseposematrix.py:1575: note:         if not isinstance(other, BasePoseMatrix):
spatialmath/baseposematrix.py:1575: note:             return NotImplemented
spatialmath/baseposematrix.py:1575: note:         return <logic to compare two BasePoseMatrix instances>
spatialmath/baseposematrix.py:1575: error: Argument 1 of "__eq__" is incompatible with supertype "object"; supertype defines the argument type as "object"  [override]
spatialmath/baseposelist.py:78: error: Method must have at least one argument. Did you forget the "self" argument?  [misc]
spatialmath/baseposelist.py:102: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:136: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:137: error: Argument 1 to "range" has incompatible type "int | None"; expected "SupportsIndex"  [arg-type]
spatialmath/baseposelist.py:289: error: Signature of "__getitem__" incompatible with supertype "UserList"  [override]
spatialmath/baseposelist.py:289: note:      Superclass:
spatialmath/baseposelist.py:289: note:          @overload
spatialmath/baseposelist.py:289: note:          def __getitem__(self, SupportsIndex, /) -> Any
spatialmath/baseposelist.py:289: note:          @overload
spatialmath/baseposelist.py:289: note:          def __getitem__(self, slice, /) -> BasePoseList
spatialmath/baseposelist.py:289: note:      Subclass:
spatialmath/baseposelist.py:289: note:          def __getitem__(self, int | slice, /) -> BasePoseList
spatialmath/baseposelist.py:326: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:330: error: No overload variant of "BasePoseList" matches argument types "Any", "bool"  [call-overload]
spatialmath/baseposelist.py:330: note: Possible overload variants:
spatialmath/baseposelist.py:330: note:     def BasePoseList(self, initlist: None = ...) -> BasePoseList
spatialmath/baseposelist.py:330: note:     def BasePoseList(self, initlist: Iterable[Any]) -> BasePoseList
spatialmath/baseposelist.py:335: error: Signature of "__setitem__" incompatible with supertype "UserList"  [override]
spatialmath/baseposelist.py:335: note:      Superclass:
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, SupportsIndex, Any, /) -> None
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, slice, Iterable[Any], /) -> None
spatialmath/baseposelist.py:335: note:      Subclass:
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, BasePoseList, /) -> None
spatialmath/baseposelist.py:335: error: Signature of "__setitem__" incompatible with supertype "MutableSequence"  [override]
spatialmath/baseposelist.py:335: note:      Superclass:
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, Any, /) -> None
spatialmath/baseposelist.py:335: note:          @overload
spatialmath/baseposelist.py:335: note:          def __setitem__(self, slice, Iterable[Any], /) -> None
spatialmath/baseposelist.py:335: note:      Subclass:
spatialmath/baseposelist.py:335: note:          def __setitem__(self, int, BasePoseList, /) -> None
spatialmath/baseposelist.py:365: error: Return type "type[Exception]" of "__lt__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:365: error: Argument 1 of "__lt__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:365: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:365: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:368: error: Return type "type[Exception]" of "__le__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:368: error: Argument 1 of "__le__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:368: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:368: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:371: error: Return type "type[Exception]" of "__gt__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:371: error: Argument 1 of "__gt__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:371: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:371: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:374: error: Return type "type[Exception]" of "__ge__" incompatible with return type "bool" in supertype "UserList"  [override]
spatialmath/baseposelist.py:374: error: Argument 1 of "__ge__" is incompatible with supertype "UserList"; supertype defines the argument type as "list[Any] | UserList[Any]"  [override]
spatialmath/baseposelist.py:374: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:374: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:405: error: Argument 1 of "extend" is incompatible with supertype "UserList"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/baseposelist.py:405: note: This violates the Liskov substitution principle
spatialmath/baseposelist.py:405: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
spatialmath/baseposelist.py:405: error: Argument 1 of "extend" is incompatible with supertype "MutableSequence"; supertype defines the argument type as "Iterable[Any]"  [override]
spatialmath/baseposelist.py:495: error: Cannot instantiate abstract class "BasePoseList" with abstract attribute "shape"  [abstract]
spatialmath/baseposelist.py:495: error: Argument 1 to "pop" of "UserList" has incompatible type "int | None"; expected "int"  [arg-type]
spatialmath/baseposelist.py:673: error: List item 0 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:673: error: List item 1 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:673: error: List item 2 has incompatible type "list[int]"; expected "ndarray[tuple[Literal[3], Literal[3]], dtype[floating[Any]]]"  [list-item]
spatialmath/baseposelist.py:676: error: Incompatible types in assignment (expression has type "SO2", variable has type "SO3")  [assignment]
spatialmath/DualQuaternion.py:33: error: Incompatible default for argument "real" (default has type "None", argument has type "Quaternion")  [assignment]
spatialmath/DualQuaternion.py:33: note: PEP 484 prohibits implicit Optional. Accordingly, mypy has changed its default to no_implicit_optional=True
spatialmath/DualQuaternion.py:33: note: Use https://github.com/hauntsaninja/no_implicit_optional to automatically upgrade your codebase
spatialmath/DualQuaternion.py:33: error: Incompatible default for argument "dual" (default has type "None", argument has type "Quaternion")  [assignment]
spatialmath/DualQuaternion.py:70: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:71: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:98: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:98: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:118: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:119: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:119: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:141: error: Incompatible return value type (got "DualQuaternion", expected "Self")  [return-value]
spatialmath/DualQuaternion.py:141: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:141: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:160: error: Incompatible return value type (got "DualQuaternion", expected "Self")  [return-value]
spatialmath/DualQuaternion.py:160: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:160: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:179: error: Incompatible return value type (got "DualQuaternion", expected "Self")  [return-value]
spatialmath/DualQuaternion.py:179: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:179: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:200: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:201: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:201: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:206: error: No overload variant of "UnitDualQuaternion" matches argument types "Any", "Any"  [call-overload]
spatialmath/DualQuaternion.py:206: note: Possible overload variant:
spatialmath/DualQuaternion.py:206: note:     def __init__(self, T: SE3) -> UnitDualQuaternion
spatialmath/DualQuaternion.py:208: error: Incompatible return value type (got "DualQuaternion", expected "Self")  [return-value]
spatialmath/DualQuaternion.py:235: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:235: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:254: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:254: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:273: error: Single overload definition, multiple required  [misc]
spatialmath/DualQuaternion.py:277: error: The implementation for an overloaded function must come last  [misc]
spatialmath/DualQuaternion.py:348: error: Cannot determine type of "real"  [has-type]
spatialmath/DualQuaternion.py:349: error: Cannot determine type of "dual"  [has-type]
spatialmath/DualQuaternion.py:349: error: Cannot determine type of "real"  [has-type]
Found 533 errors in 19 files (checked 28 source files)

Note that the errors come from 2 fewer files, since it is now skipping _types_35.py and _types_311.py (I'm running 3.10).

@jbarnett-bdai
Copy link
Contributor Author

Addressing

spatialmath/base/argcheck.py:291: error: Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:301: error: Overloaded function signature 3 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 1's parameter type(s) are the same or broader  [overload-cannot-match]
spatialmath/base/argcheck.py:311: error: Overloaded function signature 4 will never be matched: signature 2's parameter type(s) are the same or broader  [overload-cannot-match]

This can be addressed with typing.Literal.

@jbarnett-bdai
Copy link
Contributor Author

Various imports don't have types or stubs available; # type: ignore is an appropriate solution for these (until stubs are available).

@petercorke
Copy link
Collaborator

I'd love to have more complete type hinting, but the endless changes in type hinting syntax is a big disincentive. From py3.10 things settle down pretty nicely and we have builtin generic type hints and the | operator instead of Union[]. Do we just wait for 3.9 to reach EOL (October this year)? There's also from __future__ import annotations which I don't fully understand.

I've not used mypy, I use PyLance in Visual Studio which is quite picky but not unhappy with the type hints that we do have. I'm wondering if mypy isn't tripping over something that's legal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants