Development #43651
wipe(), ne pas autoriser les appels depuis une instance
0%
Description
Pour éviter les erreurs façon #43635#note-5, où .wipe() est appelé plutôt que .remove_self().
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus d'un an
- Fichier 0001-misc-make-sure-.wipe-is-only-called-on-classes-43651.patch 0001-misc-make-sure-.wipe-is-only-called-on-classes-43651.patch ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Frédéric Péters
- Patch proposed changé de Non à Oui
Très basiquement ça serait
@classmethod def wipe(cls): + assert isinstance(cls, type)
je ne sais pas ce qui avait pu me bloquer au moment de ce ticket.
J'attache déjà mon idée de patch mais je ne suis pas encore en mesure de pousser la branche pour jenkins, je ferai ça quand j'aurai du réseau adéquat.
Mis à jour par Frédéric Péters il y a plus d'un an
- Patch proposed changé de Oui à Non
C'est qu'en fait on a beau appeler sur un objet, une fois dans la méthode le cls est bien la classe et pas l'objet.
Mis à jour par Frédéric Péters il y a plus d'un an
J'ai quelque chose dans la branche mais c'est une catastrophe pour pylint (1352 warnings, avec principalement marqués tous les appels .wipe() des tests, ignorer globalement le warning en question je ne suis pas fan, mais taper 1300 # noqa non plus).
Mis à jour par Benjamin Dauvergne il y a plus d'un an
La version dans Django hérite de classmethod, ça devrait aider (ou l'utiliser directement si elle est dispo depuis longtemps):
django$ git grep -A5 classonlymethod django/utils/decorators.py:class classonlymethod(classmethod): django/utils/decorators.py- def __get__(self, instance, cls=None): django/utils/decorators.py- if instance is not None: django/utils/decorators.py- raise AttributeError("This method is available only on the class, not on instances.") django/utils/decorators.py- return super().__get__(instance, cls) django/utils/decorators.py-
Mis à jour par Frédéric Péters il y a plus d'un an
- Fichier 0001-misc-make-sure-.wipe-is-only-called-on-classes-43651.patch 0001-misc-make-sure-.wipe-is-only-called-on-classes-43651.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
Voilà avec la version django de classonlymethod et pylint la vit bien.
Mis à jour par Lauréline Guérin il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
Mis à jour par Frédéric Péters il y a plus d'un an
- Statut changé de Solution validée à Résolu (à déployer)
commit 13a54d9f7d841eec7f873f6e84d043aaf6858a42 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Fri Sep 30 13:26:45 2022 +0200 misc: make sure .wipe() is only called on classes (#43651)
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
misc: make sure .wipe() is only called on classes (#43651)