IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Incompatibilité PyReverse <-> Random ?


Sujet :

Python

  1. #1
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut Incompatibilité PyReverse <-> Random ?
    Bonjour à tous

    Alors voici un problème sur lequel je me casse la tête depuis le début de l'après midi. Je souhaite faire un diagramme de classe de mon code. J'utilise pour cela l'outil Pyreverse (inclut dans pylint, j'ai la version 2.4.4).

    La commande que j'utilise pour générer un fichier classes.gv (dont je me dépatouille après) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pyreverse -o gv -A -my -S test.py
    Jusque là tout fonctionnait bien. Jusqu'à ce que je refasse tourner la chose tout à l'heure, et que j'obtienne une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    parsing test.py...
    Traceback (most recent call last):
      File "C:\ProgramData\Anaconda3\Scripts\pyreverse-script.py", line 10, in <module>
        sys.exit(run_pyreverse())
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\__init__.py", line 37, in run_pyreverse
        PyreverseRun(sys.argv[1:])
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\pyreverse\main.py", line 184, in __init__
        sys.exit(self.run(args))
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\pyreverse\main.py", line 209, in run
        writer.DotWriter(self.config).write(diadefs)
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\pyreverse\writer.py", line 38, in write
        self.write_classes(diagram)
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\pyreverse\writer.py", line 59, in write_classes
        self.printer.emit_node(i, **self.get_values(obj))
      File "C:\ProgramData\Anaconda3\lib\site-packages\pylint\pyreverse\writer.py", line 134, in get_values
        args = [arg.name for arg in func.args.args if arg.name != "self"]
    TypeError: 'NoneType' object is not iterable
    J'ai réussi à trouver un exemple minimal, à coup de commentage de gros bloc de code par dichotomie. Voici un code que Pyreverse digère bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import random
     
    class randompick():    
        def __init__(self):
            self.rrand = None
    et un autre qui produit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import random
     
    class randompick():    
        def __init__(self):
            self.rrand = random.Random()
    Donc manifestement il y a qqch qui se passe pas bien avec la lib random. Mais alors quoi ?
    Que puis je faire de plus de mon côté ? Je viens de détecter un bug pylint non ? Car avant ce truc fonctionnait, et j'ai du mettre à jour entre temps...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par lg_53 Voir le message
    Car avant ce truc fonctionnait, et j'ai du mettre à jour entre temps...
    Allez voir si le problème est déjà répertorié dans la buglist.
    Prenez le temps de vérifier que c'est bien la nouvelle version qui...
    Ouvrez un bug-report.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Merci pour ce retour wiztricks. Bon bah c'est parti pour la rédaction de mon premier report bug alors !

    https://github.com/PyCQA/pylint/issues/3589

    On verra bien ce que ça donne !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    Bon bah c'est parti pour la rédaction de mon premier report bug alors !
    çà se fête...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par lg_53 Voir le message
    et un autre qui produit l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import random
     
    class randompick():    
        def __init__(self):
            self.rrand = random.Random()
    Donc manifestement il y a qqch qui se passe pas bien avec la lib random. Mais alors quoi ?
    Que puis je faire de plus de mon côté ? Je viens de détecter un bug pylint non ? Car avant ce truc fonctionnait, et j'ai du mettre à jour entre temps...
    Perso chez-moi pyreverse analyse ce code très correctement (pylint 1.9.4, debian Buster)

    Le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    digraph classes {
    	graph [bb="0,0,275.5,567",
    		charset="utf-8",
    		rankdir=BT
    	];
    	node [label="\N"];
    	0	 [height=2.0278,
    		label="{_random.Random|\l|getrandbits()\lgetstate()\ljumpahead()\lrandom()\lseed()\lsetstate()\l}",
    		pos="71,494",
    		rects="0,543.5,142,566.5 0,519.5,142,543.5 0,421.5,142,519.5",
    		shape=record,
    		width=1.9722];
    	1	 [height=0.97222,
    		label="{a.randompick|rrand\l|}",
    		pos="218,494",
    		rects="160.5,505.5,275.5,528.5 160.5,482.5,275.5,505.5 160.5,459.5,275.5,482.5",
    		shape=record,
    		width=1.5972];
    	2	 [height=5.1389,
    		label="{random.Random|VERSION : int\lgauss_next : NoneType\l|betavariate()\lchoice()\lexpovariate()\lgammavariate()\lgauss()\lgetstate()\ljumpahead()\llognormvariate()\lnormalvariate()\lparetovariate()\lrandint()\lrandrange()\lsample()\lseed()\lsetstate()\lshuffle()\ltriangular()\luniform()\lvonmisesvariate()\lweibullvariate()\l}",
    		pos="144,185",
    		rects="52,346.5,236,369.5 52,308.5,236,346.5 52,0.5,236,308.5",
    		shape=record,
    		width=2.5556];
    	2 -> 0	 [arrowhead=empty,
    		arrowtail=none,
    		pos="e,88.157,421.38 100.38,369.65 96.955,384.14 93.621,398.25 90.5,411.46"];
    	2 -> 1	 [arrowhead=diamond,
    		arrowtail=none,
    		fontcolor=green,
    		label=rrand,
    		lp="216,395.5",
    		pos="e,209.73,459.47 188.22,369.65 195.14,398.56 201.71,425.99 206.91,447.7",
    		style=solid];
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Perso chez-moi pyreverse analyse ce code très correctement (pyint 1.9.4, debian Buster)
    Un peu de lecture du post original indique qu'il faut avoir installé au moins 2.4.4 pour gagner le gros lot... et qu'il est apparu après une mise à jour de...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Un peu de lecture du post original indique qu'il faut avoir installé au moins 2.4.4 pour gagner le gros lot... et qu'il est apparu après une mise à jour de...
    Ben voilà. Ca marche aussi avec une version de "au-moins" 2.4.4 que j'ai installée tout exprès pour toi.
    Nom : VirtualBox_xxx_05_05_2020_20_47_28.png
Affichages : 146
Taille : 192,2 Ko
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ben voilà. Ca marche aussi avec une version de "au-moins" 2.4.4 que j'ai installée tout exprès pour toi.
    Reste plus qu'à comprendre/faire marcher çà sur la machine de lg_53... qui tourne avec une autre version de Python, sur un autre OS....

    Dit autrement, tant qu'on ne sait pas reproduire le problème et qu'il y une différence, on recommence.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Est ce que vous pouvez tester avec la version 2.4.4 précisément ?

    Car il me semble, dans mes souvenirs du temps où ça marchait, j'étais en 1.9.qqch, donc que vous me disiez que dans cette version là ca fonctionne ca ne m'étonne pas.

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dit autrement, tant qu'on ne sait pas reproduire le problème et qu'il y une différence, on recommence.
    Dit autrement, peut-être que le souci ne vient pas que de pylint tout seul.

    Citation Envoyé par lg_53 Voir le message
    Est ce que vous pouvez tester avec la version 2.4.4 précisément ?
    J'y ai pensé aussi. Malheureusement j'ai essayé de trouver la version 2.4.4 sur le site de pylint sans succès. La version que j'ai installée l'a été avec la commande qu'ils indiquent sur leur site git clone https://github.com/PyCQA/pylint mais ça télécharge juste un clone de la dernière version (2.6.0) déposée sur github. J'aurais pensé trouver sur leur site des archives de version comme on en trouve sur d'autres outils (VirtuaBox, Postgres, etc).
    Maintenant si on pensait dans l'autre sens en se disant que si la dernière version de leur site (2.6.0) fonctionne aussi chez-toi, cela pourrait définitivement faire disparaitre ton souci. De toute façon je vois mal poser un rapport de bug sur la 2.4.4 alors que la 2.6.0 est disponible. Il y a de grandes chances qu'ils te répondent de télécharger la dernière version.

    Citation Envoyé par lg_53 Voir le message
    Car il me semble, dans mes souvenirs du temps où ça marchait, j'étais en 1.9.qqch
    Oui 1.9.4 sur une Debian installée depuis les DVD de base et jamais mise à jour (celle que j'utilise habituellement pour travailler). Ca a été mon premier essai indiqué dans mon premier post. Tu peux de ton côté essayer la même chose (tu te récupères une image VirtualBox comme on en trouve de partout). Et (accessoirement) j'ai tenté sur d'autres Linux qui, eux, sont mis à jour (Ubuntu, Xubuntu) mais ça reste quand-même 1.9.4. Il a fallu spécifiquement télécharger le source et l'installer manuellement pour avoir une version plus élevée (mais là alors trop élevée par rapport à toi).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    les versions sur PiPy ne conviennent pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Users\user>pip install pylint==
    ERROR: Could not find a version that satisfies the requirement pylint== (from versions: 0.15.2, 0.16.0, 0.18.0, 0.18.1, 0.19.0, 0.20.0, 0.21.0, 0.21.1, 0.21.2, 0.21.3, 0.22.0, 0.23.0, 0.24.0, 0.25.0, 0.25.1, 0.25.2, 0.26.0, 0.27.0, 0.28.0, 1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.3.0, 1.3.1, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.6.0, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.8.0, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 2.0.0.dev0, 2.0.0.dev1, 2.0.0.dev2, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.3.0.dev0, 2.3.0.dev1, 2.3.0.dev2, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5.0, 2.5.1, 2.5.2)
    ERROR: No matching distribution found for pylint==

  12. #12
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Merci pour vos retours.

    Alors fin mot de l'histoire :
    J'ai updaté pylint via conda. Il a installé la 2.5.0 et le problème n'apparait plus.
    Par contre quand je fais tourner Pyreverse sur tout mon code un autre bug apparait (qui n'apparaissait pas avant bien sûr!). Donc je suis reparti dans une identification d'un code minimal produisant le nouveau bug avec cette nouvelle version. Pour ceux que ça intéresse, j'ai ouvert un autre bug report du coup :

    https://github.com/PyCQA/pylint/issues/3602

    Merci à vous

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lg_53 Voir le message
    ...un autre bug apparait (qui n'apparaissait pas avant bien sûr!)
    Je suis allé voir ton bugreport et récupéré ton exemple. Malheureusement le bug demeure présent sur la 2.6.0.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Bah déjà si tu arrives aussi à le reproduire cela met à priori mon installation hors de cause. J'ai pas pris la 2.6 vu qu'elle n'est pas disponible via pip (ca s'arrete à 2.5.2, et j'obtiens le nouveau bug avec la 2.5.0 et la 2.5.2).

    Donc bon j'espère que ce sera fixé, car ça m'était bien utile.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème d'incompatibilité apparement
    Par stephane eyskens dans le forum Flash
    Réponses: 8
    Dernier message: 17/09/2003, 14h51
  2. Script assez difficile avec random
    Par LFC dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2003, 18h02
  3. [langage] random sur liste ou tableau
    Par martijan dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2003, 14h47
  4. [VB6] : pour faire un Randomize sous vb... merci
    Par delnic dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/01/2003, 15h49
  5. Random en Assembleur
    Par funx dans le forum Assembleur
    Réponses: 9
    Dernier message: 02/09/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo