Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

getmatrix() rejects a list of lists; revisit the base.X matrix/vector converters

Aberta
#255 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
numpy, python
Domínio
tooling

Direção de pesquisa

Start with getmatrix and getvector in the spatialmath base package, plus isvector and ismatrix, and run the three examples in the issue to reproduce the TypeError and the flat-list reshape. Check spatialmath/base/types.py for Points2 and Points3. The issue leaves open whether the flat-list reshape is intended and whether the type aliases should widen, so settle those with a maintainer before changing code. Done means nested lists and tuples are converted and shape-checked, with tests for the existing converters.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

getmatrix() (and getvector()) reject the most natural way to write a set of points: a list of lists. Found while adding type hints to RTB, where a 2xN path of waypoints is passed to a function.

from spatialmath.base import getmatrix
getmatrix([[0, 1, 2], [0, 1, 0]], (2, None))   # TypeError: argument must be scalar or ndarray
getmatrix([[0, 0], [1, 1], [2, 0]], (2, None))  # TypeError
getmatrix(np.zeros((2, 5)), (2, None))          # OK, (2, 5)

Two related problems:

  1. Nested lists and tuples are rejected. The function accepts a scalar, a 1D array-like or an ndarray, but not a list of rows. I would expect it to convert these with np.asarray and then check the shape against shape, raising ValueError on mismatch.
  2. A flat list is silently reshaped. getmatrix([0, 1, 2, 3], (2, None)) returns a (2, 2) array. That is convenient for (2,2) but can hide a mistake when the caller meant a path of 2 points or a different layout.

Also, Points2 and Points3 in spatialmath.base.types are plain NDArray, so the type hint says "ndarray only" while the docstrings in callers say "array_like".

Suggested direction:

  • Make getmatrix (and the other base.X... converters) accept array-likes of any nesting and validate the shape, so callers can replace hand-written np.asarray(...) plus ndim/shape checks with one call.
  • Decide whether the flat-list reshape is intended, and document it if so.
  • Consider whether Points2/Points3 should widen to accept sequences.

I'll revisit the base.getvector/getmatrix/isvector/ismatrix family together, since the same question applies to all of them.

Linguagem predominante
Python
Estrelas
648
Forks
108
Merge médio
9d 19h
PRs com merge (30d)
9

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rai-opensource/spatialmath-python

Todas as issues de rai-opensource/spatialmath-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.