Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Error of "if if else" expr sequence

Abierto
#351 2 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
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python

Línea de trabajo

Reproduce the issue from test.py by compiling it with Python 3.8.5 or 3.6.9, then run uncompyle6 test.pyc > test_dec.py and compare the control-flow output with the original. The work is done when separate if statements with a following else decompile without changing their behavior.

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

Descripción

Control Flow Works on decompyle3

Description

Error of "if if else" expr sequence

How to Reproduce

here is the source code test.py:

a = 1
b = 1
if a:
    print("a")
if b:
    print("b")
else:
    print("else")

then compile it with:

python3 -m compileall -b test.py

and decompile it

uncompyle6 test.pyc >test_dec.py

the output is:

a = 1
b = 1
if a:
    print('a')
elif b:
    print('b')
else:
    print('else')

the decompiled code is quite different from the origin code
if run the code, it will print:

$ python3 test.py
a
b
$ python3 test_dec.py
a

Expected behavior

expected decompiled code may look like this:

a = 1
b = 1
if a:
    print("a")
if b:
    print("b")
else:
    print("else")

Environment

this bug can be repeated in such environments:

Ubuntu 20.04
Python 3.8.5 (default, May 27 2021, 13:30:53) [GCC 9.3.0] on linux
uncompyle6 3.7.4 from pip

or

Ubuntu 18.04
Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0]
uncompyle6 3.7.4 from pip

Additional Environment or Context

This bug does not exist in decompile3, but decompile3 cannot handler python3.6 bytecode.

Lenguaje dominante
Python
Estrellas
4.3k
Forks
465
Merge medio
4 d 11 h
PR fusionados (30 d)
3

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

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 rocky/python-uncompyle6

Todos los issues de rocky/python-uncompyle6

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.