dis.cmp_op doc is inaccurate in Python 3.12.2 and 3.13.0a5
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
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
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece pela documentação de dis.cmp_op e pelo exemplo relatado de dis.get_instructions(); em seguida, compare o comportamento do Python 3.12 e 3.13 com o do Python 3.11. Revise os PRs vinculados gh-117272 e gh-117274 para conhecer a direção atual; considera-se concluído quando a documentação explicar com precisão a busca da operação de comparação e a solução alternativa disponível.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- documentation
- Tipo de issue
- Documentação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 25/100