PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Ma boîte à outils Python, mise à jour

samedi 14 juin 2014 à 17:59

Il y a bien longtemps je vous avais parlé de 7 libs Python vraiment chouettes, puis quelques articles pour vous signaler des remplaçants, ici et là.

Comme je ne m’attends pas à ce que vous suiviez le blog article par article, voici une petit synthèse, la conclusion de l’évolution de ma boîte à outils Python.

D’abord, ce qui n’a pas changé

Ipdb, est toujours de la partie. Je m’essaye à pudb de temps à autre, mais vraiment pour casser l’habitude. Ipdb reste la référence pour tout debugger. C’est simple, c’est puissant, c’est fantastique.

path.py, inébranlable remplacement de os.path et shutil, malgré l’intégration de pathlib à python 3.4 qui est loin d’être aussi bon. J’ai même fait quelques contributions sur le projet, notamment l’écriture de fichier “inplace”.

requests, la fantastique lib HTTP, qui n’évolue plus beaucoup, car qui a besoin d’améliorer la perfection ? On regrettera l’absence de version asynchrone, bien que certains projets alternatifs, moins bons, s’y collent.

bottle, toujours pour bricoler des sites rapides. Mais de moins en moins, maintenant que django_quicky est bien rodé, si je sais que le site va déboucher sur un truc, c’est plus productif d’utiliser ce dernier.

peewee, surtout pour introduire les gens à la programmation avec base de données durant les formations. SQLAlchemy c’est bien trop dur, et l’ORM Django se ramène avec tout le framework. Mais pour mes besoins rapides, j’avoue que je tape de plus en plus dans Redis ou du flat file. C’est souvent du jetable de toute façon et je manipule itertools mieux que SQL ou toute couche ORM au dessus.

grin est toujours là. Parce que je ne me souviens jamais des millions de flags de grep pour obtenir ce que grin donne gratos, comme la coloration, le contexte, la récursivité et l’exclusion du dossier .git. Parce qu’il prend les regex Python en compte. Parce qu’il marche sous n’importe quelle plateforme supportée par Python de la même manière, y compris Windows, et s’installe avec un pip install grin --user sans avoir besoin des droits root.

Ce qui a changé

Adios dateutil, bonjour arrow. Ok, je triche un peu, car arrow utilise dateutil sous le capot, mais je n’en vois jamais la couleur. Arrow est plus simple, plus beau, plus productif, plus mieux. Les dates, telles que ça devrait être dans la lib standard.

Ensuite, au revoir clize, place à docopt pour parser toutes les lignes de commandes. Les fonctionnalités avancées de click ne m’ont pas convaincu de migrer, et docopt est tellement intuitif, tellement merveilleux dans son fonctionnement…

minibelt fait maintenant partie de tous mes fichiers requirements. Surtout pour son sorted set, son dmerge, ses get, attr et iget. Parfois pour chunk et windows. C’est tellement rageant de devoir recoder ces petites fonctions pour chaque projet.

pyped est de plus en plus utile chaque jour. Depuis l’article du blog, il a bien évolué et embarque un tas de goodies comme le spliting via options, l’auto filter ou encore le parsing JSON. Bref, je n’ai plus touché à sed depuis des mois.

pytest partout. Je ne touche plus au module unittest de la stdlib ni celui de Django. pytest est la réponse à tout et même plus, c’est 42 + 1, c’est la seule raison pour laquelle je fais encore des tests.

six. Pas parce que j’aime cette lib, mais parce que je me tape pas mal de conversion Python 2/3 en ce moment, et six est le socle sur lequel repose toutes mes migrations. Pourvue que je n’ai bientôt plus besoin de l’utiliser. Oui, oui, je sais, on doit migrer 0bin et tous les autres projets. Un jour.

Pas directement lié à Python, mais pour faire des UI au dessus de mes APIs en Python. jQuery est petit à petit en train d’être remplacé par angularjs que je commence à bien maitriser. Ça mériterait un paquet d’articles rien que pour le bestiau mais je vais m’en tenir au 180 drafts qu’on a déjà en stock :) Et puis jQuery a encore de beaux jours devant lui pour tous les sites qui ont besoin de ref, les sites legacy, les petits sites qui n’ont pas besoin d’un bazooka pour l’UI…

Un autre truc que j’utilise tous les jours, c’est la liste des cours du blog avec une recherche type “site:http://sametmax.com/cours-et-tutos/ mes mots clés” car le moteur de recherche de wordpress est à chier. Et franchement, je me félicite régulièrement du dump du blog parce qu’Internet est pas stable ici et la consultation hors ligne devient vite indispensable. Pour cette même raison, j’ai installé zeal avec la doc de python en local.

Ce qui est resté au placard

Je pensais que j’utiliserais beaucoup templite, mais en fait pas du tout. Comme minibelt contient mes fonctions favorites, batbelt, sa grande soeur, s’ennuie, surtout qu’elle n’est toujours pas compatible Python 3.

Plus de Beautiful soup. Je ne parse plus de HTML, il y a des APIs partout… Plus de Fabric. J’utilise docker et je déploie mes instances à la main (j’ai pas 500 serveurs à gérer).

J’ai aussi fait un long essai du shell fish, mais je ne suis pas convaincu et je vais retourner à ce bon vieux bash.

flattr this!

Error happened! 0 - count(): Argument #1 ($value) must be of type Countable|array, null given In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:428 http://ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/?Ma-bo%C3%AEte-%C3%A0-outils-Python-mise-%C3%A0-jour #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #1 /var/www/ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/index.php(1): require_once('...') #2 {main}