Aller au contenu principal

12 articles tagués avec « Scripting »

Voir tous les tags

Python : CRUD et authentification avec FastAPI

· 10 minutes de lecture

Une API REST expose des ressources que des clients peuvent créer, lire, modifier et supprimer. La structuration de ces opérations (codes HTTP à retourner, forme des corps de requête et de réponse, gestion des erreurs) détermine la qualité et la prévisibilité de l'interface. FastAPI fournit les outils pour formaliser cette structure, et son système de dépendances permet d'y adjoindre une couche d'authentification de manière composable.

Python : SQLAlchemy

· 6 minutes de lecture

Écrire du SQL dans une application Python pose un problème récurrent : le code SQL est du texte, alors que les données manipulées sont des objets. À chaque lecture, il faut convertir une ligne de résultat en dictionnaire ou en objet. À chaque écriture, il faut construire une chaîne SQL en s'assurant de ne pas introduire d'injection. SQLAlchemy résout ce problème en faisant correspondre des classes Python à des tables de base de données, et des instances de ces classes à des lignes.

Python : Packaging

· 11 minutes de lecture

Un code Python réutilisable ne se diffuse pas en copiant des fichiers : pour qu'une commande pip install puisse l'installer avec ses dépendances, sa version et ses commandes, il doit être empaqueté dans un format standard (wheel ou sdist), décrit par des métadonnées et publié sur un index comme PyPI. Cet article détaille ces notions, de la structure d'un package à sa publication.

Python : Pytest

· 6 minutes de lecture

Sans tests automatisés, chaque modification d'un code Python doit être vérifiée à la main, et une régression peut passer inaperçue jusqu'en production. Pytest, le framework de test le plus utilisé en Python, repose sur de simples fonctions et l'instruction assert standard, et fournit des mécanismes de fixtures, de paramétrage et d'extension par plugins pour structurer des suites de tests maintenables.

Python : uv

· 6 minutes de lecture

uv est un gestionnaire de paquets et de projets Python développé par Astral (également éditeur de Ruff). Écrit en Rust, il remplace dans un seul binaire pip, pip-tools, virtualenv, pipx, pyenv et une bonne partie de Poetry, avec des temps d'installation et de résolution de l'ordre de dix à cent fois inférieurs à ceux de pip selon les mesures de ses auteurs.

Python : Ruff

· 4 minutes de lecture

Ruff est un linter et formateur Python écrit en Rust, développé par Astral. Il réimplémente les règles de flake8 (et de nombreux plugins), isort, pyupgrade et une partie de pylint, ainsi qu'un formateur compatible avec black, avec des temps d'exécution de l'ordre de 10 à 100 fois inférieurs selon ses auteurs. Un seul outil et un seul fichier de configuration remplacent ainsi plusieurs dépendances de la chaîne de qualité du code.

Python : async/await

· 12 minutes de lecture

Une application qui passe l'essentiel de son temps à attendre des entrées/sorties (réponses réseau, requêtes de base de données, lectures de fichiers) gaspille ce temps si elle les traite l'une après l'autre. La programmation asynchrone en Python, avec async/await et la bibliothèque standard asyncio, permet de mener ces attentes de front dans un seul thread. Cet article en présente les mécanismes et les cas d'usage, notamment avec FastAPI.

API : REST vs GraphQL

· 4 minutes de lecture

Un écran qui affiche un utilisateur, ses derniers articles et leurs commentaires enchaîne, face à une API REST, plusieurs requêtes vers des endpoints distincts et reçoit au passage des champs dont il n'a pas l'usage. GraphQL inverse ce rapport en laissant le client décrire, en une seule requête, la forme exacte des données attendues. Les deux approches reposent sur des choix architecturaux distincts : leurs différences portent sur la manière d'adresser les données, sur la répartition du contrôle entre client et serveur, et sur la gestion du cache et des erreurs.

GraphQL : FastAPI & Strawberry

· 9 minutes de lecture

Une API REST fixe côté serveur la forme des réponses de chaque endpoint : le client enchaîne plusieurs requêtes pour assembler une vue, ou reçoit des champs dont il n'a pas l'usage. GraphQL déplace ce choix vers le client, qui décrit les données attendues à partir d'un schéma typé exposé sur un seul endpoint. En Python, FastAPI assure le transport HTTP et WebSocket et Strawberry décrit ce schéma à partir de classes annotées ; leur assemblage couvre les trois opérations de GraphQL : queries, mutations et subscriptions.

Python : Poetry

· 7 minutes de lecture

Un projet Python dépend de dizaines de paquets, eux-mêmes dépendants d'autres paquets. Avec pip et un requirements.txt écrit à la main, rien ne garantit que deux installations à quelques semaines d'intervalle obtiennent les mêmes versions. Poetry regroupe la déclaration des dépendances, leur résolution, leur verrouillage dans un lock file, la gestion de l'environnement virtuel et la publication du paquet dans un seul outil, piloté par le fichier standard pyproject.toml.