Lors de la création d'un librairie python, nous la livrons avec un fichier setup.py, afin que celle ci soit installable facilement avec les outils pip ou easy_install

Dans ce fichier nous devons indiquer dans quelles catégories sera classée notre bibliothèque. Pour cela nous avons une liste définit à cette adresse

Je vais vous montrer la méthode que j'utilise pour maintenir cette liste à jour facilement (elle évolue en fonction des versions de python notamment).

La première étape va être de créer un fichier CLASSIFIERS dans lequel nous mettons tous le contenu de l'URL ci dessus.

wget --no-check-certificate -O CLASSIFIERS https://pypi.python.org/pypi?%3Aaction=list_classifiers

Nous avons maintenant un fichier CLASSIFIERS au même niveau que notre fichier setup.py, nous allons commenté toutes les lignes de ce fichier en les préfixant avec un # (qui est aussi le symbole pour mettre en comentaire toute une ligne en python). Pour cela nous allons utiliser sed

sed -i 's/^/#/' CLASSIFIERS

Ensuite ouvrez le fichier CLASSIFIERS et enlever le # de commentaire devant les catégories qui qualifie le mieux votre bibliothèque. puis enregistrer le fichier

Pour vérifier rapidement les catégories retenues, executer la commande ci-dessous

$ cat CLASSIFIERS |grep -v "^#"

Development Status :: 4 - Beta
License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Natural Language :: English
Natural Language :: French
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3.3
Programming Language :: Python :: 3.4
Topic :: Database

Ensuite ouvrez votre fichier setup.py et ajouter y la fonction ci-dessous

def read_classifiers():
    """
    Open CLASSIFIERS file, and return a list with line doesn't start with #
    """
    return [clf for clf in open('CLASSIFIERS', 'r').read().split('\n') if (clf and not clf.startswith('#'))]

Cette fonction créer une liste python contenant seulement les lignes non commentés et non vide.

Dans la partie setup() ajouter ceci au niveau de l'attirbut classifiers

setup(
    name='python-bibliotheque',
    # Les autres attributs
    classifiers=read_classifiers(),
)

Ensuite pour mettre à jour le fichier CLASSIFIERS, sauvegarder la version actuelle sosu un autre nom, refaite la première manipulation pour récupérer la dernière version, et recommenter chaque ligne faite un diff entre le nouveau fichier et l'ancien pour obtenir un patch des catégories sélectionnés précédement, appliquer le patch, et décommenter les nouvelles catégories qui vous interesserait.

Comments