Feature request: declarative ordering of hookimpls relative to other plugins (before/after), beyond tryfirst/trylast

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

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Calme
Stack technique
python
Domaine
tooling

Piste de recherche

Commencez par lire le comportement actuel concernant l’ordre des hooks tryfirst et trylast, ainsi que les issues pytest référencées. L’issue identifie également _HookCaller._nonwrappers comme une API privée que les utilisateurs inspectent aujourd’hui. Pour considérer le travail comme terminé, il faudrait d’abord disposer d’une conception acceptée pour l’ordre déclaratif, y compris les conflits et les cycles, puis réaliser l’implémentation et les tests ; le maintainer se demande actuellement si cela en vaut la peine.

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

Description

pluggy currently offers only tryfirst and trylast booleans to control hook order, which remains arbitrary within each of the three categories. Some users want to declare that their hookimpl must run before or after a specific other plugin or hookimpl, and so several pytest issues conclude that the fix (if any) belongs in pluggy:

  • pytest-dev/pytest#13371 — "Provide a better way to schedule hooks ordering." Request for before=/after= ordering relative to named plugins.
  • pytest-dev/pytest#2364 — "undeterministic order of pytest_configure for conftest-loaded plugins." Core/entrypoint/conftest plugins end up in an effectively random relative order; the issue explicitly notes "this may need actual dependency ordering support in pluggy."
  • #250 — an existing user question about reordering hookimpls after registration by poking _HookCaller._nonwrappers (private API), which shows people already reach for unsupported internals to get this.

Personally I'm inclined to close this issue as wontfix, because it's absolutely classic "what if two programs did this" fodder. Even if we proposed to error on such cases and do a fancy toposort on the rest, I don't think it'd be worth the complexity.

Langage dominant
Python
Étoiles
1.7k
Forks
200
Merge moyen
1 j 1 h
PR mergées (30 j)
16

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

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 pytest-dev/pluggy

Toutes les issues de pytest-dev/pluggy

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.