MTES-MCT / metadata-postgresql

Plume : gestion des métadonnées du patrimoine PostgreSQL
https://mtes-mct.github.io/metadata-postgresql/
GNU Affero General Public License v3.0
0 stars 1 forks source link

Comparaison de chemins avec RDFLib 6.2.0+ #119

Closed alhyss closed 1 year ago

alhyss commented 1 year ago

La résolution de cette issue conditionne la compatibilité de Plume avec RDFLib 6.2.0+.

À partir de RDFLib 6.2.0, les égalités de chemins ne sont plus vérifiées.

En 6.1.1 :

>>> from rdflib import DCTERMS, DCAT
>>> DCAT.dataset / DCTERMS.title == DCAT.dataset / DCTERMS.title
True

En 6.2.0 et en 6.3.0 :

>>> from rdflib import DCTERMS, DCAT
>>> DCAT.dataset / DCTERMS.title == DCAT.dataset / DCTERMS.title
False

Il n'y a rien dans la note de version de la 6.2.0 qui laisse à penser que ce soit un changement volontaire, mais je pense que c'est lié au pull request 1528. Le correctif supprime la méthode Path.__eq__ alors que la documentation de functools.total_ordering dit :

The class must define one of __lt__(), __le__(), __gt__(), or __ge__(). In addition, the class should supply an __eq__() method.

En rajoutant dans le code de la 6.3.0 la méthode Path.__eq__ telle qu'elle était définie dans la 6.1.1, les comparaisons fonctionnent de nouveau.

    def __eq__(self, other):
        return repr(self) == repr(other)

Je vais déjà ouvrir une issue sur le Git de RDFLib.

alhyss commented 1 year ago

Comme évoqué : issue sur le Git de RDFLib.

alhyss commented 1 year ago

Le problème a été corrigé par la version 6.3.2 de RDFLib publiée hier. Tous les tests qui échouaient en 6.3.0 passent de nouveau.