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 não está padronizado atualmente, embora a forma de fato seja {name}-{version}.tar.gz, onde {name} é a forma canônica do nome do projeto (veja PEP 503 para as regras de canonização) com caracteres - substituídos por _ 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.

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.