Sobre o projeto

nepenthe é uma ferramenta para construir, versionar e distribuir grandes ambientes compartilhados conda/PyPI. O objetivo declarado é permitir que uma equipe descreva um ambiente uma vez, resolva-o uma vez com rattler, congele o resultado em um arquivo de bloqueio portátil e publique esse bloqueio em um registro versionado em qualquer backend de armazenamento, para que cada máquina instale exatamente o mesmo ambiente sem resolver novamente. Principais capacidades descritas no README: - Composição baseada em manifesto: manifestos de ambiente declarativos em vez de arquivos de requisitos espalhados. - Resolução nativa via rattler (Rust puro), evitando a sobrecarga do interpretador Python. - Bloqueios portáteis: arquivos rattler_lock multiplataforma destinados a serem reproduzíveis por construção. - Resolução multiplataforma: resolva linux-64, osx-arm64 e win-64 de um único host em um único bloqueio multiplataforma. - Backends plugáveis: leia/escreva especificações para file://, s3:// e https://, com canais apontando para qualquer servidor, como um Artifactory interno. - Registro versionado: versionamento independente por ambiente com bloqueios imutáveis endereçados por conteúdo. - Instale sem conda: vincule um bloqueio a um prefixo usando rattler, sem necessidade de conda/mamba/micromamba. - Compatibilidade com conda: exporte qualquer bloqueio como uma especificação @EXPLICIT utilizável com conda create --file. - Postura de segurança: as credenciais são injetadas no momento do uso e não são escritas nos artefatos. O projeto cobre um ciclo de vida de produtor a consumidor: compor um manifesto, resolver e congelar bloqueios multiplataforma, publicá-los em um registro versionado e instalá-los sem conda, seja pela CLI ou do Python. Também menciona pacotes/unpack para ambientes isolados e uma integração pyproject.toml que mantém as dependências de um projeto em sincronia com o ambiente que ele consome. Exemplo de fluxo de trabalho do README: um manifesto YAML declara o nome do projeto, canais, plataformas, versão do Python e dependências raiz; um comando de build produz um arquivo de bloqueio totalmente fixado; um comando de export renderiza o bloqueio como uma especificação conda @EXPLICIT; e a instalação pode ser feita com conda a partir da especificação ou com nepenthe a partir do bloqueio. A CLI é um único binário multicall onde np e npb são symlinks para nepenthe, com npb atuando como um atalho para o subcomando build. Um binding Python espelha a CLI para operações de build, create e activate. Uma seção pyproject.toml pode fixar o nome, registro e versão do ambiente, com comandos sync e check para instalar o ambiente referenciado e verificar se as dependências do projeto são compatíveis. O README posiciona o nepenthe como distinto de arquivos de bloqueio por projeto (pixi, uv) e manifestos resolvidos novamente (environment.yml): ele constrói e distribui um ambiente compartilhado consumido por muitos repositórios, versionado e imutável. A documentação é organizada em uma wiki cobrindo motivação, conceitos, manifestos, canais e Artifactory, registro, instalação, consumo em um projeto, empacotamento, a API Python e backends, além de material para contribuidores sobre arquitetura e compilação do código-fonte. O projeto é licenciado sob Apache-2.0.