Atualização da Biblioteca BrERP Web Service Connector - Python
O brerpwsc-python
Com o intuito de facilitar as requisições aos Web Services SOAP do BrERP, uma série de bibliotecas foram criadas, dentre elas, o brerpwsc-python. Este conector é um projeto open source, e como tal, tem seu código publicado sobre a licença GPL-3 no GitHub da dev&Co.. Além disso, visando facilitar ainda mais sua utilização, o brerpwsc-php foi publicado no Pypi, um gerenciador de pacotes Python. Desta forma, ele pode ser instalado em seu ambiente de desenvolvimento python com um simples comando:
pip intall brerpwsc
Atualizando o projeto no GitHub
O brerpwsc-python está publicado no GitHub sobre o seguinte link:
https://github.com/devcoffee/brerpwsc-python
Clonando o Repositório e Consolidando Alterações
Para clonar o repositório, basta executar o comando dentro de seu workspace:
git clone https://github.com/devcoffee/brerpwsc-python
Feito isso, utilize um editor de código de sua escolha para fazer as alterações necessárias, e por fim, consolide suas alterações no repositório através dos comandos:
git add .
git commit -m "Sua mensagem de commit intuitiva e objetiva aqui"
git push -u origin master
Publicando uma Nova Release no GitHub
Após consolidar suas mudanças, libere uma nova release no GitHub, ao clicar na aba releases e após em draft new release.
Na tela de publicação descreva as modificações e informações intuitivas e objetivas sobre a nova release, como correções de bugs e novas features, e incremente o contador de versão
Atualizando o pacote no Pypi
Pypi é um repositório de bibliotecas Python, e todos os pacotes lá publicados, ficam disponíveis para serem instalados diretamente, via pip, ou pipenv. O projeto brerpwsc-python está publicado no Pypi sobre o seguinte link:
https://pypi.org/project/brerpwsc/
O processo de atualização no Pypi é um pouco verboso, uma vez que o projeto deve ser preparado localmente, e publicado por um utilitário chamado twine.
Ajustes no Setup
O primeiro passo para se atualizar o pacote, é atualizar a versão incremental no arquivo setup.py, encontrado na raíz do projeto.
É extremamente importante incrementar de forma coerente o contador de versões, uma vez que o Pypi tem uma gerencia muito forte de versões, e não aceitará uploads de versões iguais de um pacote.
Compilando o pacote
O próximo passo, é compilar o pacote em um arquivo .tar.gz. Para isso, execute o arquivo setup.py com o parâmetro sdist
python setup.py sdist
Após executado o comando, note que uma nova pasta, contendo o projeto compilado em um arquivo .tar.gz foi criada.
O arquivo MANIFEST
Existe um arquivo nomeado como MANIFEST na raiz do projeto. Este arquivo descreve quais arquivos devem ser compilados para a distribuição.
Portanto, sempre que uma nova classe de interesse for adicionada ao projeto, ela deve ser adicionada ao arquivo MANIFEST, caso contrário, não será inclusa no pacote distribuído.
Criando o arquivo .pypirc
Os parâmetros para o upload do pacote devem ser definidos em um arquivo chamado .pypirc no diretório home do usuário. Esse arquivo possui parâmetros de login e de url de repositórios alternativos, como o pypi-test, um servidor teste de distribuição de arquivos. Dito isso, crie um arquivo .pypirc em sua home com o seguinte layout:
[distutils]
index-servers=
pypi
pypitest
[pypi]
username = usuário
password = senha
[pypitest]
repository = https://test.pypi.org/legacy/
username = usuário
password = senha
Publicando o arquivo via twine
Com o arquivo pypirc configurado, e o projeto pronto para a distribuição, resta apenas publica-lo. Para isso, execute o seguinte comando no terminal:
twine upload dist/* -r pypi
O argumento pypi referencia o par âmetro de mesmo nome, configurado no arquivo .pypirc. Desta forma, caso fosse desejado enviar o arquivo para um ambiente de teste, e geralmente é muito desejável, bastaria trocar o argumento para pypytest
twine upload dist/* -r pypitest
Realizado este procedimento sem erros, o pacote já estará disponível em sua nova versão para ser instalado via pip ou pipenv em seu ambiente de desenvolvimento python