Inline method refactoring changes variables names after applying the transformation
Mantenedores costumam responder em até 7 dias
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 34/100
Direção de pesquisa
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.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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)
- Linguagem predominante
- Python
- Estrelas
- 2.2k
- Forks
- 197
- Merge médio
- 2d 13h
- PRs com merge (30d)
- 5
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o 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.
Mais de python-rope/rope
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
python-rope/rope#927 ·
Mantenedores costumam responder em até 7 dias
-
Extract raises IndexError or ModuleSyntaxError instead of RefactoringError for an empty or whitespace-only regionTalvez já em andamento @aliassar assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
python-rope/rope#926 ·
Mantenedores costumam responder em até 7 dias
-
simplify.real_code blanks t-strings, so renames inside them edit the wrong offsetTalvez já em andamento @sean0407 assumiu há 11 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
python-rope/rope#913 ·
Mantenedores costumam responder em até 7 dias
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
python-rope/rope#925 ·
Mantenedores costumam responder em até 7 dias
-
Extract method/variable and introduce parameter don't check whether the new name is already in useAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
python-rope/rope#924 ·
Mantenedores costumam responder em até 7 dias
Todas as issues de python-rope/rope
Issues semelhantes
-
DBFS append mode silently overwrites existing filesTalvez já em andamento @IlyaKhalafi assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
fsspec/filesystem_spec#2429 ·
Mantenedores costumam responder em até 1 dia
-
[Bug]: Retrieval rerank fallback statistics stay zero after provider failureTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
volcengine/OpenViking#7014 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
fedora-copr/copr#4600 ·
Mantenedores costumam responder em até 2 dias
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
ansys/pydpf-core#3620 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia