Projet

Général

Profil

Bug #62527

migration vers bullseye et changement d’interface django tables (?)

Ajouté par Paul Marillonnet il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
08 mars 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

à investiguer, mais ça a l’air d’être ce qui se passe dans #62520.


Fichiers

Révisions associées

Révision d423c6c7 (diff)
Ajouté par Paul Marillonnet il y a environ 2 ans

misc: add compatibility with bullseye's django-tables2 (#62527)

Historique

#1

Mis à jour par Paul Marillonnet il y a environ 2 ans

Oui c’est ça, cf le py3dist-overrides de authentic2/debian et la variation de version entre celle de buster et celle de bullseye.

#3

Mis à jour par Paul Marillonnet il y a environ 2 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Paul Marillonnet
#4

Mis à jour par Paul Marillonnet il y a environ 2 ans

#5

Mis à jour par Thomas Noël il y a environ 2 ans

On va se traîner un peu de buster encore, il faut faire en sorte d'avoir un environnement tox pour buster et un autre pour bullseye, et comme c'est déjà en place pour Django Rest Framework il suffit de suivre, genre :

envlist =
-  authentic-py3-dj22-drf39
-  authentic-py3-dj22-drf312
+  authentic-py3-dj22-drf39-djtables1212   - pour https://packages.debian.org/buster/python3-django-tables2 = 1.21.2
+  authentic-py3-dj22-drf312-djtables211   - pour https://packages.debian.org/bullseye/python3-django-tables2 = 2.1.1
...
... et ce qu'il faut en dessous comme déclaration pour djtables1212 et djtables211

#6

Mis à jour par Paul Marillonnet il y a environ 2 ans

Thomas Noël a écrit :

On va se traîner un peu de buster encore, il faut faire en sorte d'avoir un environnement tox pour buster et un autre pour bullseye, et comme c'est déjà en place pour Django Rest Framework il suffit de suivre, genre :
[...]

Arf oui j’avais zappé ça et d’ailleurs le changement de version majeure de django-tables2 casse la rétrocompatibilité.
Si on veut avoir le support des deux versions, on va se retrouver avec des branchements conditionnels partout dans les méthodes des classes de ce authentic2.manager.tables (initialisateurs qui ne prennent pas du tout les mêmes arguments par mot-clé, méthodes de rendu html dont l’ordre des arguments positionnels change, etc). C’est grave docteur ?

#7

Mis à jour par Paul Marillonnet il y a environ 2 ans

Paul Marillonnet a écrit :

Arf oui j’avais zappé ça et d’ailleurs le changement de version majeure de django-tables2 casse la rétrocompatibilité.
Si on veut avoir le support des deux versions, on va se retrouver avec des branchements conditionnels partout dans les méthodes des classes de ce authentic2.manager.tables (initialisateurs qui ne prennent pas du tout les mêmes arguments par mot-clé, méthodes de rendu html dont l’ordre des arguments positionnels change, etc).

Est-ce que quelqu’un voit une solution plus élégante ou bien je me lance là-dedans ?

#8

Mis à jour par Thomas Noël il y a environ 2 ans

Paul Marillonnet a écrit :

Est-ce que quelqu’un voit une solution plus élégante ou bien je me lance là-dedans ?

Je donne ma langue au chat...

#9

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

On peut pas juste backporter le package de django-tables 2 ?

#10

Mis à jour par Paul Marillonnet il y a environ 2 ans

Benjamin Dauvergne a écrit :

On peut pas juste backporter le package de django-tables 2 ?

J’avais ça en tête en évoquant une "solution plus élégante", mais le doute m’habite, je donne ma langue au chat aussi.

#11

Mis à jour par Paul Marillonnet il y a environ 2 ans

Paul Marillonnet a écrit :

Benjamin Dauvergne a écrit :

On peut pas juste backporter le package de django-tables 2 ?

J’avais ça en tête en évoquant une "solution plus élégante", mais le doute m’habite, je donne ma langue au chat aussi.

Bon, le patch qui gère dans authentic2.tables le support des deux versions django-tables2 concurrentes n’est pas aussi volumineux que ce que je m’imaginais.
Encore deux trois petits détails à régler (dont un crash pylint qui me laisse perplexe, bogue dans le parseur semblerait-il) et il n’y aura pas besoin de backporter.

