Aide mémoire à l'utilisation des 'entry points' de setuptools

 · Jean Schurger
  • Créer un module dans un répertoire dédié.
mkdir tarte
$EDITOR tarte/*__init__.py*

Y écrire votre morceau de code préféré.
def aux():
    print "Pommes !"
  • Créer un fichier setup.py contenant des informations à propos de votre paquetage et les points d'entrée:
from setuptools import setup

setup (
    name='TarteAuxPommes',
    version="1.0",
    description="De saison.",
    author="Jean Schurger",
    packages=['tarte'],
    entry_points="""
        [Tarte]
        un_nom = tarte:aux
    """,
)
  • Tester dans un environnement
virtualenv
sudo python setup.py install

(ou 'develop' si vous voulez pouvoir modifier le code en place tout en mimant un version installée)
In [1]: from pkg_resources import load_entry_point

In [2]: f = load_entry_point('TarteAuxPommes', 'Tarte', 'aux')
Out[2]: f()
Pommes !
  • Vous pouvez aussi découvrir des points d'entrée.

In a more complex application, you may have more plugins ! and you may want to discover them and maybe load them too !

In [1]: from pkg_resources import iter_entry_points

In [2]: for object in iter_entry_points(group='Baz.plugin'):
...:    print object
...:
...:
Foooo = super_plugin:Foo

In [3]: object.load()
Out[3]:

In [4]: _().super_function()
Foo plugin loaded !
Bar!