Yusuke118 Signaler ce message Posté(e) August 23, 2019 Dans ma version, j'avais viré la variable "prenom" que j'estimais inutile pour tout intégrer à la variable "nom" : lignes 225/226 au sein de la fonction getIdentifiant : nom = matches[1] prenom = matches[2] remplacées par : nom = remove_accents(matches[1] + " " + matches[2]) et le return associé : return nom + ' ' + prenom, idu, cl, sexe devient juste : return nom, idu, cl, sexe En ayant au préalable déclaré bien sûr la fonction remove_accents en début de fichier après la déclaration des classes : def remove_accents(input_str): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.combining(c)]) qui nécessite la librairie unicodedata import unicodedata EDIT : J'ai aussi remplacé dans la fonction classementJoueur : print(s.encode(sys.stdout.encoding, errors='replace')) par : print(remove_accents(s)) afin de virer les accents dans les noms des adversaires affichés en fin de calcul La version de palmares.py intégrant ces modifications : ICI Partager ce message Lien à poster Partager sur d’autres sites
Nicolas Signaler ce message Posté(e) August 23, 2019 @Yusuke118 merci pour les infos. Effectivement retirer les accents permet d'éliminer les erreurs d'encodage en pratique mais je pense que la meilleure solution est de passer à une gestion plus saine de unicode/bytes, ce que Python 2 permet très difficilement. Du coup j'en profite pour proposer cette version de test basée sur Python 3 : https://github.com/coti/classement/archive/python3.zip À part la migration Python 3 c'est la version requests. J'ai fait quelques changements dessus récemment. Voir ici les derniers commits : https://github.com/coti/classement/commits/python3 Merci à @ggman23 pour avoir signalé le bug sur la normalisation des classements "Top XX". Les changements de code pour Python 2 sont visibles ici : https://github.com/coti/classement/commit/1634ca7b757ca3cae0ccb2417fe9ecd77cede8da Il y a 13 heures, Grumms a dit : La dernière mise à jour marche nickel chez moi. Possible de l'avoir en .exe ? Au boulot je peux pas installer Pyhton :/ J'ai seulement un Mac mais je suis en train de m'installer une VM Windows. Je vais essayer de faire un exe avec. 1 Partager ce message Lien à poster Partager sur d’autres sites
Paul91Essonne Signaler ce message Posté(e) August 23, 2019 il y a 48 minutes, Nicolas a dit : @Yusuke118 merci pour les infos. Effectivement retirer les accents permet d'éliminer les erreurs d'encodage en pratique mais je pense que la meilleure solution est de passer à une gestion plus saine de unicode/bytes, ce que Python 2 permet très difficilement. Du coup j'en profite pour proposer cette version de test basée sur Python 3 : https://github.com/coti/classement/archive/python3.zip À part la migration Python 3 c'est la version requests. J'ai fait quelques changements dessus récemment. Voir ici les derniers commits : https://github.com/coti/classement/commits/python3 Merci à @ggman23 pour avoir signalé le bug sur la normalisation des classements "Top XX". Les changements de code pour Python 2 sont visibles ici : https://github.com/coti/classement/commit/1634ca7b757ca3cae0ccb2417fe9ecd77cede8da J'ai seulement un Mac mais je suis en train de m'installer une VM Windows. Je vais essayer de faire un exe avec. Windows n'est même pas nécessaire avec pyinstaller il me semble, il faut juste l'installer avec pip. Tu pourrais très bien build sous mac si je ne me trompe pas Partager ce message Lien à poster Partager sur d’autres sites
Nicolas Signaler ce message Posté(e) August 23, 2019 il y a 1 minute, Paul91Essonne a dit : Windows n'est même pas nécessaire avec pyinstaller il me semble, il faut juste l'installer avec pip. Tu pourrais très bien build sous mac si je ne me trompe pas PyInstaller produit un exécutable pour la plate-forme sur laquelle il est lancé. Donc pour faire un exe il faut le lancer sous Windows. J’ai justement vérifié ce point parce que je suis sur Mac. Partager ce message Lien à poster Partager sur d’autres sites
Paul91Essonne Signaler ce message Posté(e) August 23, 2019 il y a 2 minutes, Nicolas a dit : PyInstaller produit un exécutable pour la plate-forme sur laquelle il est lancé. Donc pour faire un exe il faut le lancer sous Windows. J’ai justement vérifié ce point parce que je suis sur Mac. Ah ok bon à savoir je ne savais pas. Partager ce message Lien à poster Partager sur d’autres sites
Grumms Signaler ce message Posté(e) August 24, 2019 [mention=2686]Yusuke118[/mention] merci pour les infos. Effectivement retirer les accents permet d'éliminer les erreurs d'encodage en pratique mais je pense que la meilleure solution est de passer à une gestion plus saine de unicode/bytes, ce que Python 2 permet très difficilement. Du coup j'en profite pour proposer cette version de test basée sur Python 3 : [mention=2725]ggman23[/mention] pour avoir signalé le bug sur la normalisation des classements "Top XX". Les changements de code pour Python 2 sont visibles ici : https://github.com/coti/classement/commit/1634ca7b757ca3cae0ccb2417fe9ecd77cede8da J'ai seulement un Mac mais je suis en train de m'installer une VM Windows. Je vais essayer de faire un exe avec.Ha merci, c'est cool. Je veux bien tester avec Python 3 si les 2 versions peuvent cohabiter sur le même ordinateur. Partager ce message Lien à poster Partager sur d’autres sites
ggman23 Signaler ce message Posté(e) August 24, 2019 J'ai réussi à installer la version 3 et on peut toujours utiliser la version 2, en faisant : py -2 palmares.py ça lancera avec la version 2. Sinon j'ai testé la version python 3 pour une dizaine de palmares en profondeur 4 et ça marche trés bien Que faudrait il rajouter dans le code pour avoir dans le fichier txt qui est généré pour avoir tout le calcul du classement et pas seulement le résultat du classement obtenu et les classements des adversaires ? Je veux dire par exemple d'avoir dans le fichier txt ça en plus : ==> Classement proposé : 15/4 V = 12 (Nombre de victoires) : 15/5, 30/1, 30/2, 30, 30, 30/1, 30/2, 30/2, 30/4, 30/4, 30/1, 30/3 E = 0 (Nb de défaites à échelon égal) : I = 2 (Nb de défaites à échelon -1) : 15/5, 15/5 G = 6 (Nb de défaites à échelons <= -2 et par w.o à partir du 3e) : 30/3, 30, 30/1, 30/1, 30, 30 V - E - 2I - 5G : -22 Victoires prises en compte (8) : 15/5, 30, 30, 30/1, 30/1, 30/1, 30/2, 30/2 Bonif championnat indiv : 45 Points acquis : 160 - points nécessaires pour le maintien à 15/4 : 315 ==> Classement proposé : 15/5 V = 12 (Nombre de victoires) : 15/5, 30/1, 30/2, 30, 30, 30/1, 30/2, 30/2, 30/4, 30/4, 30/1, 30/3 E = 2 (Nb de défaites à échelon égal) : 15/5, 15/5 I = 3 (Nb de défaites à échelon -1) : 30, 30, 30 G = 3 (Nb de défaites à échelons <= -2 et par w.o à partir du 3e) : 30/3, 30/1, 30/1 V - E - 2I - 5G : -11 Victoires prises en compte (8) : 15/5, 30, 30, 30/1, 30/1, 30/1, 30/2, 30/2 Bonif championnat indiv : 45 Points acquis : 255 - points nécessaires pour le maintien à 15/5 : 305 ça ça doit etre le truc simple à faire, je pense qu'il faut juste rajouter un parametre dans : print("Nouveau classement: ", harm, " (après harmonisation) - ", new_cl, " (calculé)") # on crache la sortie du joueur dans un fichier fn = "{}_{}_p{}.txt".format(LICENCE, nom, profondeur) fd = open( fn, "w" ) fd.write(s) fd.close() return Mais je ne sais pas lequel ^^ Ou alors si possible d'avoir dans le fichier txt combien de points il manque pour le classement au dessus. Là dans mon exemple il manque 50 points au joueur pour se maintenir à 15/5 . Or a l'heure actuelle dans le fichier txt , on verra juste que son classement sera à 30, sans info de combien il manque, je trouve ça intéressant d'avoir cette info en plus dans le fichier txt. c'est simple à faire @Nicolas ou @yusuke118 ? Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 Il y a 5 heures, ggman23 a dit : ... Que faudrait il rajouter dans le code pour avoir dans le fichier txt qui est généré pour avoir tout le calcul du classement et pas seulement le résultat du classement obtenu et les classements des adversaires ? ... c'est simple à faire @Nicolas ou @yusuke118 ? En fait l'année dernière j'avais prévu de le faire sur la fin août / début septembre mais comme on a changé de saison + la sortie des nouveaux classements j'ai laissé tomber. De mémoire c'est plus compliqué que ça mais je peux me tromper... Il me semble qu'il fallait modifier pas mal de fonctions afin de leur passer les arguments/variables nécessaires (remontée des données gérées par le script classement.py vers le script palmares.py ) pour pouvoir récupérer le détail du calcul et l'écrire sur la fin. Partager ce message Lien à poster Partager sur d’autres sites
ggman23 Signaler ce message Posté(e) August 24, 2019 il y a 2 minutes, Yusuke118 a dit : En fait l'année dernière j'avais prévu de le faire sur la fin août / début septembre mais comme on a changé de saison + la sortie des nouveaux classements j'ai laissé tomber. De mémoire c'est plus compliqué que ça mais je peux me tromper... Il me semble qu'il fallait modifier pas mal de fonctions afin de leur passer les arguments/variables nécessaires (remontée des données gérées par le script classement.py vers le script palmares.py ) pour pouvoir récupérer le détail du calcul et l'écrire sur la fin. ah mince moi qui pensait que ça serait facile ^^ Tans pis alors Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 Il y a 16 heures, Nicolas a dit : Merci à @ggman23 pour avoir signalé le bug sur la normalisation des classements "Top XX". Tu l'as corrigé ou pas ? Car en python27 j'ai eu une erreur sur un calcul d'un joueur en profondeur 3 (avec un joueur du Top100 dans les palmares récupérés) qui remonte une erreur de type KeyError: u'Top' Palmarès récupérés pour 14013 joueurs Traceback (most recent call last): File "C:\Python27\palmares.py", line 634, in <module> main() File "C:\Python27\palmares.py", line 599, in main recupClassement(login, password, licence, profondeur, args.details) File "C:\Python27\palmares.py", line 538, in recupClassement profondeur - min(details_profondeur, profondeur)) File "C:\Python27\palmares.py", line 479, in classementJoueur nc, harm, s = classementJoueur(d.joueur, sexe, profondeur - 1, details_profondeur) File "C:\Python27\palmares.py", line 479, in classementJoueur nc, harm, s = classementJoueur(d.joueur, sexe, profondeur - 1, details_profondeur) File "C:\Python27\palmares.py", line 495, in classementJoueur cl, harm = calculClassement(myV, myD, sexe, joueur.classement, champ, impression) File "C:\Python27\classement.py", line 583, in calculClassement classementPropose = classementPropose1erTour( myVictoires, myClassement ) File "C:\Python27\classement.py", line 451, in classementPropose1erTour grosse = plusGrosseVictoire( myVictoires ) File "C:\Python27\classement.py", line 418, in plusGrosseVictoire sorted = sortVictoires( myVictoires ) File "C:\Python27\classement.py", line 398, in sortVictoires return sorted(myVictoires, key=lambda v: (classementNumerique[v[0]], v[2]), reverse=True) File "C:\Python27\classement.py", line 398, in <lambda> return sorted(myVictoires, key=lambda v: (classementNumerique[v[0]], v[2]), reverse=True)KeyError: u'Top' Partager ce message Lien à poster Partager sur d’autres sites
+trollix Signaler ce message Posté(e) August 24, 2019 il y a 57 minutes, Yusuke118 a dit : pouvoir récupérer le détail du calcul et l'écrire sur la fin. On peut aussi piper (rediriger) le résultat danst un fichier: ./commande >fichier.txt Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 il y a 15 minutes, trollix a dit : On peut aussi piper (rediriger) le résultat danst un fichier: ./commande >fichier.txt Oui mais c'est pas pratique et pendant ce temps là tu ne vois pas ce qu'il se passe sur la console. J'ai plus vite fait de copier-coller le resultat et de le mettre manuellement dans le fichier créé par le script Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 il y a une heure, Yusuke118 a dit : Tu l'as corrigé ou pas ? Car en python27 j'ai eu une erreur sur un calcul d'un joueur en profondeur 3 (avec un joueur du Top100 dans les palmares récupérés) qui remonte une erreur de type KeyError: u'Top' @Nicolas j'ai relancé le meme calcul en profondeur 3 via la version portée pour Python3 ( avec Python3.7.4 ) et c'est passé. Tu as corrigé le bug dans tes versions palmares.py/classement.py pour Python3 mais pas celles pour Python2 ou c'est autre chose ? Partager ce message Lien à poster Partager sur d’autres sites
+trollix Signaler ce message Posté(e) August 24, 2019 il y a 3 minutes, Yusuke118 a dit : Oui mais c'est pas pratique et pendant ce temps là tu ne vois pas ce qu'il se passe sur la console. J'ai plus vite fait de copier-coller le resultat et de le mettre manuellement dans le fichier créér par le script Et avec tee: $ ls -a | tee output.file $ ./commande.py | tee resultat.txt 1 Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 à l’instant, trollix a dit : Et avec tee: $ ls -a | tee output.file $ ./commande.py | tee resultat.txt Je suis sous windows là et la plupart des classimiens sont sous Windows ou MAC. Il faut une solution qui convienne à tout le monde. sous windows faut soit récupérer la commande sous forme d'Unix-like ou bien utiliser un environnement type Cygwin ou encore une VM Linux... Partager ce message Lien à poster Partager sur d’autres sites
+trollix Signaler ce message Posté(e) August 24, 2019 il y a 2 minutes, Yusuke118 a dit : Je suis sous windows là et la plupart des classimiens sont sous Windows ou MAC. Il faut une solution qui convienne à tout le monde. sous windows faut soit récupérer la commande sous forme d'Unix-like ou bien utiliser un environnement type Cygwin ou encore une VM Linux... Oui, c'est palliatif, en attendant. C'est mieux de le traiter au niveau du script. Sinon, je suis pas sous linux mais sous mac, dans le terminal, et ça marche ... ...bien. en attendant. C'est vrai que y'a beaucoup de windows. 1 Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 ah je savais pas qu'il y avait un terminal sous MAC qui émulait un environnement unix Partager ce message Lien à poster Partager sur d’autres sites
+trollix Signaler ce message Posté(e) August 24, 2019 il y a 9 minutes, Yusuke118 a dit : ah je savais pas qu'il y avait un terminal sous MAC qui émulait un environnement unix C'est pas une émulation. Macos est bati sur un noyau unix. BSD 1 Partager ce message Lien à poster Partager sur d’autres sites
Yusuke118 Signaler ce message Posté(e) August 24, 2019 il y a 8 minutes, trollix a dit : C'est pas une émulation. Macos est bati sur un noyau unix. BSD Ah ben tiens j'aurais pas cru, je ne m'étais jamais penché sur la question. Ca explique certaines choses Partager ce message Lien à poster Partager sur d’autres sites
+trollix Signaler ce message Posté(e) August 24, 2019 il y a 9 minutes, Yusuke118 a dit : Ca explique certaines choses python natif par ex. Et tout le système de droits. Partager ce message Lien à poster Partager sur d’autres sites
John Dunbar Signaler ce message Posté(e) August 24, 2019 il y a 36 minutes, trollix a dit : Oui, c'est palliatif, en attendant. C'est mieux de le traiter au niveau du script. Sinon, je suis pas sous linux mais sous mac, dans le terminal, et ça marche ... ...bien. en attendant. C'est vrai que y'a beaucoup de windows. Tant pis pour eux Partager ce message Lien à poster Partager sur d’autres sites
Nicolas Signaler ce message Posté(e) August 24, 2019 il y a une heure, Yusuke118 a dit : @Nicolas j'ai relancé le meme calcul en profondeur 3 via la version portée pour Python3 ( avec Python3.7.4 ) et c'est passé. Tu as corrigé le bug dans tes versions palmares.py/classement.py pour Python3 mais pas celles pour Python2 ou c'est autre chose ? C’est bien le bug que tu as indiqué plus haut J’ai fait la correction sur la branche master et je l’ai incluse dans requests et python3 aussi. Partager ce message Lien à poster Partager sur d’autres sites
Grumms Signaler ce message Posté(e) August 24, 2019 Mince j'ai pas suivi, où est-ce qu'on récupère la version python 3 ? Partager ce message Lien à poster Partager sur d’autres sites
Nicolas Signaler ce message Posté(e) August 24, 2019 il y a 6 minutes, Grumms a dit : Mince j'ai pas suivi, où est-ce qu'on récupère la version python 3 ? https://github.com/coti/classement/archive/python3.zip Pour info ce lien c'est celui qu'on obtient quand on sélectionne la branche souhaitée puis qu'on clique sur le bouton vert ("Clone or download") en haut à droite de https://github.com/coti/classement Partager ce message Lien à poster Partager sur d’autres sites
Grumms Signaler ce message Posté(e) August 24, 2019 Merci bcp. Partager ce message Lien à poster Partager sur d’autres sites