À propos du projet
nepenthe est un outil pour construire, versionner et distribuer de grands environnements conda/PyPI partagés. L'objectif déclaré est de permettre à une équipe de décrire un environnement une fois, de le résoudre une fois avec rattler, de geler le résultat dans un fichier de verrouillage portable, et de publier ce verrou dans un registre versionné sur n'importe quel backend de stockage, afin que chaque machine installe exactement le même environnement sans re-résolution.
Capacités clés décrites dans le README :
- Composition basée sur des manifestes : des manifestes d'environnement déclaratifs au lieu de fichiers d'exigences dispersés.
- Résolution native via rattler (Rust pur), évitant la surcharge de l'interpréteur Python.
- Verrous portables : fichiers rattler_lock multi-plateformes destinés à être reproductibles par construction.
- Résolution multi-plateforme : résoudre linux-64, osx-arm64 et win-64 depuis un seul hôte dans un verrou multi-plateforme unique.
- Backends enfichables : lire/écrire des spécifications vers file://, s3:// et https://, avec des canaux pointant vers n'importe quel serveur tel qu'un Artifactory interne.
- Registre versionné : versionnage indépendant par environnement avec des verrous immuables adressés par contenu.
- Installation sans conda : lier un verrou dans un préfixe en utilisant rattler, sans nécessiter conda/mamba/micromamba.
- Compatibilité conda : exporter tout verrou comme une spécification @EXPLICIT utilisable avec conda create --file.
- Posture de sécurité : les identifiants sont injectés au moment de l'utilisation et non écrits dans les artefacts.
Le projet couvre un cycle de vie producteur-consommateur : composer un manifeste, résoudre et geler des verrous multi-plateformes, les publier dans un registre versionné, et les installer sans conda, soit depuis la CLI, soit depuis Python. Il mentionne également des bundles pack/unpack pour environnements isolés (air-gapped) et une intégration pyproject.toml qui maintient les dépendances d'un projet en synchronisation avec l'environnement qu'il consomme.
Exemple de flux de travail du README : un manifeste YAML déclare le nom du projet, les canaux, les plateformes, la version Python et les dépendances racines ; une commande de construction produit un fichier de verrouillage entièrement épinglé ; une commande d'exportation rend le verrou comme une spécification conda @EXPLICIT ; et l'installation peut être effectuée soit avec conda à partir de la spécification, soit avec nepenthe à partir du verrou. La CLI est un binaire multicall unique où np et npb sont des liens symboliques vers nepenthe, npb agissant comme un raccourci pour la sous-commande de construction. Une liaison Python reflète la CLI pour les opérations de construction, création et activation. Une section pyproject.toml peut épingler un nom d'environnement, un registre et une version, avec des commandes sync et check pour installer l'environnement référencé et vérifier que les dépendances du projet sont compatibles.
Le README positionne nepenthe comme distinct des fichiers de verrouillage par projet (pixi, uv) et des manifestes re-résolus (environment.yml) : il construit et distribue un environnement partagé consommé par de nombreux dépôts, versionné et immuable. La documentation est organisée dans un wiki couvrant la motivation, les concepts, les manifestes, les canaux et Artifactory, le registre, l'installation, la consommation dans un projet, l'empaquetage, l'API Python et les backends, plus du matériel pour contributeurs sur l'architecture et la construction depuis les sources. Le projet est sous licence Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.