MLX compatibility: Manipulation functions
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Empieza ejecutando las pruebas de compatibilidad indicadas: test_broadcast_arrays, test_moveaxis, test_unstack y las pruebas de expand_dims, repeat, reshape y roll. Lee las implementaciones y las expectativas de las pruebas para cada caso fallido o parcial. Se considera terminado cuando el comportamiento de compatibilidad de MLX coincide con los requisitos de la Array API indicados en la tabla, incluidos los retornos en forma de tupla, los ejes en forma de tupla, las entradas repeat aceptadas, el manejo de copias y los argumentos que solo pueden pasarse por nombre.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
| Array API | MLX Analog | Status | Notes | Test Node | Result |
|---|---|---|---|---|---|
| broadcast_arrays(*arrays) | broadcast_arrays(*arrays, stream=None) -> list[array] | incompatible | Array API 2025.12 requires a tuple of arrays; MLX returns a list. | test_broadcast_arrays | Failed |
| broadcast_shapes(*shapes) | broadcast_shapes(*shapes) | compatible | MLX returns the expected broadcasted shape. | TestBroadcastShapes::test_broadcast_shapes | Passed |
| broadcast_to(x, /, shape) | broadcast_to(array, shape, *, stream=None) | compatible | Required broadcasting behavior passes. MLX adds the optional stream extension. |
test_broadcast_to | Passed |
| concat(arrays, /, *, axis=0) | concat(arrays: list[array], axis: int | None = 0, *, stream=None) | compatible | Required behavior passes. MLX additionally accepts axis=None, positional axis, and stream. |
test_concat | Passed |
| expand_dims(x, /, axis) | expand_dims(a, /, axis: int | Sequence[int], *, stream=None) | partial | Tuple-axis coverage passes, but MLX incorrectly rejects a valid negative insertion axis at the lower boundary. | TestExpandDims::test_expand_dims; TestExpandDims::test_expand_dims_tuples | Failed / Passed |
| flip(x, /, *, axis=None) | flip(a, /, axis: None | int | Sequence[int] = None, *, stream=None) | compatible | Passes for None, integer, and tuple axes. MLX additionally permits positional axis. |
test_flip | Passed |
| moveaxis(x, source, destination, /) | moveaxis(a, /, source: int, destination: int, *, stream=None) | incompatible | Array API accepts integers or tuples for source and destination; MLX accepts only scalar integers and rejects valid calls such as moveaxis(x, (), ()). |
test_moveaxis | Failed |
| permute_dims(x, /, axes) | permute_dims(a, /, axes: Sequence[int] | None = None, *, stream=None) | compatible | Required axis permutation behavior passes. MLX additionally permits omitted or None axes. |
test_permute_dims | Passed |
| repeat(x, repeats, /, *, axis=None) | repeat(array: array, repeats: int, axis: int | None = None, *, stream=None) | partial | Array API allows scalar or 1D integer-array repeats, while MLX documents only scalar integers. |
test_repeat | Failed |
| reshape(x, /, shape, *, copy=None) | reshape(a, /, shape: Sequence[int], *, stream=None) | partial | Tested behavior passes, but MLX lacks the standard copy keyword and therefore cannot accept all conforming calls. |
test_reshape | Passed |
| roll(x, /, shift, *, axis=None) | roll(a, shift: int | tuple[int], axis: None | int | tuple[int] = None, /, *, stream=None) | partial | Tested behavior passes, but MLX makes shift and axis positional-only. Array API permits keyword shift and requires axis to be keyword-only. |
test_roll | Passed |
| squeeze(x, /, axis) | squeeze(a, /, axis: None | int | Sequence[int] = None, *, stream=None) | compatible | Integer and tuple-axis behavior passes. MLX additionally allows omitted or None axes. |
test_squeeze | Passed |
| stack(arrays, /, *, axis=0) | stack(arrays: list[array], axis: int | None = 0, *, stream=None) | compatible | Required behavior passes. MLX additionally accepts positional axis, axis=None, and stream. |
test_stack | Passed |
| tile(x, repetitions, /) | tile(a, reps: int | Sequence[int], /, *, stream=None) | compatible | Required tiling behavior passes. The parameter-name difference is irrelevant because it is positional-only. | test_tile | Passed |
| unstack(x, /, *, axis=0) | unstack(x, /, *, axis: int = 0, stream=None) -> list[array] | incompatible | Array API requires a tuple of arrays; MLX returns a list, including [] instead of () for an empty axis. |
test_unstack | Failed |
- 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