1

Pen^2 a souhaité poursuivre une discussion dérivée dans un nouveau sujet. La discussion initiale a eu lieu dans le sujet topics/120904-les-questions-a-la-con/207#post-6190 tandis que la discussion dérivée continue dans le sujet topics/187232-portage-python-2-pyton-3 où les messages en rapport ont été copiés.
avatarBen, bouh, quoi :D

2

À quel moment on est sûr qu'un code python2 est bien porté en python3 ?
C'est quand même pas une validation au runtime, si ? confus

3

Je te préconise un audit de code par Flankerware, inc.
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

4

Oui déjà j'ai installé pycharm, corrigé trois ou quatre erreurs triviales détectées par l'analyseur (print, xrange, etc) et... C'est tout ?

5

Pen^2 (./6185) :
À quel moment on est sûr qu'un code python2 est bien porté en python3 ?
C'est quand même pas une validation au runtime, si ? confus
Si, si ^^ (et il n'y a pas tellement d'autres façons de faire pour un langage dynamique)

Sinon, il y a les problèmes de string et de bytestring (le plus tordu).
En Python 2, les bytestrings sont "toto" et les string sont u"toto" (" et ' sont identiques)
En Python 3, les bytestrings sont b'toto' et les string sont 'toto'. C'est beaucoup mieux, vu que les bytestring sont des chaînes d'octets (donc très rarement utiles sauf quand on fait du réseau) et les string sont des chaînes de caractères unicode (utiles 99% du temps).



sauf qu'à cause de ce préfixe u, les gens utilisaient des bytestrings en Python 2 au lieu de strings.

Tu as 2to3 qui peut faire la conversion pour toi, ça fonctionne plutôt pas mal smile
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

6

OK, merci happy
Vu que je dois porter un petit programme que je ne connais pas, ça va être pratique grin

7

N'hésite pas à faire un topic dédié smile
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

8

En pratique, ça donne un bordel comme https://github.com/kkofler/livecd-tools/pull/1. C'est vraiment un langage pourri.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

Merci pour ta contribution utile ! top
avatarZeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

10

Kevin Kofler (./8) :
En pratique, ça donne un bordel comme https://github.com/kkofler/livecd-tools/pull/1. C'est vraiment un langage pourri.
Au lieu de mettre un paquet de commits en disant que c'est pourri, peut-être une argumentation plus poussée soutiendrait mieux tes arguments. Au passage, je ne fais pas de python, et je pense que c'est un des seul langage où, avant toi, je n'ai jamais entendu quelqu'un dire que c'était nul (non pas que ça peut tout faire, mais ça fait bien ce que ça fait).

11

Dans un langage bien fait, les erreurs de type sont détectés à la compilation, on ne se rend pas compte en testant que ça déconne partout (parce qu'en plus les types de base ont changé d'une version à une autre, donc plein de fonctions de la bibliothèque standard ne renvoient ou n'acceptent plus le type attendu par le code).
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

12

Kevin c'est du troll pur, premier et dernier avertissement avant kick.

13

Bon, 2to3 m'a aussi indiqué des list() explicites à ajouter à la sortie des .keys() des mapsdicts (si j'ai compris c'est pas super nécessaire si on ne fait qu'itérer sur le dict_key vu que c'est déjà itérable ?), quelques noms de package à mettre à jour, ainsi qu'une nouvelle feature du langage avec le key not in dict et encore une ou deux babioles. Sinon rien de bien spécial.

Il restera à voir les tests réels — je ne sais pas trop utiliser l'outil en question grin

14

Est-il conséquent comme programme ?
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15

Non c'est tout petit, de l'ordre de 1500 lignes.

16

Mmmm mmm.
Pycharm n'a pas l'air de transmettre le path au programme débugué... pratique grin
https://youtrack.jetbrains.com/issue/PY-17816 (sur un linux ici, mais ça a l'air d'être le même problème)
Quelqu'un confirme ?

En tout cas en créant une variable d'environnement PATH dont le contenu est ce que j'ai dans un terminal, ça fonctionne cheeky (du moins le batch de calculs démarre, on verra demain ce qu'il en est hehe)

17

rigolo grin
J'ai peut-être le problème et je ne m'en suis pas rendu compte, va falloir que je teste grin
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

18

Pour info, on peut l'afficher avec ces lignes :
print(sys.path)
print(os.environ.get("PATH"))
Dans le programme, ça ne fonctionne pas (il n'y a que des trucs en rapport avec le python), alors que dans la console de pycharm ça fonctionne.
(non, ne me remercie pas, c'est normal que je partage mon expertise, ça me fait plaisir embarrassed)

19

Il y a effectivement une belle différence entre les deux grin

Cela dit, ça ne me choque pas qu'il ne charge pas ~/.bashrc (qui peut faire plein de choses sans rapport avec le $PATH, et qui de toute façon peut ne servir à rien — par exemple il faudrait utiliser ~/.zshrc chez moi)
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

20

Oui enfin si j'ai bien compris il y a une checkbox qui permet de dire explicitement d'hériter de l'environnement (j'ai pas le nom exact, c'est toujours en train de tourner et je ne peux pas ouvrir la fenêtre).
Et je ne lui demande pas d'exécuter à nouveau .*shrc mais juste de passer l'environnement dont il a lui même hérité tongue

21

notes persos :
différence réelle entre tuple et liste ? (http://stackoverflow.com/questions/626759/whats-the-difference-between-lists-and-tuples ?)

22

https://www.python.org/dev/peps/pep-0484/ hehe
Curieusement un python 3.4 n'a pas l'air de râler même si j'ai cru comprendre que c'était du python 3.5+ cheeky (mais si on passe n'importe quoi ça n'a pas l'air de râler non plus à l'exécution donc ça n'a pas l'air de vérifier grand chose cry (mais pycharm a l'air de faire une différence, parce que j'avais ajouté un type de retour de type object à mon constructeur et je me demandais pourquoi il ne trouvais pas mes méthodes en autocomplétion grin))

Si je décidais de coder en python 3.6 (ou au moins 3.5) ce serait risqué pour releaser en 3.4 j'imagine ? #trihum#

23

En fait, tu parles des annotations, qui existent depuis longtemps (3.0).
Cependant, les annotations n'avaient aucun sens particulier, elles étaient uniquement destinées au développeur.
Comme tout le monde les utilise uniquement comme indicateur de type, les IDE (enfin, PyCharm) les ont pris en compte pour indiquer le type. Pour améliorer l'idée, 3.5 ajoute des objets spécifiques pur permettre de mieux spécifier les types. Mais ça reste totalement facultatif : si tu ne respectes pas tes indications, ce n'est pas grave.

Du coup, si tu utilises ces objets supplémentaires en 3.4, ça va planter. Sinon, ça va fonctionner ^^

Beaucoup de gens cherchent à avoir un Python facultativement typé, soit pour les perfs, soit (surtout) pour les garanties offertes.
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

24

Les développeurs de Python sont enfin en train de comprendre que le duck typing à l'exécution est une horreur.
avatarMes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

25

(T'es lourd)
avatar<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

26

Suffit de mettre un filtre et de faire de l'ignoration active
avatarProud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

27

flanker (./23) :
En fait, tu parles des annotations, qui existent depuis longtemps (3.0).
Ah ? Bien, tant mieux grin
flanker (./23) :
Cependant, les annotations n'avaient aucun sens particulier, elles étaient uniquement destinées au développeur.
Comme tout le monde les utilise uniquement comme indicateur de type, les IDE (enfin, PyCharm) les ont pris en compte pour indiquer le type.
OK, merci !
flanker (./23) :
Pour améliorer l'idée, 3.5 ajoute des objets spécifiques pur permettre de mieux spécifier les types. Mais ça reste totalement facultatif : si tu ne respectes pas tes indications, ce n'est pas grave.
OK, je n'ai pas compris ce que 3.5 apportait sur le sujet alors, je vais me renseigner cheeky
flanker (./23) :
Du coup, si tu utilises ces objets supplémentaires en 3.4, ça va planter. Sinon, ça va fonctionner ^^
Oui je m'en doutais un peu grin Mais vu que les annotations existaient déjà depuis 3.0, aucun intérêt de prendre des risques ^^

Merci !

28

A priori, il n'est pas possible de breaker des boucles imbriquées ? (avec de boucles nommées notamment)
Les solutions workarounds proposés ont l'air d'être de faire des fonctions et d'utiliser des return (ça me semble compliqué) ou des try/catch/raise.
Vous confirmez ?
Ça me semble un peu dommage, mais c'est peut-être une question d'habitude :/

29

Pour info, j'ai un fichier à parser, qui est défini en plusieurs blocs imbriqués.
Quand un bloc se termine, j'aimerais continuer le bloc frère (de même nature et de même niveau), ou continuer le bloc parent.
Vous feriez ça comment en restant élégant ? (ie sans multiplier les booléens)

30

En utilisant la récursivité, c'est faisable ?
avatar<<< Kernel Extremist©®™ >>>
Feel the power of (int16) !