Maison >développement back-end >Tutoriel Python >Comment encourager les développeurs à corriger les avertissements Python pour les fonctionnalités obsolètes

Comment encourager les développeurs à corriger les avertissements Python pour les fonctionnalités obsolètes

DDD
DDDoriginal
2025-01-01 00:04:16656parcourir

How to encourage developers to fix Python warnings for deprecated features

Notre code est tellement interdépendant ! L'ajout de dépendances aux projets est la manière dont le code est réalisé.

Chaque fois que quelqu'un éternue, une nouvelle dépendance est ajoutée à un projet quelque part.

C'est plutôt génial que nous soyons de ce côté-ci du débat sur le droit d'auteur, où la valeur par défaut est de construire des choses sur le travail d'autres personnes, et de ne pas tirer sur tout le monde, qui ose même regarder dans la direction de mon code. . Mais... qui va mettre à jour toutes ces dépendances à tout moment ?

Dans un monde parfait, nous sommes une communauté et nous gardons tous les bibliothèques mises à jour vers les dernières versions, n'est-ce pas ?

Faux ! Les développeurs doivent être doucement poussés à faire la bonne chose. Oui, doucement, pour qu'ils ne remarquent pas qu'ils sont poussés ????.

Étape 1 : Nous devons d'abord écouter les avertissements de dépréciation

Nous utilisons pytest, cette étape est donc simple pour nous.

À partir de la version 3.1, pytest détecte désormais automatiquement les avertissements lors de l'exécution du test et les affiche à la fin de la session :

- Pytest : Comment capturer les avertissements

aime ça :

============================= warnings summary =============================
test_bla_bla_bla.py::test_test
  .../some_file.py:65: PydanticDeprecatedSince20: `pydantic.config.Extra` 
    is deprecated, use literal values instead (e.g. `extra='allow'`). 
    Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide 
    at https://errors.pydantic.dev/2.9/migration/
      extra=Extra.allow,

  .../marshmallow/fields.py:1186: RemovedInMarshammlow4Warning: The 'default' argument
    to fields is deprecated. Use 'dump_default' instead.
      super().__init__(**kwargs)

======================= 1 passed, 2 warnings in 0.12s =======================

Étape 2 : Choisissez les avertissements dont vous souhaitez vous débarrasser

J'ai vu l'avertissement de guimauve, j'ai regardé le code et j'ai vu qu'il s'agissait d'une solution simple.

Donc, je choisis RemovedInMarshammlow4Warning.

Étape 3 : Faire en sorte que les avertissements de dépréciation échouent aux tests

Encore une fois, nous utilisons pytest, donc cette étape est également simple pour nous.

Ajoutez simplement ceci au fichier de configuration :

[tool.pytest.ini_options]
...
filterwarnings = [
    "error::marshmallow.warnings.RemovedInMarshmallow4Warning"
]

- Pytest : Contrôler les avertissements

Désormais, tous les tests qui déclenchent cet avertissement de dépréciation échoueront.

Étape 4 : Corrigez le code

Malheureusement, vous devez en prendre un pour l'équipe ici. Vous devez aller réparer tous les endroits où cet avertissement se déclenche.

Je sais... c'est injuste.

C'est beaucoup de travail, c'est un travail fastidieux et vous ne pourrez même pas vous en vanter auprès de votre patron, car c'est trop technique et généralement perçu comme hors de propos de son point de vue.

Et tout ce que cela fait, c'est aider la prochaine personne (qui ne sera pas vous), qui mettra à niveau Marshmallow et rien dans le code ne sera cassé. Donc, ils ne vous remercieront pas non plus, car ils ne remarqueront même pas que quelque chose a été fait.

Donc, ... ce que je dis, c'est : parfois, il faut faire la bonne chose, et personne ne vous en remerciera.

Mais je le saurai. Et vous le saurez. ?

Étape 5 : Détendez-vous et écoutez les conversations Slack et les commentaires GitHub

Finalement, il devrait y avoir un message quelque part indiquant que quelqu'un est confus : ils ont écrit le même code que la dernière fois, mais cette fois, les tests échouent, que se passe-t-il ?

Et vous pouvez dire : "oh, difficile à dire, mais je vois que c'est une fonctionnalité obsolète, ça doit être la raison". ?

Liens externes

  • Pytest : Comment capturer les avertissements
  • Python : Le filtre des avertissements

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn