Des cookies pour mon Python
22 février 2019
Adrien Oliva
2 minutes
337 mots

Revenant pas mal en se moment sur des projets Python en tout genre, je commence à m’intéresser un peu plus en profondeur à l’écosystème qui gravite autour.

C’est alors qu‘au cours de mes lectures (principalement sur Sam et Max, mais aussi grâce au livre Clean Architectures in Python de Leonardo Giordani), j’ai découvert le projet CookieCutter : c’est un package Python qui permet de générer des projets à partir de template.

Ayant fouillé un petit peu la masse conséquente de templates existants (et il y en a beaucoup!), j’en ai vu beaucoup spécifique à Github. Loin de moi de l’idée de le blâmer, mais j’utilise beaucoup plus volontier Gitlab que Github, et donc, il me fallait un template Python, orienté Gitlab.

Comme je n’ai pas trouvé ce que je voulais, soit parce que je ne sais pas chercher, soit la flemme, soit l’envie d’essayer d’écrire un template (spoil!), voici donc un template pour CookieCutter pour créer des projets Python, hébergé sur une instance Gitlab.

Ce template prends en charge l’intégration continue via Gitlab-CI, l’auto publication sur PyPI du module en cas de tag, l’auto publication sur les Gitlab Page de plusieurs rapport de statut du code, comme les rapports PyLint, PEP8 ou encore le rapport de couverture, etc…

Le template est disponible à l’adresse http://gitlab.yapbreak.fr/olivaa/python-gitlab-cookie. Pour créer un nouveau projet, il suffit donc d’appeler la commande suivante :

cookiecutter https://gitlab.yapbreak.fr/olivaa/python-gitlab-cookie

et de répondre aux quelques questions posées :

full_name [Adrien Oliva]:
email [aoliva@example.com]:
project_name [Python Boilerplate]:
project_slug [python_boilerplate]:
project_group [aoliva]:
project_short_description [Python boilerplate short description]:
gitlab_instance [gitlab.com]:
gitlab_pages_deployment [True]:
gitlab_pages [gitlab.io]:
version [0.0.1]:
Select open_source_license:
1 - MIT license
2 - Apache 2.0 license
3 - GNU/GPL v3 license
4 - GNU/LGPL v3 license
5 - GNU/AGPL v3 license
6 - CC0 license
7 - Not open source
Choose from 1, 2, 3, 4, 5, 6, 7 (1, 2, 3, 4, 5, 6, 7) [1]:
pypi_release [True]:
baas_url [https://yapbreak.fr/badge.php]:

Pour une intégration complète du projet dans un réel environement Gitlab, j’ai uploadé une version live sur https://gitlab.yapbreak.fr/olivaa/playschool_python.