Rename Method refactoring does not change the name of the super method in the classes that override it

Ouverte
#770 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
python
Domaine
tooling

Piste de recherche

Reproduce with the two-class snippet in the issue: apply Rename Method to BaseFormat.to_iterable and confirm DelimitedFormat.to_iterable keeps its old name. The issue does not name the rope source files, so locate the rename logic yourself. Done means the overriding method in the subclass is renamed too, and the base method's NotImplementedError body is left intact.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug rename-refactor

Rename Method refactoring applied to a method defined in a super class does not modify the signature of the method in the classes that override it

  1. Steps to reproduce the behavior:
class BaseFormat(object):
    def __init__(self, fp, **kwargs):
        pass

    def to_iterable(self):
        raise NotImplementedError('Must implement a "to_iterable" method.')


class DelimitedFormat(BaseFormat):
    def __init__(self, fp, **kwargs):
        BaseFormat.__init__(self, fp, **kwargs)

    def to_iterable(self):
        return None

  1. Apply the Rename Method refactoring with any new name to 'BaseFormat.to_iterable'

  2. Expected code after refactoring:

class BaseFormat(object):
    def __init__(self, fp, **kwargs):
        pass

    def new_method_name(self):
        raise NotImplementedError('Must implement a "to_iterable" method.')


class DelimitedFormat(BaseFormat):
    def __init__(self, fp, **kwargs):
        BaseFormat.__init__(self, fp, **kwargs)

    def new_method_name(self):
        return None

  1. The method that overrides the original method in the subclass is not renamed
Langage dominant
Python
Étoiles
2.2k
Forks
197
Merge moyen
1 j 20 h
PR mergées (30 j)
7

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de python-rope/rope

Toutes les issues de python-rope/rope

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.