Serenata Toolbox no PyPI

Um roadmap para liberar um módulo no Python Package Index ;)

Jessica Temporal
Operação Serenata de Amor

--

Eventualmente pessoas que desenvolvem software chegam num momento que possuem um projeto que pode ser empacotado e distribuído para a comunidade. Para quem programa em Python é comum rodar um pip install — semelhante ao gem install do Ruby e ao npm install do Node — e instalar módulos Python disponíveis no PyPI. Pra quem não conhece, o PyPI é a casa mais famosa de pacotes Python, o index de pacotes Python.

Disclaimer: Originalmente a ideia aqui era mostrar o uso do TestPyPI antes do lançamento “de verdade”. Porém, como o PyPI está passando pela migração para a plataforma nova, o upload de arquivos para o TestePyPI ainda não está funcionando ;)

A primeira tentativa…

Não acertar logo de cara algo novo é completamente normal. Ouso dizer ainda que falhar é o esperado.

Programação orientada a erros — Ana Schwendler

O primeiro lançamento de um módulo Python que fiz falhou. Isso me fez rever os passos que executei e entendê-los melhor. Aprendi por exemplo, que alguns desses passos eram equivalentes.

Liberar esse módulo me fez entender melhor os passos que executei e também como eles se relacionam. Além disso, a migração para o novo PyPI trouxe uma série de melhorias e resolução de bugs para a plataforma.

Por onde começar

  • Registre-se no novo site do PyPI.
  • Instale o Twine. Existem outras formas de fazer o upload, porém o Twine irá facilitar muito essa parte do processo. Eu usei o pip install twine no ambiente virtual que uso no projeto.
  • Se já não possui um, crie o seu arquivo .pypirc na sua home. Assim como outros arquivos de configuração como o .bashrc e o .vimrc, esse arquivo irá conter algumas configurações que alguns comandos irão usar. O meu .pypirc está assim no momento:
[distutils]
index-servers=
pypitest
pypi
[pypitest]
repository: https://test.pypi.org/legacy/
username: serenata
password: ***
[pypi]
repository: https://upload.pypi.org/legacy
username: serenata
password: ***

Você pode também usar o exemplo encontrado na documentação do PyPI para criar o seu.

A verdadeira (ou quase isso) sequência de passos

1. Source distribution

Geralmente gerada pelo comando sdist, source distributions são arquivos versionados que são utilizados para criar um build do seu módulo. Ele vai conter vários arquivos que são utilizados no lançamento. Quando o comando terminar sua execução, você poderá encontrar seu arquivo de distribuição dentro de uma pasta dist/ no seu diretório.

$ python setup.py sdist

2. Wheels

O arquivo wheel (.whl) é um pacote que já teve o seu build feito. Então você não precisa passar pelo processo de build novamente para realizar a instalação daquele pacote isso torna a instalação do pacote mais rápida para o usuário. Se quiser, você pode ler mais sobre wheels na documentação de empacotamento.

$ python setup.py bdist_wheel --plat-name='any'

3. Registrando

Antigamente (ano passado =P) era necessário fazer um passo de registro. Com a migração esse passo não é mais necessário! o/

4. Upload

Depois desses dois passos executados é só usar o Twine para o upload:

$ twine upload dist/*

E prontinho! Pode ir lá conferir o lançamento da Serenata Toolbox.

Para acompanhar o projeto

Para saber mais sobre o que acontece no dia a dia do projeto, nos siga no Facebook e comece por aqui para contribuir com código.

Além disso você pode fazer com que a Operação Serenata de Amor continue à todo vapor. Também estamos aceitando doações pela carteira de Bitcoin 1Gbvfjmjvur7qwbwNFdPSNDgx66KSdVB5b.

--

--

Jessica Temporal
Operação Serenata de Amor

DevRel 🥑 • Author • 🎙Podcaster @pizzadedados • Creator of GitStudyCards.com • GitHub ⭐️ • cross-stitcher & knitter • 🇧🇷 & 🇨🇦 • she/her