08:29 <discord_afpy> <Andy K (boss dreamer ou pas)> Bonjour
09:06 <vstinner> debnet: +1 pour l'ascenseur spatial
09:07 <debnet> Malheureusement je crois que c'est scientifiquement très improbable un ascenseur spatial.
09:07 <debnet> Rien que le poids et la tension du câble est irréaliste.
09:19 <vstinner> debnet: la la la, je n'écoute pas, i want to believe
09:19 <debnet> Moi aussi, moi aussi...
09:19 <vstinner> le seul truc qui me fait flipper est un avion qui coupe le cable en passant trop près :-D
09:20 <debnet> @vstinner Un avion c'est improbable, y aura une zone d'exclusion autour, mais un débris spatial c'est beaucoup plus probable. Avec 30.000km/h de moyenne pour certains débris, ça a l'énergie cinétique suffisante pour sectionner même un câble en tungstène.
09:26 <vstinner> debnet: ça donne moins envie d'organiser un PyconFR dans l'espace si des débris s'invitent dans la fête
09:37 <Mindiell> on peut le faire dans une espace, mais ça va être serré.
09:45 <entwanne> surtout si c'est une espace fine
09:53 <vstinner> pour éviter les soucis avec les avions et débris spatiaux, vaudrait mieux une espace insécable
10:20 <discord_afpy> <grewn0uille> Si c’est une espace insécable ça passe
10:23 <entwanne> parce que ça passe ou ça casse, mais que ça ne peut pas casser ?
10:28 <discord_afpy> <grewn0uille> ça peut pas casser
10:43 <Mindiell> moi, je dis "ça tape!"
10:47 <debnet> Ah ah.
10:47 <debnet> Elle était chouette cette conférence, j'aurais aimé qu'elle dure plus longtemps et qu'on aille au fond des situations pourries de Django. :D
10:48 <debnet> Roxanne elle a une énergie de fou quand elle présente.
10:48 <discord_afpy> <reinula> Mais tu parles trop aussi !
10:49 <entwanne> j'ai loupé une référence je crois
10:49 <debnet> Ouais je sais, ça m'a été reproché, ça aurait été extraordinaire en mode atelier je pense.
10:50 <debnet> @entwanne Roxanne a donné une conférence sur les subtilités de l'ORM Django, elle faisait ça en mode quizz en présentant des bouts de code et l'audience devait déterminer si ça faisait une requête en base de données ou pas, et elle utilisait l'expression "ça tape ou ça tape pas".
10:50 <discord_afpy> <reinula> Oh, ça avait l'air fun.
10:50 <entwanne> Ah d'accord, merci pour l'explication
10:50 <debnet> Ouais ça l'était !
10:50 <discord_afpy> <reinula> C'était quand déjà ?
10:51 <misc> les quizz, c'est pas mal pour impliquer l'audience
10:51 <debnet> Dimanche après midi si je me souviens bien.
10:51 <debnet> @misc Ouais mais je ne sais pas tenir ma langue quand c'est comme ça, j'ai encore du travail à faire là dessus. ^^
10:51 <discord_afpy> <reinula> Ah oui, je faisais surveillance de conférence à ce moment-là.
10:52 <discord_afpy> <reinula> Le pire c'est qu'il me reproche moi quand j'interromps les autres 😦
10:52 <debnet> Ouais je suis intenable...
10:52 <discord_afpy> <reinula>
11:22 <entwanne> Pauvre Pierre
11:37 <misc> debnet: si je fait un quizz et que ça arrive, je t'envoie au tableau et je te donne le titre de souffre douleur :p
11:39 <misc> (en fait, ça peut même être drole de préparer ça à l'avance, style "l'audience rejoint la scéne")
11:39 <misc> vstinner: comme dans ton film favori, Yannick de Quentin Dupuis :p
11:41 <discord_afpy> <melcore> Dupieux *
11:53 <discord_afpy> <bronxae> Toi aussi, tu gagnes une étoile pour ton sérieux 🌸
11:55 <discord_afpy> <bronxae> Merciiiii 🌸 ça m’a fait plaisir de présenter !
11:56 <discord_afpy> <bronxae> Le martelage médiatique a été efficace 👌 😛
12:25 <discord_afpy> <melcore> J’ai mangé flammenkueche à volonté hier soir. Petit souvenir de la pycon
12:49 <vstinner> misc: Yannick est sur Netflix
12:50 <vstinner> misc: tu peux le revoir en boucle maintenant
12:50 <discord_afpy> <reinula> Je veux plus voir une tarte flambée avant longtemps
12:50 <entwanne> Mais c'est bon les tartes flambées
12:50 <vstinner> reinula: j'en ai re-mangé mercredi soir ! volontairement !
12:50 <debnet> M'en parle pas. Mon meilleur repas c'était le steak que j'ai mangé avant de prendre mon train le lundi. 😭😂
12:50 <discord_afpy> <reinula> J'en ai mangé trop depuis mardi
12:52 <entwanne> ça va c'était que les soirs :D
12:52 <discord_afpy> <reinula> Certes, mais mon estomac n'a pas du tout aimé
12:52 <vstinner> par contre, là où j'ai mangé pendant la PyconFR, y'avait peu de légumes :(
12:53 <vstinner> (non, la bière n'est pas un légume)
12:53 <entwanne> c'est l'Alsace, ils n'arrivent à faire pousser que des choux
12:55 <vstinner> entwanne: y'a des plats aux légumes, mais pas dans les brasseries/bars où j'étais
13:42 <misc> vstinner: le resto indien ?
13:44 <mdk> Hop nouvel exo : https://www.hackinscience.org/exercises/consecutive-sum 🙂
13:45 <vstinner> misc: c'était l'exception niveau légumes
13:46 <vstinner> mdk, debnet : finalement, avez-vous la solution pour zéropython ?
13:46 <mdk> vstinner, oui moi j'en ai deux.
13:46 <debnet> Tu partages tes deux solutions ? :D
13:46 <vstinner> mdk: ah oui ? ça m'intéresse
13:46 <mdk> vstinner, quel niveau de spoil t'intéresse ?
13:47 <mdk> Spoild 0 : mes deux solutions passent ce test : https://p.afpy.org/bMFj/test.py
13:47 <mdk> s/poild/poil/
13:48 <entwanne> mdk: rah ma solution pour consecutive-sum paraissait trop évidentr… il manquait les négatifs
13:48 <vstinner> mdk: la solution complète
13:49 <mdk> entwanne, même moi je n'y avait pas pensé, haha, elle m'amuse ma moulinette avec son find_consecutive_sum(0) 😀
13:50 <entwanne> et au final ça va me forcer à trouver une vraie solution mathématique plutôt qu'une boucle sale
13:50 <entwanne> "Génial !!!! Cette réponse est correcte !!!!" \o/
13:51 <mdk> GG entwanne
13:52 <mdk> /msg vstinner ATTENTION SPOIL, les deux (je crois) respectent les règles et (je suis sûr) passent pytest : https://p.afpy.org/LGhL/append.py https://p.afpy.org/7hTC/append2.py (Ouai, l'une est dégeulasse, je l'ai faite dans le train sur le retour).
13:52 <mdk> Tiens moi /msg est public ? 😀
13:52 <debnet> Echec total.
13:52 <mdk> Bah ceux qui ne veulent pas être spoil, z'avez qu'a pas cliquer.
13:53 <mdk> TIL j'ai jamais testé /msg avec ce client IRC (je passe par une gate XMPP depuis qq temps)
13:53 <entwanne> ah pas mal le coup de la sentinelle
13:53 <mdk> merci :))))))
13:53 <mdk> Si vous avez d'autres variations ça m'intéresse aussi.
13:54 <entwanne> pour la 1ère solution j'avais pensé à des trucs du genre, mais avec la conversion en string t'es sûr que ça fonctionne bien si la liste est récursive ?
13:55 <mdk> Damned Dorian laisse pas son mail dans ses commits et je me suis fait ban de son gitlab, pas pratique pour le pinguer 🙁
13:55 <mdk> entwanne, oui cf. hypothesis en bas qui génère des trucs récursifs pour tester
13:55 <entwanne> j'avais pas d'interpréteur sous la main pour tester mais je me disais que des "[...]" dans la représentation foutraient le bazar
13:55 <mdk> Après y'a peut-être quelques cas qu'hypothesis a pas repéré 😀
13:55 <entwanne> Dorian est sur le discord
13:56 <vstinner> mdk: j'suis dans le train. j'ai déjà la nausée. mais avec tes solutions... c'est pire :-D
13:56 <vstinner> mdk: nan mais c'est malin, bravo :)
13:56 <mdk> Hey Dorian là bas, sur le Discord, ping moi par mail, julien at palard point éfère
13:57 <mdk> vstinner, merci merci :))))))
13:57 <vstinner> mdk: append2.py est plutôt propre, je m'étais interdit de modifier la liste (je me suis bridé tout seul)
13:57 <discord_afpy> <grewn0uille> @Dorian TURBA - remote ^
13:57 <debnet> J'ai galéré pour faire le HackinScience du jour car je me suis mélangé les pinceaux avec les valeurs absolues. :P
13:58 <mdk> vstinner, si ça peut te rassurer, tu peux utiliser list() pour en faire une copie avant, comme ça tu ne la modifie pas vraiment
13:58 <debnet> Mais merci pour ce petit exercice mdk !
13:58 <mdk> gren0uille merci pour la mention cross-réseaux
13:58 <mdk> debnet, pour consecutive sum ?
13:58 <debnet> Yep.
13:58 <debnet> Mais c'est bon c'est validé !
13:58 <vstinner> mdk: ah oui
13:58 <entwanne> Ouais effectivement sur la première solution ça pète avec une liste récursive
13:59 <mdk> debnet, plaisir ! J'essaye d'en implémenter d'autres. j'voulais y passer la semaine (pas de clients), mais bon, on est déjà vendredi...
13:59 <debnet> La sentinelle avec ellipsis c'est malin mais ça sent le truc non prévu par Dorian. :D
13:59 <mdk> entwanne, ahhhh j'avais mal interprété quand tu as dis "liste récursive", OK je vois maintenant
13:59 <mdk> entwanne, ohhhh ça doit pouvoir se fix 😀
13:59 <debnet> Je suis surpris que "def" soit autorisé.
13:59 <entwanne> mais quoi qu'il en soit la 2ème solution est bien plus élégante
14:00 <debnet> Alors qu'il avait interdit les lambdas.
14:00 <mdk> debnet, pour la sentinelle, on se fout de la valeur de retour, ça se fix aisément, mais bien vu
14:00 <entwanne> ellispis ou non, ça pourait être un zéro ce serait pareil, ce qui compte c'est de créer un objet unique (la fonction, pas son retour)
14:00 <mdk> j'avoue ne pas trop avoir passé sa moulinette, surtout avec tout le pytest/hypothesis en bas :D
14:00 <entwanne> et si pas le droit aux fonctio
14:00 <debnet> Faudrait vérifier avec Dorian.
14:00 <entwanne> * et si pas le droit aux fonctions, la sentinelle ça peut être sentinel = []
14:00 <debnet> Il avait oublié beaucoup d'exception.
14:01 <debnet> s/exception/exceptions/
14:01 <mdk> entwanne, non, car la liste peut contenir une liste vide
14:01 <mdk> entwanne, on a pas le droit à is
14:01 <vstinner> debnet: la sentinelle, tu peux prendre ce que tu veux, comme sentinelle = object()
14:01 <debnet> On n'a pas le droit à object()
14:01 <mdk> vstinner, object est interdit
14:01 <mdk> donc il ne reste pas grand chose qui soit unique à la comparaison avec ==
14:01 <debnet> Mais la sentinelle c'est super malin en vrai.
14:01 <entwanne> mdk: ah oui pardon, j'ai pas la liste des règles sous les yeux, c'était plus pour l'aspect "ellipsis n'a rien à voir là-dedans", mais oui sinon en effet
14:03 <entwanne> <mdk> entwanne, on a pas le droit à is
14:03 <entwanne> Donc y a des cas tordus où ta solution ne fonctionnera pas :(
14:04 <entwanne> Si la liste passée en argument contient un objet donc __eq__ renvoie toujours True par exemple
14:05 <entwanne> * dont
14:05 <mdk> entwanne, hum je ne pense pas, def foo():.... >>> foo == object() # False
14:06 <vstinner> y'a moyen de créer une sentinelle pas chère sans objet externe : liste[-1] == liste
14:06 <vstinner> pardon, liste[-1] = liste
14:06 <mdk> vstinner, et si la liste contient des référence à elle même partout ? 🙁
14:07 <mdk> >>> liste = [None, None, None]
14:07 <mdk> >>> liste[0] = liste[1] = liste[2] = liste
14:07 <mdk> >>> append(liste, 3)
14:07 <vstinner> mdk: j'ai pas testé tous les cas
14:07 <entwanne> mdk: https://wyz.fr/7Vi
14:08 <mdk> Ahhhhhhhhhh
14:08 <vstinner> entwanne: class est autorisé ?
14:08 <entwanne> X() est égal à tout, donc à sentinel
14:08 <mdk> vstinner, non non pas autorisé mais il me génère un cas qui casse mon code
14:08 <vstinner> vous coupez les cheveux en 4
14:08 <entwanne> Non pas pour la solution de l'exercice, mais pour tester la fonction et vérifier que ça gère tous les cas je pense qu'on a le droit à tout
14:08 <vstinner> c'est un exercice intellectuel assez artificiel :)
14:09 <debnet> Oui, mais c'est le principe d'une énigme. :D
14:09 <entwanne> Si ça se trouve il n'y a pas de solution qui gère réellement tous les cas tordus imaginables
14:09 <debnet> Faudrait demander à Dorian. :PM
14:12 <Yoda-BZH> Bravo!! Right answer!!!! 🚀
14:12 <Yoda-BZH> heu, c'est si simple ? :o
14:12 <vstinner> mdk: t'as de la chance, ton code append2.py marche avec float("nan") pour qui la comparaison est toujours fuasse :)
14:19 <entwanne> je me disais qu'avec le droit d'appeler type on pouvait renforcer le check d'égalité avec un `a_list[size] != sentinel or type(a_list[size]) != type(sentinel)`, mais t'es pas à l'abri d'une valeur donc la métaclasse implémente aussi __eq__ :D
14:20 <vstinner> entwanne: "is" manque pour le test sur la sentinelle ouais :-D
14:20 <vstinner> perso cette exo zeropython me fait aimer python encore plus, héhé
14:21 <vstinner> je veux dire, tous les trucs interdits, bah ils sont très agréables à utiliser quand ils ne sont pas interdits :)
14:22 <entwanne> C'est sûr
14:50 <misc> la prochaine fois, moinsunpython, ou tu as juste droit à la moitié des mots clés
14:51 <misc> pas de if, tu as juste for
14:52 <entwanne> on peut tout faire avec for !
14:54 <misc> bah oui
14:54 <misc> c'est le fun
14:55 <misc> (enfin, je sais pas si c'est tout avec for, ou tout avec while)
15:05 <entwanne> mdk: Ah et donc à relire ton code append2 ça m'a rappelé une discussion avec Dorian samedi soir : on ne peut pas utiliser != sur les éléments de la liste car la liste peut contenir des sous-listes et que l'opérateur != est interdit sur les listes
15:06 <entwanne> mais pour le coup si tu testes `type(a_list[size]) == list or a_list[size] != sentinel` ça doit passer, parce que tu n'appliques jamais == ou != sur une liste (type ne peut pas renvoyer un objet list)
15:06 <mdk> hum
15:57 <alain_afpy> Réunions du comité directeur 2024-2025 - https://discuss.afpy.org/t/reunions-du-comite-directeur-2024-2025/2362
17:25 <entwanne> Merci alain_afpy
17:32 <discord_afpy> <melcore> Vous garder le même horaire ?
17:33 <entwanne> Non on passe à 20h30
17:34 <discord_afpy> <melcore> Mais sur la même date le 3 eme mardi du mois
17:35 <entwanne> ouais
21:24 <entwanne> mdk: Je pense avoir trouvé une alternative pour my_len qui gère les cas tordus (vu que ça compare des sérializations de listes débutant par None, donc ne laissant pas la place à des objets étranges) : https://wyz.fr/8A-B2
21:25 <mdk> entwanne, j'aime beaucoup 🙂
22:41 <debnet> @entwanne Hey, c'est plutôt élégant compte tenu des limitations.