Fazendo Pull Requests com Jupyter Notebooks
Já imaginou como você daria feedback para uma pessoa que esqueceu de colocar a legenda no eixo x do gráfico?
Quando eu comecei a trabalhar como desenvolvedora back-end as coisas eram loucas. Eu podia fazer deploy sem que ninguém visse meu código e eu só sabia que as coisas iam mal na hora que algum cliente ligava avisando que algo quebrou. Um dia, conversando em um evento eu descobri a existência dos Pull Requests (PRs)! Com eles, as outras pessoas desenvolvedoras poderiam ver meu código e me dar diversos feedbacks, dentre eles como eu poderia melhorar meu código e quais eram as respectivas boas práticas para aquela implementação. Existem diversas vantagens de se trabalhar usando Pull Requests, mas a mais maravilhosa para mim era o de compartilhamento de conhecimento. Para ver mais detalhes sobre como fazer Pull Requests usando o bitbucket veja esse link.
E aí tudo mudou quando eu virei cientista de dados. Eu comecei a trabalhar com Jupyter Notebooks que eram maravilhosos para as minhas pesquisas, ver gráficos, e todos os resultados dos meus códigos, contudo são terríveis para fazer PRs. O Github renderiza os notebooks, mas não é possível comentar neles. Em modo de PR, o que aparece é um JSON que não é fácil de ler.
Para solucionar esse problema fomos atrás das comunidades, especialmente de um projeto que eu admiro muito: o Serenata de Amor. Lá eles utilizam um método relativamente eficaz que é: gerar um .py
além do .ipynb
. Para que isso seja feito automaticamente cada vez que você salvar o seu notebook, basta adicionar esse código ao arquivo ~/.jupyter/jupyter_notebook_config.py
:
Isso já dobrará automaticamente a quantidade dos seus arquivos gerados! Contudo, permite que você possa ver o notebook e comentar no arquivo .py
, na célula que faz sentido para a pessoa modificar.
Vale comentar que também existem outras alternativas para fazer Pull Requests, especialmente se você está trabalhando com código aberto. Uma delas é o reviewNB, que permite o comentário nas células do notebook diretamente, mas a solução deixa de ser gratuita para repositórios privados e só funciona para o Github (pobres usuários do GitLab e BitBucket). Você pode fazer testes com notebooks utilizando o nbviewer.
Outra boa prática que seguimos é usar uma versão ligeiramente modificada do Cookiecutter Data Science para organizar os nossos projetos. Dessa maneira seguimos a regra “Notebooks are for exploration and communication” — logo, código de extração de dados, feature engineering e tunning de modelos ficam em outros lugares e os notebooks servem principalmente para EDAs (Exploratory Data Analysis) e avaliações. Isso facilita bastante o versionamento e execução destes códigos.
A estrutura de pastas do Cookiecutter permite que qualquer pessoa do time possa trabalhar e contribuir com a pesquisa de todos os cientistas de dados da Creditas.
Tem interesse em trabalhar conosco? Nós estamos sempre procurando por pessoas apaixonadas por tecnologia para fazer parte da nossa tripulação! Você pode conferir nossas vagas aqui.