MLX compatibility: Manipulation functions

Abierto
#462 11 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python
Área
data

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

Abrir la guía de contribución

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 data-apis/array-api-compat

Todos los issues de data-apis/array-api-compat

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.