[rasterio] numpy arrays in transform.xy, a crs of None, and read(masked=True)

Abierto
#16,504 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@omkhpb25 ya está trabajando en esto.

Desde el 21/10/2026.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
numpy, python
Área
tooling

Línea de trabajo

The three problems are in the rasterio stubs bundled in typeshed: rasterio.transform.xy (the rows/cols parameters and return type), DatasetBase.crs, and DatasetReaderBase.read (the return type when masked=True). Reproduce each case with the snippets in the issue, then compare against the current stub signatures. Done means the stubs accept numpy arrays, allow crs to be None, and return a masked array type when masked=True, with the repository's stub tests passing. The issue asks for maintainer approval before a pull request, so confirm that first.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Researched and drafted by Claude (Anthropic's AI model, in Claude Code), which also ran the measurements below; reviewed by @bjlittle before posting.

Type checking geovista against types-rasterio 1.5.2.20261005 turned up three places where the rasterio stubs are narrower than rasterio 1.5.2 at runtime.

  1. rasterio.transform.xy types rows and cols as int | Sequence[int], and its result as tuple[float, float] | tuple[list[float], list[float]]. rasterio takes numpy arrays, and gives arrays back for them:

    import numpy as np
    from rasterio.transform import from_origin, xy
    
    transform = from_origin(10.0, 20.0, 1.0, 1.0)
    rows, cols = np.meshgrid(np.arange(2), np.arange(3), indexing="ij")
    xs, ys = xy(transform, rows.flatten(), cols.flatten())
    type(xs)  # <class 'numpy.ndarray'>
    

    An ndarray is not a Sequence, so a caller passing one needs a cast.

  2. DatasetBase.crs is typed CRS, but a GeoTIFF without a CRS gives None.

  3. DatasetReaderBase.read is typed to return NDArray[Any] whatever masked is, but with masked=True it returns a numpy.ma.MaskedArray, so using its mask doesn't type check.

If any of these would be welcome as a pull request, Claude can prepare one the same way, for @bjlittle to review before it is opened.

🤖 Generated with Claude Code

Lenguaje dominante
Python
Estrellas
5.1k
Forks
2.1k
Merge medio
2 d 7 min
PR fusionados (30 d)
116

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de python/typeshed

Todos los issues de python/typeshed

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.