logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 09-02-2024 16:15:43

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Python et PEP8

Ce message était à l’origine posté en réponse à celui-ci : Aide Python : conversion de python2 vers python3 pour un script DFiso.

---

Elzen a écrit :

le code n'a pas trop l'air de respecter PEP8, perso ça ne me dérange pas outre mesure, mais de vrais devs Python pourraient râler smile


La PEP8 est naze, et les vrais devs Python aussi big_smile


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#2 09-02-2024 16:53:17

Elzen
Modérateur
Distrib. : Debian Sid GNU/Linux
Noyau : amd64 (à jour le vendredi)
(G)UI : Touhy
Inscription : 01-07-2014

Re : Python et PEP8

Y a quand même quelques trucs intéressants dedans. Du style, espacer un peu les paramètres lors de l'appel à une fonction ou de sa définition pour aérer un peu, ou essayer d'éviter les lignes de 10km de long ! tongue

Hors ligne

#3 09-02-2024 17:27:51

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Python et PEP8

Oh, pour ça j’ai tendance à séparer les paramètres par des sauts de ligne plutôt que simplement des espaces. Pas besoin d’une norme soi-disant-optionnelle-mais-on-t’insulte-si-tu-ne-la-suis-pas pour aérer le code intelligemment.

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#4 09-02-2024 21:13:17

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : Python et PEP8

Pour la mise en forme j’utilise « black » : https://packages.debian.org/stable/python/black

black monscript.py

et hop ! Plus nécessaire de se fatiguer tout mon code devient « devs naze PEP 8 compliant » tongue


Tousse antique Ovide !

Hors ligne

#5 09-02-2024 21:34:51

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Python et PEP8

black est probablement un des outils qui représente le mieux cette hypocrisie des normes soit-disant optionnelles mais qui sont imposées en pratique. Jamais on ne me verra l’utiliser de ma propre initiative (si on me paie suffisamment cher, je veux bien transiger).

Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#6 09-02-2024 22:59:09

arpinux
CA Debian-Facile
Lieu : Montréal d'aude
Distrib. : nakeDeb
Noyau : Linux 6.1 amd64
(G)UI : sway - i3wm - fluxbox
Inscription : 30-06-2016
Site Web

Re : Python et PEP8

salut et merci @Elzen ! big_smile
ça fonctionne en mettant à jour les appels aux différents thèmes installés
j'ai supprimé l'appel au wall aussi.
bref, je teste les différents thèmes possibles en modifiant le script au fur et à mesure maintenant que j'ai capté la structure.

je reviens avec le script à tester sur une DFiso dans la soirée smile ... sur le bon fil de discussion tongue

Dernière modification par arpinux (09-02-2024 23:39:50)


nous sommes tous différents ... c'est notre point commun ...
Association Debian-Facile - Les cahiers du débutant - ISO Debian-Facile - 3hg - nakeDeb
GNU/Linux©2006-2024

Hors ligne

#7 10-02-2024 09:16:07

MPython Alaplancha
Membre
Distrib. : Debian12 Mate
Inscription : 17-01-2024

Re : Python et PEP8

Bonjour,
lol


                        #La PEP8 est naze
TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1         ="Hello"
def CHANGELENOMDUTEXTEDULABELDULAYOUTCONCERNANTLAMISEENPAGE_1(Variabledutextdulabelconcernantlamiseenpage_1):
                                    import     time
                                    for compte_un_deux_trois in range(3)         :
                                                                        TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1=   Variabledutextdulabelconcernantlamiseenpage_1
                                                                        print(              TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1        )
                                                                        time.sleep(                  1
                                                                                                     )

CHANGELENOMDUTEXTEDULABELDULAYOUTCONCERNANTLAMISEENPAGE_1(                  'MDR'
                                                                            )

"""cette fonct fé ceci mé
pas cela.voir le d
étail dans la doc"""

 

kernal_panic.gif


Acheter plus pour jeter plus!

Hors ligne

#8 10-02-2024 17:30:41

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : Python et PEP8

J’ai suivi la recommandation de vv222, j’ai ajouté un alias dans mon fichier .bash_aliases :

alias hypocrisie='black'


Un petit coup d’hypocrisie et hop!

hypocrisie LA_PEP8_est_naze.py


# La PEP8 est naze
TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1 = "Hello"


def CHANGELENOMDUTEXTEDULABELDULAYOUTCONCERNANTLAMISEENPAGE_1(
    Variabledutextdulabelconcernantlamiseenpage_1,
):
    import time

    for compte_un_deux_trois in range(3):
        TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1 = (
            Variabledutextdulabelconcernantlamiseenpage_1
        )
        print(TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1)
        time.sleep(1)


CHANGELENOMDUTEXTEDULABELDULAYOUTCONCERNANTLAMISEENPAGE_1("MDR")

"""cette fonct fé ceci mé
pas cela.voir le d
étail dans la doc"""

 



On y voit plus clair même si ce n’est pas miraculeux. Exeunt le style de nommage des variables et fonction, la position du docstring, etc. smile

Dernière modification par Philou92 (10-02-2024 17:32:28)


Tousse antique Ovide !

Hors ligne

#9 10-02-2024 18:09:15

Anonyme
Invité

Re : Python et PEP8

Vous me faite rire avec le formatage des sources !
Il y a bien longtemps j'avais développé du code en pascal, surtout chez moi par plaisir et un peu au bureau pour déverminage.
Comme il y avait des heures payées, ma boite a exigé les sources. Très fâché, grrr...
Donc je me suis écrit un soft pourrisseur de sources, le texte était compacté au maxi, structure quasi invisible, commentaires supprimés, variables et fonctions renommées mais bien sûr tout restait compilable sans la moindre erreur. Cette version de code source n'a certainement jamais resservi big_smile.
Puis j'ai aussi écrit un "enjoliveur" de code, c'était plus facile, moins drôle mais ça faisait joli.

#10 11-02-2024 17:18:50

MPython Alaplancha
Membre
Distrib. : Debian12 Mate
Inscription : 17-01-2024

Re : Python et PEP8

Philou92 a écrit :


On y voit plus clair même si ce n’est pas miraculeux.


