Formato de distribuição fonte

O formato padrão atual do formato de distribuição fonte é identificado pela presença de um arquivo pyproject.toml no arquivo de distribuição. O layout de tal distribuição foi originalmente especificado na PEP 517 e está formalmente documentado aqui.

Existe também o formato de distribuição fonte legado, implicitamente definido pelo comportamento do módulo distutils na biblioteca padrão, ao executar setup.py sdist. Este documento não tenta padronizar este formato, exceto para observar que se uma distribuição de fonte legada contém um arquivo PKG-INFO usando metadados versão 2.2 ou posterior, então ela DEVE seguir as regras aplicáveis às distribuições de fonte definidas nos metadados especificação.

Distribuições fonte também são conhecidas pela abreviação sdists.

Árvores fonte

Uma árvore fonte é uma coleção de arquivos e diretórios – como um checkout local do sistema de controle de versão – que contém um arquivo pyproject.toml que pode ser usado para construir uma distribuição fonte a partir dos arquivos e diretórios contidos. PEP 517 e PEP 518 especificam o que é necessário para atender à definição do que pyproject.toml deve conter para que algo seja considerado uma árvore fonte.

Nome de arquivo da distribuição fonte

O nome do arquivo de um sdist foi padronizado na PEP 625. O nome do arquivo deve estar no formato {name}-{version}.tar.gz, sendo {name} normalizado de acordo com as mesmas regras das distribuições binárias (veja Formato de distribuição binária) e {version} é a forma canonizada da versão do projeto (veja Especificadores de versão).

O nome e os componentes da versão do nome do arquivo DEVEM corresponder aos valores armazenados nos metadados contidos no arquivo.

O código que produz um arquivo de distribuição de origem DEVE dar ao arquivo um nome que corresponda a essa especificação. Isso inclui o gancho build_sdist de um backend de construção.

Código que processa arquivos de distribuição fonte PODE reconhecer arquivos de distribuição fonte pelo sufixo .tar.gz e a presença de precisamente um hífen no nome do arquivo. O código que faz isso pode usar o nome e versão da distribuição a partir do nome do arquivo sem verificação adicional.

Formato de arquivo de distribuição fonte

Uma distribuição fonte .tar.gz (sdist) contém um único diretório de nível superior chamado {name}-{version} (por exemplo, foo-1.0), contendo os arquivos fonte do pacote. O nome e a versão DEVEM corresponder aos metadados armazenados no arquivo. Este diretório também deve conter um pyproject.toml no formato definido em Declarando dependências do sistema de construção e um arquivo PKG-INFO contendo metadados no formato descrito na especificação Especificações de metadados principais. Os metadados DEVEM estar em conformidade com pelo menos a versão 2.2 da especificação de metadados.

Nenhum outro conteúdo de um sdist é necessário ou definido. Os sistemas de construção podem armazenar qualquer informação necessária no sdist para construir o projeto.

O tarball deve usar o formato tar pax POSIX.1-2001 moderno, que especifica nomes de arquivo baseados em UTF-8. Em particular, os arquivos de distribuição fonte devem ser legíveis usando o módulo tarfile de biblioteca padrão com o sinalizador aberto ‘r:gz’.