Sobre el proyecto

nepenthe es una herramienta para construir, versionar y distribuir grandes entornos compartidos conda/PyPI. El objetivo declarado es permitir que un equipo describa un entorno una vez, lo resuelva una vez con rattler, congele el resultado en un archivo de bloqueo portátil y publique ese bloqueo en un registro versionado en cualquier backend de almacenamiento, de modo que cada máquina instale exactamente el mismo entorno sin volver a resolver. Las capacidades clave descritas en el README: - Composición basada en manifiestos: manifiestos de entorno declarativos en lugar de archivos de requisitos dispersos. - Resolución nativa mediante rattler (Rust puro), evitando la sobrecarga del intérprete de Python. - Bloqueos portátiles: archivos rattler_lock multiplataforma diseñados para ser reproducibles por construcción. - Resolución multiplataforma: resuelve linux-64, osx-arm64 y win-64 desde un solo host en un único bloqueo multiplataforma. - Backends conectables: lectura/escritura de especificaciones en file://, s3:// y https://, con canales que apuntan a cualquier servidor, como un Artifactory interno. - Registro versionado: versionado independiente por entorno con bloqueos inmutables direccionados por contenido. - Instalación sin conda: enlaza un bloqueo a un prefijo usando rattler, sin necesidad de conda/mamba/micromamba. - Compatibilidad con conda: exporta cualquier bloqueo como una especificación @EXPLICIT utilizable con conda create --file. - Postura de seguridad: las credenciales se inyectan en el momento de uso y no se escriben en los artefactos. El proyecto cubre un ciclo de vida de productor a consumidor: componer un manifiesto, resolver y congelar bloqueos multiplataforma, publicarlos en un registro versionado e instalarlos sin conda, ya sea desde la CLI o desde Python. También menciona paquetes de empaquetado/desempaquetado aislados y una integración con pyproject.toml que mantiene las dependencias de un proyecto sincronizadas con el entorno que consume. Ejemplo de flujo de trabajo del README: un manifiesto YAML declara el nombre del proyecto, canales, plataformas, versión de Python y dependencias raíz; un comando de construcción produce un archivo de bloqueo completamente fijado; un comando de exportación renderiza el bloqueo como una especificación conda @EXPLICIT; y la instalación se puede realizar con conda desde la especificación o con nepenthe desde el bloqueo. La CLI es un único binario multicall donde np y npb son enlaces simbólicos a nepenthe, actuando npb como un atajo para el subcomando de construcción. Un enlace de Python refleja la CLI para operaciones de construcción, creación y activación. Una sección de pyproject.toml puede fijar un nombre de entorno, registro y versión, con comandos sync y check para instalar el entorno referenciado y verificar que las dependencias del proyecto sean compatibles. El README posiciona a nepenthe como distinto de los archivos de bloqueo por proyecto (pixi, uv) y de los manifiestos re-resueltos (environment.yml): construye y distribuye un entorno compartido consumido por muchos repositorios, versionado e inmutable. La documentación está organizada en una wiki que cubre motivación, conceptos, manifiestos, canales y Artifactory, registro, instalación, consumo en un proyecto, empaquetado, la API de Python y backends, además de material para contribuyentes sobre arquitectura y compilación desde el código fuente. El proyecto está licenciado bajo Apache-2.0.