Gestion des imports

Le module pkg fournit diverses fonctions permettant de faciliter l'import de modules pythons.

Fonctions disponibles

La fonction available vérifie, dans la mesure du possible (ça ne marche par exemple pas pour les modules chargés par GIr, en tout cas tant qu'ils n'ont pas été effectivement chargés), si un module donné (identifié par son nom qualifié) est disponible ou non.

La fonction lookfor cherche des modules au sein d'un package. Elle prend en paramètre le nom qualifié du package, et une fonction chargée de vérifier si le nom des modules trouvé correspond ou non. Il s'agit d'un générateur.

La fonction load permet de charger un module au sein d'un package. Elle prend en paramètre deux arguments principaux, le nom qualifié du package et le nom du module. Si le module a déjà été chargé, il est renvoyé sans plus d'efforts. Deux paramètres supplémentaires peuvent être fournis : un booléen indiquant si le module doit être accessible comme variable dans l'espace de nom de son package ou non (plusieurs des modules dans mes bibliothèques ne sont pas prévus pour être accessibles directement, le package fournissant les interfaces requises), et un autre indiquant si les éventuelles ImportError déclenchées doivent être reportées sur la sortie d'erreur ou passées silencieusement (dans tous les cas, elles n'interrompent rien, la fonction se contentant de renvoyer None).

La fonction automain permet de faciliter la création de lanceurs compilés tout en gardant tout le code utile côté Python. Elle retire de sys.modules l'entrée correspondant à l'exécutable (compilé ou non), puis charge le module __main__ au sein du package de même nom que cet exécutable.

La fonction loadall charge tous les modules contenus dans un package donné, exception faite du module __main__ s'il en existe un. Elle prend en paramètre le nom du package et un booléen indiquant si elle doit charger récursivement les sous-modules quand le package contient d'autres packages. Il s'agit en fait d'une simple combinaison de lookfor et load, les deux paramètres optionnels de cette dernière pouvant d'ailleurs être renseignés de la même manière.

La fonction launchable cherche dans les répertoirs spécifiés par la variable d'environnement $PATH si la commande passée en paramètre est un exécutable ou non, ce qui peut permettre de savoir si un outil externe est utilisable ou non.

La fonction require appelle launchable et déclenche une erreur passée en paramètre si la commande n'est pas accessible. L'erreur par défaut est ImportError, permettant de simuler un échec d'import dans le cas où un module nécessite un programme externe pour fonctionner.

La fonction giload charge un module depuis GIr, en automatisant l'étape de vérification de version qui génère des avertissements sur la sortie d'erreur si elle est omise, sans pour autant devoir multiplier les manipulations inutiles.