Rename Method refactoring does not rename all implementations of an abstract method
Les mainteneurs répondent en général sous 7 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Start from the reproduction in the issue: a base.py with abstract BaseTokenizer.tokenize, its WordTokenizer override, and the BaseBlob.tokens call site. Apply Rename Method to the abstract method and check which overrides and call sites are missed. Done means the reproduction's expected output is reached, with overrides and calls renamed together and test.py still valid. The payload names no rope source files, so locate the rename logic yourself.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Steps to reproduce the behavior:
- Code before refactoring:
structure
-- main
---- base.py
-- test
---- test.py
base.py:
from abc import abstractmethod, ABC
class BaseTokenizer(ABC):
@abstractmethod
def tokenize(self, text):
return
def itokenize(self, text, *args, **kwargs):
return (t for t in self.tokenize(text, *args, **kwargs))
class WordTokenizer(BaseTokenizer):
def tokenize(self, text, include_punc=True):
return []
class BaseBlob(object):
tokenizer = WordTokenizer()
def __init__(self, text):
self.raw = self.string = text
def tokens(self):
return list(self.tokenizer.tokenize(self.raw))
class TextBlob(BaseBlob):
pass
test.py:
from unittest import TestCase, main
from main import base as tb
from main.base import WordTokenizer
class TextBlobTest(TestCase):
def setUp(self):
self.text = 'Explicit is better than implicit.'
self.blob = tb.TextBlob(self.text)
def test_tokens_property(self):
self.assertTrue(self.blob.tokens, list(WordTokenizer().tokenize(self.text)))
-
Apply the Rename Method refactoring with the new name 'continuous' to the method 'BaseTokenizer.tokenize'
-
Expected code after refactoring:
structure:
-- main
---- base.py
-- test
---- test.py
base.py:
from abc import abstractmethod, ABC
class BaseTokenizer(ABC):
@abstractmethod
def CONTINUOUS(self, text):
return
def itokenize(self, text, *args, **kwargs):
return (t for t in self.CONTINUOUS(text, *args, **kwargs))
class WordTokenizer(BaseTokenizer):
def CONTINUOUS(self, text, include_punc=True):
return []
class BaseBlob(object):
tokenizer = WordTokenizer()
def __init__(self, text):
self.raw = self.string = text
def tokens(self):
return list(self.tokenizer.CONTINUOUS(self.raw))
class TextBlob(BaseBlob):
pass
test.py:
from unittest import TestCase, main
from main import base as tb
from main.base import WordTokenizer
class TextBlobTest(TestCase):
def setUp(self):
self.text = 'Explicit is better than implicit.'
self.blob = tb.TextBlob(self.text)
def test_tokens_property(self):
self.assertTrue(self.blob.tokens, list(WordTokenizer().CONTINUOUS(self.text)))
- 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
-
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 10 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
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
yt-project/yt#5624 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
NousResearch/hermes-agent#148376 ·
Les mainteneurs répondent en général sous 1 jour
-
Analysis
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
SACGF/variantgrid#2615 ·
Les mainteneurs répondent en général sous 1 jour