En effet pas de miracle en vue wink
Il est préférable de passer par un vérificateur de code comme flake8, ou pylint (si son IDE n'en dispose pas ).
Si je passe le code LA_PEP8_est_naze.py (l'original) à la moulinette de pylint voici le retour:

fab@fab-Standard-PC-Q35-ICH9-2009:~$ pylint LA_PEP8_est_naze.py
************* Module LA_PEP8_est_naze
LA_PEP8_est_naze.py:3:0: C0301: Line too long (109/100) (line-too-long)
LA_PEP8_est_naze.py:4:0: W0311: Bad indentation. Found 36 spaces, expected 4 (bad-indentation)
LA_PEP8_est_naze.py:5:0: W0311: Bad indentation. Found 36 spaces, expected 4 (bad-indentation)
LA_PEP8_est_naze.py:6:0: C0301: Line too long (164/100) (line-too-long)
LA_PEP8_est_naze.py:6:0: W0311: Bad indentation. Found 72 spaces, expected 8 (bad-indentation)
LA_PEP8_est_naze.py:7:0: C0301: Line too long (144/100) (line-too-long)
LA_PEP8_est_naze.py:7:0: W0311: Bad indentation. Found 72 spaces, expected 8 (bad-indentation)
LA_PEP8_est_naze.py:8:0: C0301: Line too long (102/100) (line-too-long)
LA_PEP8_est_naze.py:8:0: W0311: Bad indentation. Found 72 spaces, expected 8 (bad-indentation)
LA_PEP8_est_naze.py:9:0: C0301: Line too long (102/100) (line-too-long)
LA_PEP8_est_naze.py:1:0: C0114: Missing module docstring (missing-module-docstring)
LA_PEP8_est_naze.py:1:0: C0103: Module name "LA_PEP8_est_naze" doesn't conform to snake_case naming style (invalid-name)
LA_PEP8_est_naze.py:2:0: C0103: Constant name "TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1" doesn'
t conform to UPPER_CASE naming style (invalid-name)
LA_PEP8_est_naze.py:3:0: C0116: Missing function or method docstring (missing-function-docstring)
LA_PEP8_est_naze.py:3:0: C0103: Function name "CHANGELENOMDUTEXTEDULABELDULAYOUTCONCERNANTLAMISEENPAGE_1" doesn't conform to snake_case naming style (invalid-name)
LA_PEP8_est_naze.py:3:62: C0103: Argument name "Variabledutextdulabelconcernantlamiseenpage_1" doesn'
t conform to snake_case naming style (invalid-name)
LA_PEP8_est_naze.py:6:72: W0621: Redefining name 'TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1' from outer scope (line 2) (redefined-outer-name)
LA_PEP8_est_naze.py:4:36: C0415: Import outside toplevel (time) (import-outside-toplevel)
LA_PEP8_est_naze.py:6:72: C0103: Variable name "TEXTduLabelDuLAYOUTconcernantLaMiseENPage_1" doesn't conform to snake_case naming style (invalid-name)
LA_PEP8_est_naze.py:5:40: W0612: Unused variable '
compte_un_deux_trois' (unused-variable)
LA_PEP8_est_naze.py:14:0: W0105: String statement has no effect (pointless-string-statement)

-----------------------------------
Your code has been rated at 0.00/10

fab@fab-Standard-PC-Q35-ICH9-2009:~$


Comme on peut le voir le code est noté 0/10. Le but est d'avoir après correction une note proche du 10/10 (pylint est particulièrement pointilleux, trop peut être)

Le code corrigé par 'black' est aussi noté 0/10... tongue


Acheter plus pour jeter plus!

Hors ligne

#11 11-02-2024 17:40:22

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Python et PEP8

MPython Alaplancha a écrit :

Le but est d'avoir après correction une note proche du 10/10


Ça dépend pour quoi, moi par exemple je me fous complètement des signalements du type "Line too long" ou "Bad indentation". Tout simplement parce que je considère (contrairement aux concepteurs de la PEP8 ou de ceux de black) que le développeur est suffisamment intelligent pour faire les meilleurs choix.


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#12 11-02-2024 18:30:41

MPython Alaplancha
Membre
Distrib. : Debian12 Mate
Inscription : 17-01-2024

Re : Python et PEP8

Libre à toi de respecter ou non la PEP8, l'interpréteur python ne t'y contraindra pas.
La raison d'établir des conventions de codage, d'établir 'les bonnes pratiques', facilite surtout la collaboration de plusieurs sur personnes  (dev) sur un projet. ça facilite aussi la maintenance du code.( Si Y doit maintenir le code de X, mais que X à ses propres conventions de codage, ça peut devenir vite galère...) .
Après tu peux déplorer certains choix de la PEP, n'oublie pas cependant que ces choix ne sont pas le fruit d'une personne, mais du fruit de la collaboration de la communauté de python.

Dernière modification par MPython Alaplancha (11-02-2024 20:07:05)


Acheter plus pour jeter plus!

Hors ligne

#13 11-02-2024 21:33:20

vv222
Administrateur
Lieu : Bretagne
Distrib. : Debian Sid
(G)UI : sway
Inscription : 18-11-2013
Site Web

Re : Python et PEP8

MPython Alaplancha a écrit :

Libre à toi de respecter ou non la PEP8, l'interpréteur python ne t'y contraindra pas.


Justement, c’est ce que je trouve hypocrite : l’interpréteur te laisse faire ce que tu veux, mais la totalité de la communauté Python va te tomber dessus si tu oses ne pas suivre la PEP8 pour un logiciel que tu partages publiquement. Quand une recommandation est imposée via ce genre de pression, je ne pense pas que le terme "recommandation" reste approprié.

MPython Alaplancha a écrit :

Après tu peux déplorer certains choix de la PEP, n'oublie pas cependant que ces choix ne sont pas le fruit d'une personne, mais du fruit de la collaboration de la communauté de python.


C’est bien pour ça que je ne suis pas fâché contre une personne en particulier, mais contre l’ensemble de la communauté Python wink


Jouer sous Debian ? Facile !

Ceterum censeo Barum esse delendam

Hors ligne

#14 12-02-2024 13:36:14

MPython Alaplancha
Membre
Distrib. : Debian12 Mate
Inscription : 17-01-2024

Re : Python et PEP8

vv222 a écrit :

mais la totalité de la communauté Python va te tomber dessus si tu oses ne pas suivre la PEP8 pour un logiciel que tu partages publiquement. Quand une recommandation est imposée via ce genre de pression, je ne pense pas que le terme "recommandation" reste approprié.


Nous avons une litanie, un genre de mantra que nous récitons chaque matin lors de nos ablutions:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you'
re Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let'
s do more of those!
>>>


traduction:

>>> import this
Le Zen de Python, par Tim Peters

Le beau est mieux que le laid.
L'explicite vaut mieux que l'implicite.
La simplicité est préférable à la complexité.
Complexe vaut mieux que compliqué.
Plat vaut mieux qu'imbriqué.
Mieux vaut une structure éparse qu'une structure dense.
La lisibilité compte.
Les cas particuliers ne sont pas assez spéciaux pour enfreindre les règles.
Même si l'aspect pratique l'emporte sur la pureté.
Les erreurs ne devraient jamais être passées sous silence.
À moins qu'elles ne soient explicitement réduites au silence.
En cas d'ambiguïté, refusez la tentation de deviner.
Il doit y avoir une - et de préférence une seule - façon évidente de procéder.
Même si cette façon n'est pas évidente au premier abord, à moins d'être hollandais.
Mieux vaut maintenant que jamais.
Bien que jamais soit souvent mieux que *tout de suite*.
Si la mise en œuvre est difficile à expliquer, c'est une mauvaise idée.
Si l'implémentation est facile à expliquer, c'est peut-être une bonne idée.
Les espaces de noms sont une très bonne idée - faisons-en plus !
>>>

Traduit avec DeepL.com (version gratuite)


Ceci explique peut être cela lol

C’est bien pour ça que je ne suis pas fâché contre une personne en particulier, mais contre l’ensemble de la communauté Python wink


Tous contre un , un contre tous! cool


Acheter plus pour jeter plus!

Hors ligne

Pied de page des forums