Services
Blog
English
django-autocomplete-light a deux lignes de versions actuelles avec des rôles différents : v4 existe pour fournir le chemin de mise à niveau documenté depuis v3 et à travers les versions Django prises en charge, tandis que v5 est l’endroit où nous pouvons prendre les ruptures de compatibilité arrière plus importantes qui débloquent la prochaine API.
Cet article clarifie à quoi sert chaque ligne, laquelle vous devriez installer, et où trouver la documentation de mise à niveau.
Si vous utilisez déjà django-autocomplete-light 3.x en production, passez d’abord à v4.
La version 4 est la ligne de rupture la plus petite depuis v3. Elle garde l’intégration Select2 et la forme existante du projet, tout en ajoutant le support des versions modernes de Django. C’est la ligne de release à utiliser pendant que vous mettez un projet à niveau de Django 4.2 vers Django 5.2.
La version 5 est la ligne de rupture. Elle contient les changements qui n’auraient pas dû atterrir dans une release patch v4. Elle s’adresse aux projets prêts à adapter leurs personnalisations et à passer au cycle de vie plus propre, mais l’API v5 reste ouverte au changement si nous pouvons réduire la surface de rupture de compatibilité arrière.
Le but de v4 est volontairement ennuyeux : elle doit rendre les mises à niveau possibles sans forcer une réécriture d’application. Elle peut tout de même nécessiter des changements de code depuis v3, mais ces changements doivent être documentés et suffisamment limités pour que les projets puissent avancer progressivement.
En particulier, v4 est la ligne pour les projets qui ont besoin d’une version de django-autocomplete-light couvrant le chemin de mise à niveau Django LTS. Si votre application tourne encore sur Django 4.2 et que vous voulez atteindre Django 5.2, v4 est la ligne de release passerelle.
C’est important parce que les chemins de mise à niveau doivent être incrémentaux :
Utilisez le guide de mise à niveau v3 vers v4 ici :
https://django-autocomplete-light.readthedocs.io/en/master/upgrade_from_v3_to_v4.html
La version 5 est l’endroit où doivent aller les changements incompatibles avec les versions précédentes.
Le point principal de v5 est de supprimer l’ancienne gestion du cycle de vie des objets côté jQuery du projet, et de simplifier la surface d’intégration Python et JavaScript pour la suite. C’est un travail utile, mais ce n’est pas un changement de niveau patch : les projets avec une initialisation JavaScript personnalisée, des widgets personnalisés ou des overrides Python peuvent devoir s’adapter.
Cela dit, v5 n’est pas une excuse pour casser plus que nécessaire. Nous sommes encore ouverts à changer l’API v5 avant qu’elle se stabilise si une autre forme préserve l’objectif tout en rendant les personnalisations existantes plus faciles à porter.
C’est particulièrement important pour les personnalisations avancées autour du
rendu des options sélectionnées. Par exemple, certains projets utilisent
to_field_name="uuid" ou filtrent les choix sélectionnés avec uuid__in au
lieu de pk__in. Ces personnalisations ne devraient pas exiger de copier de
gros blocs de code interne de widget, donc v5 est le bon endroit pour améliorer
les points d’extension.
Utilisez le guide de mise à niveau v4 vers v5 ici :
https://django-autocomplete-light.readthedocs.io/en/master/upgrade_from_v4_to_v5.html
Le point important est que v4 existe pour que les utilisateurs aient un chemin incrémental entre les versions Django LTS actuelles avant de prendre les plus gros changements de v5.
django-autocomplete-light 3.12.x
django-autocomplete-light 4.x
django-autocomplete-light 5.x
Si vous mettez à niveau à la fois Django et django-autocomplete-light, le chemin prévu est de passer d’abord par v4. Ne sautez pas directement d’un vieux projet v3 vers v5 sauf si vous êtes prêt à gérer les deux étapes de mise à niveau en une seule fois.
Utilisez v4 si :
Utilisez v5 si :
Un changement incompatible avec les versions précédentes a été publié comme
4.0.1. C’était une erreur. Il a été déplacé vers la ligne v5 afin que les
projets épinglés à v4 puissent rester sur le chemin de compatibilité.
La ligne v4 est maintenant l’endroit pour le plus petit chemin de mise à niveau v3 vers v4 et les correctifs de compatibilité, y compris le support de Django 4. La ligne v5 est l’endroit pour les grandes ruptures intentionnelles.
À l’avenir, la règle est simple :
Si une release casse vos builds de façon inattendue, gardez en tête que mon numéro de téléphone est présent dans le footer de ce blog/site. Le README de django-autocomplete-light a aussi une section pour aider les gens à me joindre rapidement dans cette situation. Je veux vraiment le savoir dès que possible quand une release casse des chemins de mise à niveau en production, parce que c’est le moment où un yank rapide, un patch ou une clarification peut faire gagner beaucoup de temps à beaucoup de monde.
Les pages de mise à niveau sont :
Le tableau de compatibilité est documenté ici :
https://django-autocomplete-light.readthedocs.io/en/master/#compatibility
Si quelque chose dans le chemin de mise à niveau reste flou, ouvrez une issue avec les versions de Django et django-autocomplete-light que vous utilisez, les versions cibles, et toute personnalisation de widget ou JavaScript impliquée. Pour v5 en particulier, les exemples de personnalisations devenues plus dures que nécessaire sont utiles : nous pouvons encore changer l’API si cela réduit le chemin de mise à niveau.