From 263586f0613e08ef464782ea80f95e50d44c9f1b Mon Sep 17 00:00:00 2001 From: Julien Palard Date: Sat, 27 May 2023 09:28:28 +0200 Subject: [PATCH] New deploy script. --- background.jpg | Bin 0 -> 114044 bytes deploy.sh | 29 ++++ python-avancé/python-avancé.md | 35 ++--- python-initiation/initiation.md | 246 ++++++++++++++++--------------- python-initiation/test.py | 41 +----- 5 files changed, 169 insertions(+), 182 deletions(-) create mode 100644 background.jpg create mode 100755 deploy.sh mode change 100755 => 120000 python-initiation/test.py diff --git a/background.jpg b/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..714dbd0817cdb602692d2ab63072c1d0b402bc40 GIT binary patch literal 114044 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

B;V)D%Wmp%H+mwxmIpp-M20DQZqzF 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/dev/null +then + echo Please apt install cutycapt + exit 1 +fi + +if ! which pytest >/dev/null +then + echo Please pip install -r requirements.txt + exit 1 +fi + +set -e # So a breaking test stops the deploy. + +export QT_QPA_PLATFORM=offscreen + +for makefile in */Makefile +do + dir="$(dirname "$makefile")" + figlet -C utf8 -t "$dir" + ( + cd "$dir" + + make test + make rsync + ) +done diff --git a/python-avancé/python-avancé.md b/python-avancé/python-avancé.md index d312bbb..361cc0d 100644 --- a/python-avancé/python-avancé.md +++ b/python-avancé/python-avancé.md @@ -359,26 +359,6 @@ En initiation on dit "ça ne vous servira pas". En avancé on dit Notes: -```python -class M(type): - def __new__(cls, *args, **kwargs): - print(f"meta.__new__(*{args}, **{kwargs})") - return super().__new__(cls, *args, **kwargs) - - def __init__(self, *args, **kwargs): - print(f"meta.__init__(*{args}, **{kwargs})") - super().__init__(*args, **kwargs) - -class MyCls(metaclass=M): - def __new__(cls, *args, **kwargs): - print(f"cls.__new__(*{args}, **{kwargs})") - return super().__new__(cls, *args, **kwargs) - - def __init__(self, *args, **kwargs): - print(f"cls.__init__(*{args}, **{kwargs})") - super().__init__(*args, **kwargs) -``` - Vous pouvez aussi utiliser un décorateur pour personaliser une classe. @@ -906,7 +886,7 @@ Dans l'attribut `value`. ## await -``` +```text async def two(): return 2 @@ -963,8 +943,11 @@ def coro_manager(coro): coro.send(None) except StopIteration as stop: return stop.value +``` -print(coro_manager(four())) +```pycon +>>> print(coro_manager(four())) +4 ``` @@ -981,7 +964,7 @@ async def wont_terminate_here(): print("Terminated") return 42 -print(coro_manager(wont_terminate_here())) +coro_manager(wont_terminate_here()) ``` ## Gérer ses coroutines @@ -1016,14 +999,14 @@ def frenetic_coros_manager(*coros): ## Gérer ses coroutines -```python +```text async def tum(): - for _ in range(10): # ou : while True: + while True: await Awaitable() print("Tum") async def pak(): - for _ in range(10): # ou : while True: + while True: await Awaitable() print("Pak") diff --git a/python-initiation/initiation.md b/python-initiation/initiation.md index 201b0b8..235a021 100644 --- a/python-initiation/initiation.md +++ b/python-initiation/initiation.md @@ -135,7 +135,7 @@ In [1]: ## Testons l'interpréteur -```python +```pycon >>> 10 10 ``` @@ -150,7 +150,7 @@ pour qu'on puisse le lire. ## C'est votre nouvelle calculatrice -```python +```pycon >>> 60 * 60 * 4 14400 ``` @@ -158,7 +158,7 @@ pour qu'on puisse le lire. ## Les exceptions -```python +```pycon >>> 5 / 0 Traceback (most recent call last): File "", line 1, in @@ -174,7 +174,7 @@ Lisez *TOUJOURS* la dernière ligne en premier ! ## Booléens -```python +```pycon >>> True True >>> False @@ -185,7 +185,7 @@ False ## Nombres -```python +```pycon >>> 42 42 ``` @@ -193,7 +193,7 @@ False ## Nombres -```python +```pycon >>> 18446744073709551616 18446744073709551616 ``` @@ -201,7 +201,7 @@ False ## Nombres -```python +```pycon >>> 3.1415 3.1415 ``` @@ -209,7 +209,7 @@ False ## Chaînes de caractères -```python +```pycon >>> "Beurre ou huile d'olive ?" "Beurre ou huile d'olive ?" ``` @@ -222,7 +222,7 @@ dans un cours de C89. ## Chaînes de caractères -```python +```pycon >>> 'Cuisson "au beurre" !!' 'Cuisson "au beurre" !!' ``` @@ -234,7 +234,7 @@ Les triples quotes apparaissent jour 2. ## Listes -```python +```pycon >>> ["1 kg de farine", "12 œufs", "130 g de beurre"] ['1 kg de farine', '12 œufs', '130 g de beurre'] ``` @@ -246,7 +246,7 @@ La représentation est souvent du Python valide. ## Listes -```python +```pycon >>> ["farine", 1000] ['farine', 1000] ``` @@ -258,7 +258,7 @@ Attention à ne pas abuser du mélange autorisé des types. ## *n*-uplets, *tuple* -```python +```pycon >>> ("œufs", 12) ('œufs', 12) >>> ("sucre", 130) @@ -275,7 +275,7 @@ liste, par exemple des coordonnées : (x, y). ## Listes et tuples -```python +```pycon >>> [("farine", 1000), ("œufs", 12), ("sucre", 130)] [('farine', 1000), ('œufs', 12), ('sucre', 130)] ``` @@ -316,7 +316,7 @@ pas les clefs à l'avance, sinon c'est une classe. ## Les opérateurs mathématiques -```python +```pycon >>> 10 + 10 20 >>> 10.5 + 2 @@ -326,14 +326,14 @@ pas les clefs à l'avance, sinon c'est une classe. ## Les opérateurs mathématiques -```python +```pycon >>> (4 * 10**1) + (2 * 10**0) 42 ``` ## Les opérateurs mathématiques -```python +```pycon >>> 10 / 2 5.0 ``` @@ -341,7 +341,7 @@ pas les clefs à l'avance, sinon c'est une classe. ## Les opérateurs -```python +```pycon >>> "Bri" + "oche" 'Brioche' ``` @@ -353,7 +353,7 @@ It's called concatenation of strings. ## Les opérateurs -```python +```pycon >>> "mur" * 2 'murmur' ``` @@ -365,7 +365,7 @@ Tant qu'il n'y a pas d'ambiguité, c'est implémenté. ## Les opérateurs -```python +```pycon >>> ["farine", "œufs"] + ["sucre", "sel"] ['farine', 'œufs', 'sucre', 'sel'] ``` @@ -374,7 +374,7 @@ Tant qu'il n'y a pas d'ambiguité, c'est implémenté. ## Les Comparisons -```python +```pycon >>> 10 < 1 False >>> 10 == 10 @@ -391,7 +391,7 @@ quand l'utiliser. ## Logique -```python +```pycon >>> True or False True >>> True and False @@ -407,7 +407,7 @@ On utilisera ça plus tard, avec les structures de contrôle. ## Test d'appartenance -```python +```pycon >>> "chocolat" in "pain au chocolat" True ``` @@ -415,7 +415,7 @@ True ## Test d'appartenance -```python +```pycon >>> "sel" in {"farine", "œuf", "sucre", "sel", "levure"} True ``` @@ -423,7 +423,7 @@ True ## Travailler avec les ensembles -```python +```pycon >>> {"farine", "sel"} | {"œuf", "sel"} == {"sel", "farine", "œuf"} True ``` @@ -435,7 +435,7 @@ C'est une union. ## Travailler avec les ensembles -```python +```pycon >>> {"farine", "levure", "sel"} & {"œuf", "sel", "sucre"} {'sel'} ``` @@ -447,7 +447,7 @@ Une intersection. ## Mais en cas d'ambiguité… -```python +```pycon >>> "farine" * "sucre" Traceback (most recent call last): File "", line 1, in @@ -457,7 +457,7 @@ TypeError: can't multiply sequence by non-int of type 'str' ## Mais en cas d'ambiguité… -```python +```pycon >>> {"farine", "levure"} + {"sel", "œuf"} Traceback (most recent call last): File "", line 1, in @@ -469,7 +469,7 @@ TypeError: unsupported operand type(s) for +: 'set' and 'set' ## Affectation -```python +```pycon >>> preparation = 20 >>> cuisson = 30 >>> preparation + cuisson @@ -483,7 +483,7 @@ JAMAIS dire : On met 20 dans « preparation ». ## Affectation multiple -```python +```pycon >>> preparation, cuisson = 20, 30 >>> preparation 20 @@ -494,7 +494,7 @@ JAMAIS dire : On met 20 dans « preparation ». ## Accès par indice -```python +```pycon >>> etapes = ["preparation", "cuisson", "dégustation"] >>> etapes[0] 'preparation' @@ -513,7 +513,7 @@ Bien prendre le temps d'expliquer la syntaxe ici. ## Accès par clé -```python +```pycon >>> definitions = { ... "un verre": "25 cl", ... "un petit verre": "12 cl", @@ -529,7 +529,7 @@ Bien prendre le temps d'expliquer la syntaxe ici. ## print -```python +```pycon >>> print("Brioche") Brioche ``` @@ -541,7 +541,7 @@ C'est leur première fonction, s'attarder sur la syntaxe ! ## print -```python +```pycon >>> print("La moitié de 130 g :", 130 // 2, "g") La moitié de 130 g : 65 g ``` @@ -560,14 +560,14 @@ Exercices: ## str, list, int, ... -```python +```pycon >>> str(130) '130' ``` ## str, list, int, ... -```python +```pycon >>> int("130") 130 ``` @@ -575,7 +575,7 @@ Exercices: ## len -```python +```pycon >>> len(["farine", "œufs", "sucre"]) 3 >>> len("farine") @@ -589,7 +589,7 @@ Exercise: Character counting ## range -```python +```pycon >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(5, 10)) @@ -614,14 +614,14 @@ chaînes. ## sorted -```python +```pycon >>> sorted({"sel", "farine", "sucre"}) ['farine', 'sel', 'sucre'] ``` ## Les importer des modules -```python +```pycon >>> from random import choice >>> print(choice(["Pain au chocolat", "Chocolatine"])) Pain au chocolat @@ -636,7 +636,7 @@ Exercice : Import. ## if -```python +```pycon >>> if "sucre" in ingredients and "œuf" in ingredients: ... print("Commencer par blanchir les œufs.") Commencer par blanchir les œufs. @@ -656,7 +656,7 @@ whole number can be written as a _unique_ product of primes ». Après un bloc `if`, on peut ajouter un bloc `else` : -```python +```pycon >>> if "sucre" in ingredients and "œuf" in ingredients: ... print("Commencer par blanchir les œufs.") ... else: @@ -669,7 +669,7 @@ Commencer par blanchir les œufs. Après un `if`, on peut ajouter un ou des bloc `elif` : -```python +```pycon >>> grams = 1250 >>> if grams == 0: ... print("Ne pas en mettre") @@ -689,7 +689,7 @@ Parler de `pass` et de `...`. ## for -```python +```pycon >>> for ingredient in ingredients: ... print(ingredient) ... @@ -701,7 +701,7 @@ beurre œuf ``` -```python +```pycon >>> ingredient = ingredients[0] >>> print(ingredient) sel @@ -716,7 +716,7 @@ sucre ## for -```python +```pycon >>> for lettre in "Œuf": ... print(lettre) ... @@ -729,7 +729,7 @@ f ## for -```python +```pycon >>> for i in range(5): ... print(i) 0 @@ -755,7 +755,7 @@ cependant dans quelques cas: ## L'instruction `while` -```python +```pycon >>> while il_reste_de_la_pâte: ... faire_une_crêpe() ... @@ -766,7 +766,7 @@ cependant dans quelques cas: ## Sur les chaînes -```python +```pycon >>> s = "Pâte à crêpe" >>> s.count("e") 2 @@ -783,7 +783,7 @@ Exercise : Counting Words. ## Sur les chaînes -```python +```pycon >>> s = "Durée : {} minutes." >>> s.format(3600 // 60) 'Durée : 60 minutes.' @@ -792,7 +792,7 @@ Exercise : Counting Words. ## Sur les listes -```python +```pycon >>> ingredients = ["1 kg de farine", "12 œufs"] >>> ingredients.append("130 g de beurre") >>> ingredients @@ -802,7 +802,7 @@ Exercise : Counting Words. ## Sur les dictionnaires -```python +```pycon >>> definitions = { ... "un verre": "25 cl", ... "un petit verre": "12 cl", @@ -894,7 +894,7 @@ modifier). En Python, ce qui est vide est faux, `0` est faux, `None` est faux, `False` est faux. Le reste est vrai : -```python +```pycon >>> bool("Non vide") True >>> bool([]) # Une liste vide @@ -930,7 +930,7 @@ Passer du temps sur la syntaxe et le vocabulaire ## Exemple -```python +```pycon >>> def temps_total(temps_de_preparation, temps_de_cuisson): ... return temps_de_preparation + temps_de_cuisson ... @@ -950,7 +950,7 @@ def fahrenheit_to_celsius(fahrenheit): ## Arguments On peut donc lui donner des arguments : -```python +```pycon >>> fahrenheit_to_celsius(320) 160.0 >>> fahrenheit_to_celsius(390) @@ -966,7 +966,7 @@ Exercices: First function, Print even numbers, ... # Les chaînes -```python +```pycon >>> """Elle préfère "l'huile d'olive".""" 'Elle préfère "l\'huile d\'olive".' ``` @@ -989,7 +989,7 @@ def une_fonction(): ## Les opérateurs mathématiques -```python +```pycon >>> 0.1 + 0.1 0.2 ``` @@ -997,7 +997,7 @@ def une_fonction(): ## Les opérateurs mathématiques -```python +```pycon >>> 0.1 + 0.2 0.30000000000000004 ``` @@ -1017,7 +1017,7 @@ l'élément suivant. Qu'on soit dans un `for` ou dans un `while`. ## `break` -```python +```pycon >>> while True: ... if not il_reste_de_la_pâte: ... break @@ -1028,7 +1028,7 @@ l'élément suivant. Qu'on soit dans un `for` ou dans un `while`. ## `continue` -```python-repl +```pycon-repl >>> for recette in recettes: ... if "sésame" in recette["ingredients"]: ... continue @@ -1043,7 +1043,7 @@ Houmous ## Les exceptions : `try` -```python +```pycon >>> try: ... int("2 kg") ... except ValueError: @@ -1056,7 +1056,7 @@ Raté C'est transformer ça : -```python +```pycon >>> durées = [] >>> for recette in recettes: ... durées.append(recette["durée"]) @@ -1069,7 +1069,7 @@ C'est transformer ça : en : -```python +```pycon >>> [recette["durée"] for recette in recettes] [35, 20, 13] ``` @@ -1114,20 +1114,20 @@ Elle devrait s'écrire sur une seule ligne, mais, vidéoprojecteur... *slices* en anglais +notes: + On pourrait traduire par « tranches » et filer la métaphore culinaire… -Notes: +['incontestable', 'contestable', 'testable', 'stable'] + ```python seq = 'incontestable' -# ['incontestable', 'contestable', 'testable', 'stable'] ``` - ## Les *slices* -```python ->>> seq -'incontestable' +```pycon +>>> seq = 'incontestable' >>> seq[0] 'i' ``` @@ -1135,65 +1135,79 @@ seq = 'incontestable' ## Les *slices* -```python +```text + 11 +0123456789 | +incontestable—12 + | + 10 + +``` +```pycon +>>> seq[5:9] +'test' >>> seq[5:13] 'testable' +>>> seq[7:13] +'stable' +``` + +## Les *slices* + +```pycon +>>> seq[:2] +'in' +>>> seq[2:] +'contestable' ``` ## Les *slices* -```python ->>> seq[3:6] -['D', 'E', 'F'] -``` - - -## Les *slices* - -```python ->>> seq[:] -['A', 'B', 'C', 'D', 'E', 'F'] -``` - - -## Les *slices* - -```python ->>> seq[1:] -['B', 'C', 'D', 'E', 'F'] -``` - - -## Les *slices* - -```python +```pycon >>> seq[-1] -'F' +'e' ``` ## Les *slices* -```python ->>> seq[:-2] -['A', 'B', 'C', 'D'] +```pycon +>>> seq[-6:] +'stable' ``` ## Les *slices* -```python ->>> seq[0:5:2] -['A', 'C', 'E'] +```pycon +>>> "perso"[::2] +'pro' ``` -## Les *slices* +notes: ```python ->>> seq[::-1] -['F', 'E', 'D', 'C', 'B', 'A'] +dict = ['ados', 'assit', 'engager', 'éroder', 'épater', 'ivres', 'soda', 'tissa', 'regagne', 'erodé', 'retapé', 'servi'] +``` + +## Les *slices* + +```pycon +>>> for word in dict: +... if word[::-1] in dict: +... print(word, word[::-1]) +ados soda +assit tissa +engager regagne +épater retapé +ivres servi +soda ados +tissa assit +regagne engager +retapé épater +servi ivres ``` @@ -1251,7 +1265,7 @@ Notes: On connaît les attributs. ## Exemple -```python +```pycon >>> ISIN = { ... "GLE": "FR0000130809", ... "PARRO": "FR0004038263", @@ -1296,7 +1310,7 @@ BiaisedDice(Dice) est un bon exemple d'héritage. ## Utilisation -```python +```pycon >>> dice = Dice() >>> dice.throw() >>> dice.value @@ -1306,7 +1320,7 @@ BiaisedDice(Dice) est un bon exemple d'héritage. ## Utilisation -```python +```pycon >>> cup = DiceCup( ... [Dice() for _ in range(10)] ... ) @@ -1517,7 +1531,7 @@ Notes: Voir mon bashrc :] Surtout "viable" depuis la 3.8. Signifie « plusieurs », comme dans une liste ou un *n*-uplet. -```python +```pycon >>> begin, *rest = range(5) >>> begin 0 @@ -1538,7 +1552,7 @@ begin, rest = seq[0], seq[1:] ## `*` -```python +```pycon >>> def sum(*args): ... print(args) ... @@ -1549,7 +1563,7 @@ begin, rest = seq[0], seq[1:] ## `*` -```python +```pycon >>> [0, 0, 0, *range(3)] [0, 0, 0, 0, 1, 2] ``` @@ -1557,7 +1571,7 @@ begin, rest = seq[0], seq[1:] ## `*` -```python +```pycon >>> print(*range(5)) 0 1 2 3 4 ``` @@ -1568,7 +1582,7 @@ begin, rest = seq[0], seq[1:] Signifie « plusieurs, nommés », comme dans un dictionnaire. -```python +```pycon >>> def p(**kwargs): ... for key, value in kwargs.items(): ... print(key, "→", value) @@ -1581,7 +1595,7 @@ y → 12 ## `**` -```python +```pycon >>> defaults = {"path": "./", ... "pattern": "*.txt"} >>> {**defaults, "pattern": "*.md"} @@ -1591,7 +1605,7 @@ y → 12 ## `**` -```python +```pycon >>> def p(x, y): ... print(f"x → {x}") ... print(f"y → {y}") @@ -1610,7 +1624,7 @@ y → 12 C'est transformer une chaîne en octets, pour son transport ou stockage : -```python +```pycon >>> "L'été".encode() b"L'\xc3\xa9t\xc3\xa9" >>> list("L'été".encode()) @@ -1622,7 +1636,7 @@ b"L'\xc3\xa9t\xc3\xa9" C'est le contraire ... -```python +```pycon >>> bytes([76, 39, 195, 169, 116, 195, 169]).decode() "L'été" ``` diff --git a/python-initiation/test.py b/python-initiation/test.py deleted file mode 100755 index 7d22261..0000000 --- a/python-initiation/test.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -from string import ascii_letters, digits -import re -import doctest -from tempfile import NamedTemporaryFile -import importlib.util - -parser = argparse.ArgumentParser() -parser.add_argument("file", nargs="+") -parser.add_argument("-v", "--verbose", action="store_true") -parser.add_argument("-d", "--debug", action="store_true") -args = parser.parse_args() - -for file_to_test in args.file: - with open(file_to_test) as f: - source = f.read() - - with NamedTemporaryFile(mode="w", suffix=".py") as f: - for example_match in re.finditer("```python.*?```", source, re.S): - example = example_match.group() - example = "\n".join(example.split("\n")[1:-1]) - lineno = source[:example_match.start()].count("\n") + 1 - function_name = ''.join(letter if letter in ascii_letters + digits else '_' for letter in file_to_test[:-3]) + "_line_" + str(lineno) - if example.startswith(">>> "): - if '"""' in example: - f.write(f"""def _{function_name}():\n r'''""" + example + """\n'''\n\n""") - else: - f.write(f'''def _{function_name}():\n r"""''' + example + '''\n"""\n\n''') - else: - f.write(example + "\n\n") - f.flush() - if args.debug: - with open(f.name) as py_source: - print(py_source.read()) - spec = importlib.util.spec_from_file_location("to_test", f.name) - to_test = importlib.util.module_from_spec(spec) - spec.loader.exec_module(to_test) - doctest.testmod(to_test, verbose=args.verbose) diff --git a/python-initiation/test.py b/python-initiation/test.py new file mode 120000 index 0000000..18c8c51 --- /dev/null +++ b/python-initiation/test.py @@ -0,0 +1 @@ +../python-avancé/test.py \ No newline at end of file