python / python/cpython

dis.cmp_op doc is inaccurate in Python 3.12.2 and 3.13.0a5

Abierto
#117,270 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

3.12 docs type-bug
Lenguaje dominante
Python
Estrellas
77.2k
Forks
36k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

Bug report

Bug description:

From https://docs.python.org/3.12/library/dis.html#opcode-COMPARE_OP,
dis.cmp_op should be able lookup the comparison operation string from the opcode's argument.
However, in Python 3.12.2 and 3.13.0a5, this fails with "IndexError: tuple index out of range"

import dis

def my_fun(a, b):
    return a <= b

for instruction in dis.get_instructions(my_fun):
    if instruction.opname == 'COMPARE_OP':
        print(dis.cmp_op[instruction.arg])

In Python 3.11.8, it prints "<=" as expected.

dis.dis output of my_fun in Python 3.12.2:

  1           0 RESUME                   0

  2           2 LOAD_FAST                0 (a)
              4 LOAD_FAST                1 (b)
              6 COMPARE_OP              26 (<=)
             10 RETURN_VALUE

dis.cmp_op in Python 3.12.2:

('<', '<=', '==', '!=', '>', '>=')

Workaround: use instruction.argrepr.

CPython versions tested on:

3.12, 3.13

Operating systems tested on:

Linux

Linked PRs
  • gh-117272
  • gh-117274

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.

Línea de trabajo

Comienza con la documentación de dis.cmp_op y el ejemplo de dis.get_instructions() reportado; después, compara el comportamiento de Python 3.12 y 3.13 con Python 3.11. Revisa los PR enlazados gh-117272 y gh-117274 para conocer la dirección actual; se considera terminado cuando la documentación explica correctamente la búsqueda de la operación de comparación y la solución alternativa disponible.

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

Evaluación

Stack tecnológico
python
Área
documentation
Tipo de issue
Documentación
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.