Inline method refactoring changes variables names after applying the transformation
Los mantenedores suelen responder en 7 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 34/100
Línea de trabajo
Start from the Inline Method refactoring applied to the nested RL function in the reproduction snippet. The output renames locals with a __0__ and __1__ prefix and drops the parameter binding, so look at how the inliner renames and substitutes local names. Reproduce by running the refactoring on the snippet. Done means the output matches the expected code, with no prefixed names and the loop variables kept intact.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Inline method refactoring changes field signatures and generates uninitialized variables
Steps to reproduce the behavior:
- Code before refactoring:
def _calculate_tk(source):
def RL(a, b):
for c in range(0, len(b) - 2, 3):
xa = a & ((1 << 32) - 1)
d = ord(b[c + 2]) - 87 if b[c + 2] >= 'a' else int(b[c + 2])
d = xa >> d if b[c + 1] == '+' else xa << d
a = a + d & 4294967295 if b[c] == '+' else a ^ d
return (a & ((1 << (32 - 1)) - 1)) - (a & (1 << (32 - 1)))
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
a = RL(a + di, "+-a^+6")
a = RL(a, "+-3^+b+-f")
return '{0:d}.{1:d}'.format(a, a ^ b)
-
Apply the Inline Method refactoring to '_calculate_tk.RL'
-
Expected code after refactoring:
def _calculate_tk(source):
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
for c in range(0, len("+-a^+6") - 2, 3):
xa = a + di & ((1 << 32) - 1)
d = ord("+-a^+6"[c + 2]) - 87 if "+-a^+6"[c + 2] >= 'a' else int("+-a^+6"[c + 2])
d = xa >> d if "+-a^+6"[c + 1] == '+' else xa << d
a = a + di + d & 4294967295 if "+-a^+6"[c] == '+' else a + di ^ d
a = (a + di & ((1 << (32 - 1)) - 1)) - (a + di & (1 << (32 - 1)))
for c in range(0, len("+-3^+b+-f") - 2, 3):
xa = a & ((1 << 32) - 1)
d = ord("+-3^+b+-f"[c + 2]) - 87 if "+-3^+b+-f"[c + 2] >= 'a' else int("+-3^+b+-f"[c + 2])
d = xa >> d if "+-3^+b+-f"[c + 1] == '+' else xa << d
a = a + d & 4294967295 if "+-3^+b+-f"[c] == '+' else a ^ d
a = (a & ((1 << (32 - 1)) - 1)) - (a & (1 << (32 - 1)))
return '{0:d}.{1:d}'.format(a, a ^ b)
- The result of the program after applied transformation:
def _calculate_tk(source):
b = 406398
d = source.encode('utf-8')
a = b
for di in d:
for __0__c in range(0, len("+-a^+6") - 2, 3):
__0__xa = __0__a + di & ((1 << 32) - 1)
__0__d = ord("+-a^+6"[__0__c + 2]) - 87 if "+-a^+6"[__0__c + 2] >= 'a' else int("+-a^+6"[__0__c + 2])
__0__d = __0__xa >> __0__d if "+-a^+6"[__0__c + 1] == '+' else __0__xa << __0__d
__0__a = __0__a + di + __0__d & 4294967295 if "+-a^+6"[__0__c] == '+' else __0__a + di ^ __0__d
a = (__0__a + di & ((1 << (32 - 1)) - 1)) - (__0__a + di & (1 << (32 - 1)))
for __1__c in range(0, len("+-3^+b+-f") - 2, 3):
__1__xa = __1__a & ((1 << 32) - 1)
__1__d = ord("+-3^+b+-f"[__1__c + 2]) - 87 if "+-3^+b+-f"[__1__c + 2] >= 'a' else int("+-3^+b+-f"[__1__c + 2])
__1__d = __1__xa >> __1__d if "+-3^+b+-f"[__1__c + 1] == '+' else __1__xa << __1__d
__1__a = __1__a + __1__d & 4294967295 if "+-3^+b+-f"[__1__c] == '+' else __1__a ^ __1__d
a = (__1__a & ((1 << (32 - 1)) - 1)) - (__1__a & (1 << (32 - 1)))
return '{0:d}.{1:d}'.format(a, a ^ b)
- Lenguaje dominante
- Python
- Estrellas
- 2.2k
- Forks
- 197
- Merge medio
- 2 d 13 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la 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 python-rope/rope
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
python-rope/rope#927 ·
Los mantenedores suelen responder en 7 días
-
Extract raises IndexError or ModuleSyntaxError instead of RefactoringError for an empty or whitespace-only regionPosiblemente ocupada @aliassar la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
python-rope/rope#926 ·
Los mantenedores suelen responder en 7 días
-
simplify.real_code blanks t-strings, so renames inside them edit the wrong offsetPosiblemente ocupada @sean0407 la tomó hace 10 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
python-rope/rope#913 ·
Los mantenedores suelen responder en 7 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
python-rope/rope#925 ·
Los mantenedores suelen responder en 7 días
-
Extract method/variable and introduce parameter don't check whether the new name is already in useAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
python-rope/rope#924 ·
Los mantenedores suelen responder en 7 días
Todos los issues de python-rope/rope
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 78/100
QuantConnect/Documentation#2838 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
awslabs/route53-dynamic-dns-with-lambda#67 · 1 comentario ·
-
`SubAgents` returns a child run's `DeferredToolRequests` to the parent as a successful tool resultAbiertobug pkg:harness
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
pydantic/pydantic-ai#12405 ·
Los mantenedores suelen responder en 1 día
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
good first issue help wanted
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100