Project

General

Profile

Evolution #4762

Donner une préférence de poids aux utilisations de pipelines

Added by RastaPopoulos ♥ 12 days ago. Updated 11 days ago.

Status:
Nouveau
Priority:
Normal
Assignee:
-
Category:
plugin
Target version:
Start date:
05/02/2021
Due date:
% Done:

0%

Resolution:

Description

Je soumets ceci à votre sagacité.

Il me semblerait utile de pouvoir, en plus du comportement par défaut, ajouter explicitement une préférence de poids lors des déclarations de pipelines. Ça ne pourra jamais être un placement pile à tel endroit précis, mais cela résoudrait je crois 99% des cas où où veut qu'un pipeline se lance "le plus possible à la fin des autres", ou "le plus possible au début".

Car :
1) un plugin ne peut pas nécessiter tous les autres du monde pour passer au max à la fin (et on ne veut pas forcément ça pour tous les pipelines qu'il utilise)
2) un plugin peut être nécessité pour totalement autre chose, et pourtant vouloir passer après en terme de mécanisme pour tel pipeline précis

L'idée serait que :
- par défaut, c'est toujours pareil bien sûr, ça se lance dans l'ordre des dépendances + alpha sinon (cas où poids=0)
- mais si on ajoute poids=10 ou poids=-10, ça force l'ordre pour aller avant ou après
- les pipelines d'un même poids sont ordonnés selon les dépendances + alpha (le cas défaut poids=0 étant juste un cas pareil que les autres)

History

#1 Updated by b b 11 days ago

Yop, je crois me souvenir d'un ticket qui abordait un sujet similaire (permettre de déclarer un ordre pour les plugins qui utilisent un même pipeline), ça ne te dit rien ?

#2 Updated by cedric - 11 days ago

  • Target version set to 4.1

Pour rappel, on peut placer un pipeline "à la fin de la liste" via le double ||
cf exemple https://git.spip.net/spip-contrib-extensions/markdown/src/branch/master/markdown_options.php#L17

Après on peut dire qu'il faudrait que ce soit aussi supporté par le paquet.xml, qu'il faudrait aussi une option "en premier" et complexifier, si quelqu'un à le courage d'implémenter le calcul du graphe d'appel en fonction des priorités...

#3 Updated by marcimat 🌻 11 days ago

Si on parle bien d'ordre dans les pipelines, effectivement il existe bien déjà la déclaration avec double pipe "||" pour passer à la fin.

Le graph je pense que c'est une "stable priority queue"; soit queue de priorité avec prise en compte de l'ordre d'introduction dans la file pour les priorités identiques (ici l'ordre des dépendances), et finalement c'est peut être pas le plus dur à trouver

Il existe la classe https://www.php.net/manual/fr/class.splpriorityqueue.php (mais elle ne gère pas l'ordre à pondération identique par défaut). Cf: https://stackoverflow.com/a/25525099 pour l'adapter.

Il y a aussi : https://medium.com/@justblackbird/stable-priority-queue-in-php-9a243a1851e qui en a fait un package https://packagist.org/packages/justblackbird/stable-priority-queue
Ou encore https://www.php.net/manual/fr/class.ds-priorityqueue.php mais ça nécessite une dépendance à DS avec un polyfill https://packagist.org/packages/php-ds/php-ds

#4 Updated by marcimat 🌻 11 days ago

Le plus dur serait peut être de se mettre d'accord sur… les valeurs des priorités…

#5 Updated by RastaPopoulos ♥ 11 days ago

Oui alors c'est pour ça que je demandais, je n'arrive pas trop à voir si c'était facilement implémentable ou pas. Donc si y a des libs qui aident tant mieux. Si un jour on ajoute cette possibilité, ça fera un système pas mal super fin pour l'extension, encore plus qu'actuellement.

S'il y a déjà pour le cas "tout à la fin" c'est une bonne chose, super. Je suis persuadé d'avoir déjà vu sur la zone un cas qui aurait aimé être le plus au début, inversement, mais je n'arrive plus à me retrouver lequel.

Also available in: Atom PDF