-
Notifications
You must be signed in to change notification settings - Fork 23
Match case #66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Match case #66
Conversation
|
bonjour Jean-Michel écoute oui ça va tout à fait dans le bon sens je ne sais pas non plus trop où le mettre en termes de licence, tu peux très bien ajouter ton nom hein, c'est quand même le minimum :) sinon je crois que oui mais ne me souviens plus à 100%, le python dispo dans les notebooks a la bonne version pour faire tourner tout ça ? en tous cas merci ça aide :) |
|
pour info toujours mais on a commencé à évoquer vaguement l'idée de retourner quelques vidéos et ce sujet-là fait partie du top 2, avec le walrus operator... |
|
Merci Thierry,
Pas de soucis, c'est bien normal. J'ai quelques petites interrogations en vrac.
|
|
entre tes deux options, j'ai une préférence pour la première option (2 notebooks en tout, un en semaine 4 et un en semaine 6) on peut mentionner le cas des floats à mon avis, sur juste un exemple qui soit pathologique pour la réf à kaamelott, je pense pas que le copyright pose problème, mais on peut se demander en effet ce que va comprendre quelqu'un qui n'a pas le background; à toi de voir :) PS. il faudrait aussi modifier à l'occasion dans l'entête le 'notebookname' et le mettre à 'instruction match (1/2)' ou quelque chose dans ce genre |
|
Voila, je pense que c'est bon pour la première partie. Je ne suis pas suffisamment calé en math pour un exemple sur les floats. |
|
Merci Jean-Michel je garde ça sous le coude, j'éditerai à l'occasion :) |
|
J'ai retravaillé un peu le premier par contre j'ai tout rebasé, c'est plus simple je pense si tu repars de la branche ça va demander un peu de gymnastique avec git, dis-moi si tu as besoin d'aide pour ça merci ! PS. de manière générale c'est plus simple pour moi si, lorsque u veux 'rattraper' mais tu rebases plutôt que de merger, c'est plus simple comme ça d'isoler vraiment ce qui est dans ta branche par rapport à ce qui a été fait dans main entretemps; je sais pas si c'est clair, là encore je peux éclaircir si besoin |
|
Bon tu m'as un peu perdu là. ;-) Quand tu auras le temps, je veux bien un éclaircissement sur le fait de rebaser plutôt que merger.
Ce ne serait pas plus simple si je supprime mon fork et que je le refasse du coup ? |
|
On 19 Apr 2023, at 13:21, Karduin ***@***.***> wrote:
Bon tu m'as un peu perdu là. ;-)
Quand tu auras le temps, je veux bien un éclaircissement sur le fait de rebaser plutôt que merger.
ça va demander un peu de gymnastique avec git, dis-moi si tu as besoin d'aide pour ça
Ce ne serait pas plus simple si je supprime mon fork et que je le refasse du coup ?
—
Reply to this email directly, view it on GitHub <#66 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABCPKO5LAPYRI634VYPWPHLXB7DCNANCNFSM6AAAAAARGLELHU>.
You are receiving this because you commented.
Bonjour Jean-Michel
je comprends que c’est un peu olé olé :-)
je suppose dans la suite que
ton repo est ‘propre’ - pas de modifes pendantes - à committer ou à stasher si nécessaire
ça c’est super important bien sûr
ton remote origin pointe vers mon repo (sinon tu remplaces origin par le bon nom)
tu as une remote ‘mine’ qui pointe vers ton fork; pareil tu remplaces par le bon nom...
ce que tu peux faire pour te remettre en phase, c’est juste ceci
# pour te remettre sur la branche en question
git switch match_case
# pour aller chercher ma branche
git fetch --all
à ce stade tu auras une référence origin/match_case
# et là tu téléportes ta branche sur la mienne
git reset --hard origin/match_case
# ya plus qu’à pousser sur ton fork
git push --force mine match_case:match_case
ce qu’il y a de bien avec cette façon c’est que le PR reste valide et on peut continuer à drafter le nb #2
mais si jamais ça foire de ton coté, ou si tu le sens pas, no worries, tu pourras toujours refaire ton fork en effet
simplement dans tous les cas repars bien du commit d1ba5bd où il y a tout ce qu’il faut
désolé si c’est compliqué…
——
le principe de rebaser, c’est qu’au moment de rattraper main, au lieu de faire juste git pull, on fait
git pull --rebase, ce qui au lieu de merger, va refaire les modifes de la branche mais au-dessus du main,
comme ça on se fait moins de noeuds au cerveau pour visualiser les changements qui sont propres à la branche, vs ce qui a changé dans le main entretemps…
cad on obtient finalement un fil tout simple au lieu d’avoir des schémas en diamant
|
|
Bonjour Thierry, Ce que j’avais fait pour proposer les pr :
Puis je modifie en local je push sur mon repo et pr à partir de github. Du coup origin pointe sur mon repo.
❯ git remote -v Du coup je ne pointe pas sur ton repo. Je peux quand même faire la manip que tu indiques ? Concernant match case et les classes : Tu pense à des choses dans ce genre ? Parce que j'avoue ne pas trop savoir comment traiter le sujet. |
|
ah ok, alors je rephrase les manipes à faire git remote add upstream git@github.com:flotpython/course.git |
|
au départ je pensais plutôt à quelque chose comme ce qui suit, mais c'est très ouvert je suis pas non plus un expert de ce trait qui est très récent et que je commence seulement à utiliser class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# ça ne marche sûrement pas tel quel, mais en gros hein
def foo(p):
match p:
Point(0, 0):
print("le zéro")
Point(x, 0):
print(`horizontal, {x=}`)
Point(x, y):
print(`ailleurs {x=} {y=}`)
zero = Point(0, 0)
p1 = Point(0, 5)
p2 = Point(5, 5)
foo(zero)
foo(p1)
foo(p2) |
|
c'est parfait comme ça on est bien en phase c'est quoi du coup le plan pour la deuxième partie ? on peut très bien dans un premier temps publier juste ça (peut-être du coup enlever le 1/2 et la phrase à la fin qui dit que ça continue en semaine 6) dis-moi |
Oui merci pour la manip, ça a marché impeccable. J'avoue que je n'avais pas d'idée précise en tête et que je comptais sur toi ;-). Il faut que je creuse la question en fouillant sur le net. Du coup si tu as une dead line courte il vaut mieux partir sur la publication de la première partie. Dans tous les cas je vais chercher de l'info dès à présent. EDIT: Bon en écrivant le code comme ça, ça fonctionne : (voir PEP 636) bien que leur exemple soit avec une class Point:
counter= 0
def __init__(self, x, y):
self.x = x
self.y = y
Point.counter += 1
def foo(p):
match p:
case Point(x=0, y=0):
print("le zéro")
case Point(x=x, y=0):
print(f"horizontal, {x=}")
case Point(x=x, y=y):
print(f"ailleurs {x=} {y=}")
zero = Point(0, 0)
p1 = Point(0, 5)
p2 = Point(5, 5)
foo(zero)
foo(p1)
foo(p2)
print(Point.counter)J'ai rajouter un compteur parce que la façon de comparer me paraissait étrange, mais il ne compte bien que trois instances. |
|
je n'ai pas de deadline; je voulais juste dire que si tu ne te sens pas d'écrire la 2ième partie on peut tout à fait se contenter de la première :) si on part sur une deuxième partie: oui voilà, je pense que ça peut être un exemple intéressant (sans le compteur of course, car ça va confuser les gens); on n'est pas non plus obligé d'en écrire des tartines.. -- |
|
Honnêtement, pour le moment je ne vois comment faire. Donc publions juste la première partie. Cependant j'ai eu une idée, reste a savoir si elle est pas terrible et si j'arrive à la faire fonctionner.
Dans le notebook, je ne pense pas que l'on puisse faire la requête sans que leur serveur ne pleure. Mais on peux mettre un json à dispo. Alors sans intérêt ou pas ? |
|
dac pour publier la première partie.. il faut que je trouve 10 minutes pour insérer le notebook dans le cours
pour ton projet, ça semble très intéressant; toutefois c’est clairement un truc qu’on va avoir envie de faire en pandas non ?
du coup j’ai du mal à voir le rapport avec le match/case, ça n’existe pas à ma connaissance sous forme vectorisée en pandas ça, si ?
ce qui à nouveau ne doit pas empêcher de faire cet exercice qui semble rigolo; avec un peu de folium dedans ?
mes 2 centimes
… On 22 Apr 2023, at 10:55, Karduin ***@***.***> wrote:
Honnêtement, pour le moment je ne vois comment faire. Donc publions juste la première partie.
Cependant j'ai eu une idée, reste a savoir si elle est pas terrible et si j'arrive à la faire fonctionner.
Utiliser l'API de http://www.fdsn.org/webservices/ <http://www.fdsn.org/webservices/> pour récupérer des datas sur les derniers tremblements de terre.
Il y a une page pour construire la requête https://www.seismicportal.eu/fdsn-wsevent.html <https://www.seismicportal.eu/fdsn-wsevent.html>.
On pourrai filtrer sur les latitudes / longitudes France et toutes magnitudes (par exemple, ou Japon pour plus d'infos).
On récupère le json.
A partir du json, on fait une list ou un dict d'instances d'une class Eartquake avec juste 3 ou 4 attributs.
Et enfin un match case sur les magnitudes par exemple. Ou autre c'est pas encore net pour moi.
Dans le notebook, je ne pense pas que l'on puisse faire la requête sans que leur serveur ne pleure. Mais on peux mettre un json à dispo.
Si quelqu'un veux faire la manip en local on peux fournir un code de base .
Alors sans intérêt ou pas ?
—
Reply to this email directly, view it on GitHub <#66 (comment)>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ABCPKOZJIQZTXEPRXFODO5DXCOMJ7ANCNFSM6AAAAAARGLELHU>.
You are receiving this because you commented.
|
|
J'avais un peu peur que tu me répondes quelque chose dans ce goût. C'est plutôt un boulot pour base de données ou Pandas effectivement. Du coup je vais voir si je peux faire un truc avec les exemples de la PEP636 pour le match case, et voir si je peux réaliser l'exercice avec folium. Je ne connaissais pas, c'est sympa. Si j'y arrive tu crois que ça peux être intéressant pour le mooc ? |
|
le notebook est en ligne sous le numéro 425 pour l'éventuelle seconde partie, ce n'est pas crucial hein s'agissant de folium enfin, pourquoi pas, mais il faut alors viser quelque chose de super light |
|
Nice ! merci. |
Bonjour Thierry,
Une proposition pour une première partie au sujet de match / case.
Je ne sais pas trop comment tu veux organiser ça. J’ai mis le fichier dans la semaine 4.
Je pensai faire ça en deux parties, et donc une deuxième partie pour les cas plus complexes.
Je n’ai pas traduit structural pattern matching je ne vois rien d’élégant pour mettre ça en français.
Dis-moi si ça t’intéresses que je continue ou si tu vois les choses différemment. N’hésites pas à me dire que ça ne convient pas, je ne vais pas me vexer.
Cordialement,
Jean-Michel