deprecate-feature

Par pytorch · pytorch

Déprécier, geler ou supprimer des API PyTorch ; choisir une version de suppression, gérer les composants gelés non corrigés, ou auditer les suppressions en retard.

npx skills add https://github.com/pytorch/pytorch --skill deprecate-feature

Dépréciations

Ce processus est provisoire ; nous l'évaluons en pratique. Le jugement humain prime : ignorez les étapes qui ne s'appliquent pas. Les nouvelles API techniquement publiques mais peu utilisées peuvent être dépréciées ou supprimées plus rapidement à la discrétion de l'humain.

La BC policy fait autorité :

  • Lire la release N depuis version.txt.
  • Avertir pendant au moins deux releases (180 jours pour les utilisateurs nightly) ; la suppression au plus tôt est N+2.

Déprécier ou geler

  • Indiquer la version de début, la cible de suppression, le remplacement (ou comment conserver le comportement actuel), et l'URL de l'issue de suivi dans l'avertissement.

  • Avertir une fois par processus. Python : FutureWarning derrière un flag au niveau du module :

    _warned = False
    
    def foo():
        global _warned
        if not _warned or torch.is_warn_always_enabled():
            warnings.warn(message, FutureWarning, stacklevel=2)
            _warned = True
  • Utiliser @deprecated uniquement avec category=None pour les diagnostics du type-checker.

  • C++ : préférer TORCH_WARN_ONCE ; TORCH_WARN_DEPRECATION se répète et mappe vers DeprecationWarning caché (#72948).

  • Ajouter la docstring .. deprecated:: <N>, migrer les appelants internes, tester l'avertissement (sous set_warn_always_context(True)), et labelliser la PR topic: deprecation.

  • Les composants gelés ont aussi besoin d'issues de suivi qui enregistrent la décision de gel ; linker lors de la fermeture d'issues contre le composant. Utiliser Kind: Frozen component, avec Removal target et Next step: none si aucune suppression n'est prévue.

Suivre

  • Réutiliser ou créer une issue par élément via .github/ISSUE_TEMPLATE/deprecation.yml. Conserver ses en-têtes ### <field>.

  • Obtenir l'approbation utilisateur du texte exact avant de créer ou modifier une issue (AI_POLICY.md). La labelliser module: deprecation ; utiliser slowroll uniquement pour les déploiements opt-in échelonnés (#191236).

  • L'attacher comme sub-issue de #201298 en utilisant son id interne, pas le numéro :

    id=$(gh api repos/pytorch/pytorch/issues/<N> --jq .id)
    gh api -X POST repos/pytorch/pytorch/issues/201298/sub_issues -F sub_issue_id="$id"
  • Tenir Next step à jour (ex. remove in 2.18).

  • Linker les PRs avec Part of #N, ou Fixes #N pour l'étape finale.

Supprimer ou auditer

  • Vérifier que deux releases d'avertissement ont été livrées et que la cible de suppression est arrivée.

  • Supprimer le code, les avertissements, les tests et les références, y compris .pyi.in, la docs, et torch/overrides.py. Utiliser .. versionchanged:: <version> avec guidance de migration là où la docs persiste ; labelliser la PR topic: bc breaking.

  • Auditer les cibles contre version.txt ; supprimer les éléments en retard ou les recibler avec une raison, en traçant chacun sous #201298 :

    git grep -nIE "(removed|deleted|dropped|become an error) (in|by|after) (PyTorch |version |release |v)?[0-9]+\.[0-9]+" -- torch aten c10

Skills similaires