#12

Mis à jour par Paul Marillonnet il y a environ 2 ans

Paul Marillonnet a écrit :

Encore deux trois petits détails à régler (dont un crash pylint qui me laisse perplexe, bogue dans le parseur semblerait-il)

Quelqu’un a déjà vu passer ce genre de chose, i.e. un gros crash lors du parcours de l’arbre de syntaxe abstraite ?

pylint run-test: commands[1] | ./pylint.sh tests/ src/
[429528] /var/lib/jenkins/workspace/wip_wip_62527-djtables2-bullseye$ /var/lib/jenkins/workspace/wip_wip_62527-djtables2-bullseye/pylint.sh tests/ src/

Traceback (most recent call last):
  File "/tmp/authentic-wip/wip%2F62527-djtabl-5/tox-jenkins/authentic/pylint/lib/python3.9/site-packages/pylint/utils/ast_walker.py", line 72, in walk
    callback(astroid)
  File "/tmp/authentic-wip/wip%2F62527-djtabl-5/tox-jenkins/authentic/pylint/lib/python3.9/site-packages/pylint/checkers/classes.py", line 1126, in visit_functiondef
    self._check_signature(node, parent_function, "overridden", klass)
  File "/tmp/authentic-wip/wip%2F62527-djtabl-5/tox-jenkins/authentic/pylint/lib/python3.9/site-packages/pylint/checkers/classes.py", line 2015, in _check_signature
    f"{method1.parent.name}.{method1.name}",
AttributeError: 'If' object has no attribute 'name'

Exception on node <FunctionDef.render l.52 at 0x7f56279f88b0> in file '/var/lib/jenkins/workspace/wip_wip_62527-djtables2-bullseye/src/authentic2/manager/tables.py'
************* Module src.authentic2.manager.tables
src/authentic2/manager/tables.py:1: [F0001(fatal), ] Fatal error while checking 'src/authentic2/manager/tables.py'. Please open an issue in our bug tracker so we address this. There is a pre-filled template that you can use in '/var/lib/jenkins/.cache/pylint/pylint-crash-2022-03-11-10.txt'.

Sinon je vais ouvrir un rapport de bogue.

#13

Mis à jour par Paul Marillonnet il y a environ 2 ans

Paul Marillonnet a écrit :

Paul Marillonnet a écrit :

Encore deux trois petits détails à régler (dont un crash pylint qui me laisse perplexe, bogue dans le parseur semblerait-il)

Quelqu’un a déjà vu passer ce genre de chose, i.e. un gros crash lors du parcours de l’arbre de syntaxe abstraite ?
[...]
Sinon je vais ouvrir un rapport de bogue.

Et en attendant, puisque c’est bloquant pour la migration bullseye, j’ai tapé un # pylint: skip-file en début de fichier.

#14

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

  • Statut changé de Solution proposée à Information nécessaire

On pouvait pas juste mettre bound_column=None ?

Aussi tout faire en un patch, tout ça n'a pas tellement d'intérêt l'un sans l'autre.

#15

Mis à jour par Paul Marillonnet il y a environ 2 ans

Benjamin Dauvergne a écrit :

On pouvait pas juste mettre bound_column=None ?

Ça ne suffirait pas pour ne plus avoir les if … else sur ces parties, l’ordre des arguments positionnels record et value s’inverse lors du passage à la v2 de django-tables2 (wtf).

Aussi tout faire en un patch, tout ça n'a pas tellement d'intérêt l'un sans l'autre.

Ok no souci. Je vais tenir une liste de qui me dit de splitter les patches quand on touche à la fois setup, au tox, au code applicatif etc, et qui me dit de tout réunir, pour directement adapter les patches en fonction du relecteur potentiel :)

#16

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée

Ok si l'ordre change en plus, misère comme dirait l'autre.

#17

Mis à jour par Paul Marillonnet il y a environ 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit d423c6c7c76e70ee81c459798727457274aad769
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Mar 11 09:38:53 2022 +0100

    misc: add compatibility with bullseye's django-tables2 (#62527)
#18

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#20

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF