Nous avons vu dans un premier article consacré à setup.py et setuptools comment générer des archives distribuables de notre bibliothèque, nous allons voir maintenant comment les publier sur https://pypi.org/, le dépôt central des bibliothèques Python. La procédure pourra s’appliquer sur n’importe quel hébergement de paquets Python, y compris privé, j’y reviendrai par la suite.
Nous allons utiliser twine pour déployer nos distributions. C’est aujourd’hui l’outil de référence pour déployer des distributions Python notamment grâce à son approche très sécurisée : déploiement via HTTPS et stockage du couple utilisateur/mot de passe de manière sécurisée sur le disque dur local grâce à la bibliothèque keyring.
L’installation est très simple via pip : pip install twine
Avant de passer au déploiement sur PyPI, regardons le fichier setup.py que nous avions construit précédemment :
from setuptools import setup
setup(name="relink",
version="0.0.1",
description="A client for https://rel.ink/ API",
author="Romain Ardiet",
author_email="[email protected]",
packages=["relink", "tests"],
install_requires=["requests"],
extras_require={
"dev": ["requests-mock"],
},
license="Apache 2.0")
On remarque que la description est très brève et ne donne aucune indication sur la manière d’utiliser notre bibliothèque, ce qui n’est pas forcément une bonne chose pour l’expérience développeur.
Nous pouvons ajouter une description beaucoup plus complète via un paramètre long_description. Et pour que celle-ci soit plus facile à éditer nous pouvons l’inclure dans un fichierREADME.mdà côté de setup.py et la lire depuis celui-ci.
Fichier README.md :
relink
========
A client for https://rel.ink/ API
# Usage
from relink.client import RelinkClient
client = RelinkClient()
shortened_url = client.shorten_url("https://news.ycombinator.com/") print(shortened_url) # => 'https://rel.ink/Nn8y9p'
client.get_full_url(shortened_url) # => "https://news.ycombinator.com/"
# License
relink is licensed under the Apache 2.0 license.