Projet

Général

Profil

Bug #24497

forms: use python-magic when available

Ajouté par Christophe Siraut il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
13 juin 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Jusqu'à jessie Debian fournissait un module python magic construit depuis libfile, non disponible dans pip.

Le patch attaché implémente la détection du mimetype via les méthodes du module python-magic upstream (désormais reconnu par Debian comme l'implémentation de référence).

Note: nos serveurs jessie ont déjà migré vers un backport du paquet python-magic (basé sur upstream et qui inclut un patch de compatibilité avec les anciennes méthodes)


Fichiers


Demandes liées

Lié à w.c.s. - Bug #18050: Redonner une explication claire sur comment lancer les testsFermé18 août 2017

Actions
Lié à w.c.s. - Development #22414: prendre en charge le module python-magic (qui n'est pas le binding python de la libmagic)Fermé09 mars 2018

Actions

Révisions associées

Révision 8eeba98e (diff)
Ajouté par Christophe Siraut il y a presque 6 ans

forms: use python-magic when available (#24497)

Historique

#1

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Lié à Bug #18050: Redonner une explication claire sur comment lancer les tests ajouté
#2

Mis à jour par Frédéric Péters il y a presque 6 ans

Éviter les except nus et limiter ce qui est concerné; mais ici, plutôt sans try/except, je verrais un truc ainsi :

if hasattr(magic, 'Magic'):  # "new" python-magic,
    ...
else:  # python bindings from libmagic package, obsolete
   ...
#3

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Pour info/inspiration, ce qui été fait dans passerelle : #21980

#4

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Et j'avais ouvert ça à l'époque : #22414

#5

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

  • Lié à Development #22414: prendre en charge le module python-magic (qui n'est pas le binding python de la libmagic) ajouté
#6

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Fichier 0001-forms-use-python-magic-when-available-23418.patch ajouté
  • Fichier 0001-forms-use-python-magic-when-available-23418.patch ajouté
  • Patch proposed changé de Non à Oui

Désolé Manu je n'avais pas vu #22414.

#7

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Fichier 0001-forms-use-python-magic-when-available-23418.patch supprimé
#8

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Christophe Siraut a écrit :

Désolé Manu je n'avais pas vu #22414.

Aucun problème. Mauvais numéro de ticket dans ton message de commit.
Pour le reste je laisse la main à Frédéric.

#9

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Quand même une autre remarque, j'ai fait le test et ton if hasattr(magic, 'MagicException') (qui devrait être un @if hasattr(magic, 'Magic') parce que c'est de Magic dont tu te sers ensuite, mais ça change rien pour la suite de ma remarque) ne permet pas de discriminer les deux version de python-magic, ça renvoie True sur les deux version de la lib.

if hasattr(magic, 'open') est bien discriminant par contre.

#10

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Et une dernière pour la route.

mime = magic.Magic(mime=True)
filetype = mime.from_file(self.value.fp.name)

J'ai l'impression que ça peut marcher dans les deux cas (je te laisse tester vraiment), auquel cas plus besoin de if, ce qui serait encore mieux que ce que j'avais fait dans #21980

#11

Mis à jour par Christophe Siraut il y a presque 6 ans

Emmanuel Cazenave a écrit :

Quand même une autre remarque, j'ai fait le test et ton if hasattr(magic, 'MagicException') (qui devrait être un @if hasattr(magic, 'Magic') parce que c'est de Magic dont tu te sers ensuite, mais ça change rien pour la suite de ma remarque) ne permet pas de discriminer les deux version de python-magic, ça renvoie True sur les deux version de la lib.

Non justement la classe magic existe dans les 2 modules, tandis que MagicException existe seulement dans la version moderne. Testé sur une jessie et une stretch. Tu confirmes?

J'ai l'impression que ça peut marcher dans les deux cas

Non ça ne marche pas sur jessie. (sauf nos jessie qui utilisent un backport maison de python-magic)

#12

Mis à jour par Christophe Siraut il y a presque 6 ans

Mauvais numéro de ticket dans ton message de commit.

Merci!

#13

Mis à jour par Christophe Siraut il y a presque 6 ans

Non ça ne marche pas sur jessie. (sauf nos jessie qui utilisent un backport maison de python-magic)

TypeError: __init__() got an unexpected keyword argument 'mime'
#14

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Ok on teste pas la même chose en fait.

Mes remarques concernait un test python-magic 2:0.4.15-1~bpo8+1 vs python-magic pypi.

#15

Mis à jour par Christophe Siraut il y a presque 6 ans

Mes remarques concernait un test python-magic 2:0.4.15-1~bpo8+1 vs python-magic pypi.

Oui nous avons donc 3 situations:

jessie avec python-magic 1:5.22+15-2+deb8u3 (libfile)
jessie avec python-magic 0.4.15-1~bpo8+1 (python-magic)
stretch+ avec python-magic 0.4.15-1~bpo8+1 (python-magic)

2 et 3 sont identiques du point de vue de l'application.

#16

Mis à jour par Emmanuel Cazenave il y a presque 6 ans

Go

#17

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Fichier 0001-forms-use-python-magic-when-available.patch supprimé
#18

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Fichier 0001-forms-use-python-magic-when-available-23418.patch supprimé
#19

Mis à jour par Christophe Siraut il y a presque 6 ans

  • Statut changé de Nouveau à Résolu (à déployer)
commit 8eeba98ed84ce4955a6c8682bcead7b7bb607317
Author: Christophe Siraut <csiraut@entrouvert.com>
Date:   Tue Jun 12 17:33:23 2018 +0200

    forms: use python-magic when available (#24497)
#20

Mis à jour par Frédéric Péters il y a plus de 5 ans

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

Formats disponibles : Atom PDF