Spell out where views are allowed
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- python, pytorch
- Área
- documentation
Línea de trabajo
Comienza por la sección enlazada sobre copias, vistas y mutación, y revisa el PR 298 de array_api_compat, especialmente el ejemplo de sum. Compara las funciones indicadas que producen vistas con las otras operaciones planteadas en el issue y documenta un alcance explícito y acordado para determinar cuándo se permiten las vistas; se considerará terminado cuando el estándar resuelva claramente estos casos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In https://data-apis.org/array-api/latest/design_topics/copies_views_and_mutation.html, the Standard says
Array API consumers are strongly advised to avoid any mutating operations when an array object may [...] be a “view” [...] It is not always clear, however, when a library will return a view and when it will return a copy. This standard does not attempt to specify this—libraries may do either.
The above is fine after __getitem__ , asarray(..., copy=None), astype(..., copy=False), and similar functions that are explicitly explained by the standard to potentially return views.
However, there are a few corner cases where views could be possible but a normal user is very unlikely to think about them.
I just stumbled on one in https://github.com/data-apis/array-api-compat/pull/298, where array_api_compat.torch.sum(x, dtype=x.dtype, axis=()) was accidentally returning x instead of a copy of it.
There are a few more cases where a library could try to be smart; for example
- search functions (
min,max, other?) could return a view to the minimum/maximum point - replacement functions (
minimum,maximum,clip,where) could return one of the input arrays when there is nothing to do - same for arithmetic functions (
__add__/__sub__vs. 0,__mul__/__div__vs. 1, etc.) - same for sort functions when they realise the input is already sorted
- possibly more
In real life, I expect end users to assume that the above functions will always return a copy.
I think the standard should spell this out, limiting the possibily of views to an explicit list of allowed functions:
__getitem__asarrayastype__dlpack__from_dlpackreshapebroacast_tobroadcast_arrays- ...more?
- Lenguaje dominante
- Python
- Estrellas
- 131
- Forks
- 49
- Merge medio
- 2 d 8 h
- PR fusionados (30 d)
- 6
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de data-apis/array-api-compat
-
blocked by upstream
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
data-apis/array-api-compat#439 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
data-apis/array-api-compat#395 · 2 comentarios ·
-
Release 1.16 Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
data-apis/array-api-compat#476 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
data-apis/array-api-compat#473 · 4 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
data-apis/array-api-compat#465 · 3 comentarios ·
Todos los issues de data-apis/array-api-compat
Issues similares
-
documentation help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
simonw/sqlite-utils#872 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100