Inline method refactoring passes the wrong parameter to the inlined function body
Les mainteneurs répondent en général sous 7 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Start from the reproduction in the issue: apply Inline Method to PatternParser.parse in en/parsers.py and check the call in test.py's test_parse. The bad output is self.assertEqual(pattern_parse(__0__self.parser.text), ...), where the argument should stay self.text. Done when the inlined call passes the original argument and the test passes. The payload names no rope source files, so locate the inline refactoring code yourself.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Inline method refactoring passes the wrong parameter to the inlined function body
Steps to reproduce the behavior:
- Code before refactoring:
structure
-- en
---- __init.py__
---- parsers.py
-- test
---- __init.py__
---- test.py
en.__init.py__:
class Parser(object):
def __init__(self, lexicon={}, default=("NN", "NNP", "CD"), language=None):
self.lexicon = lexicon
self.default = default
self.language = language
def parse(self, s, tokenize=True, tags=True, chunks=True, relations=False, lemmata=False, encoding="utf-8", **kwargs):
pass
parser = Parser(
default=("NN", "NNP", "CD"),
language="en"
)
def parse(s, *args, **kwargs):
return parser.parse(s, *args, **kwargs)
en.parsers.py:
from abc import abstractmethod
from en import parse as pattern_parse
class BaseParser(object):
@abstractmethod
def parse(self, text):
return
class PatternParser(BaseParser):
def parse(self, text):
return pattern_parse(text)
test.test.py:
import unittest
from en import parse as pattern_parse
import en.parsers as parsers
class TestPatternParser(unittest.TestCase):
def setUp(self):
self.parser = PatternParser()
self.text = "And now for something completely different."
def test_parse(self):
self.assertEqual(self.parser.parse(self.text), pattern_parse(self.text))
-
Apply the Inline Method refactoring to 'PatternParser.parse'
-
Expected code after refactoring:
en.__init.py__:
class Parser(object):
def __init__(self, lexicon={}, default=("NN", "NNP", "CD"), language=None):
self.lexicon = lexicon
self.default = default
self.language = language
def parse(self, s, tokenize=True, tags=True, chunks=True, relations=False, lemmata=False, encoding="utf-8", **kwargs):
pass
parser = Parser(
default=("NN", "NNP", "CD"),
language="en"
)
def parse(s, *args, **kwargs):
return parser.parse(s, *args, **kwargs)
en.parsers.py:
from abc import abstractmethod
from en import parse as pattern_parse
class BaseParser(object):
@abstractmethod
def parse(self, text):
return
class PatternParser(BaseParser):
pass
test.test.py:
import unittest
from en import parse as pattern_parse
import en.parsers as parsers
class TestPatternParser(unittest.TestCase):
def setUp(self):
self.parser = PatternParser()
self.text = "And now for something completely different."
def test_parse(self):
self.assertEqual(pattern_parse(self.text), pattern_parse(self.text))
The transformation changes the attribute that is passed to the original function.
The result is: self.assertEqual(pattern_parse(__0__self.parser.text), pattern_parse(self.text))
Causing test fail
- Langage dominant
- Python
- Étoiles
- 2.2k
- Forks
- 197
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 5
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de python-rope/rope
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
python-rope/rope#927 ·
Les mainteneurs répondent en général sous 7 jours
-
Extract raises IndexError or ModuleSyntaxError instead of RefactoringError for an empty or whitespace-only regionPeut-être pris @aliassar l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
python-rope/rope#926 ·
Les mainteneurs répondent en général sous 7 jours
-
simplify.real_code blanks t-strings, so renames inside them edit the wrong offsetPeut-être pris @sean0407 l’a pris il y a 11 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
python-rope/rope#913 ·
Les mainteneurs répondent en général sous 7 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
python-rope/rope#925 ·
Les mainteneurs répondent en général sous 7 jours
-
Extract method/variable and introduce parameter don't check whether the new name is already in useOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
python-rope/rope#924 ·
Les mainteneurs répondent en général sous 7 jours
Toutes les issues de python-rope/rope
Issues similaires
-
Server mode OAuth2: 'NoneType' object is not subscriptable on every request after re-submitting the OAuth2 login while already logged inPeut-être pris @Rarasinhoo l’a pris aujourd’hui. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
pgadmin-org/pgadmin4#10733 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
aws-samples/sample-per-model-bedrock#752 ·
Les mainteneurs répondent en général sous 1 jour
-
lesson-submission pending-review
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
Ikalus1988/MisakaNet#4452 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
OCHA-DAP/topo-tools#250 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
Les mainteneurs répondent en général sous 1 jour