Closed hildogjr closed 6 months ago
Esse bug já foi corrigido? @crislanealves @JoaoCarabetta @d116626
Me parece que os requerimentos foram estabelecidos através de pip freeze > requirements.txt
.
Em minha visão, isso torna a biblioteca muito restritiva para instalação, visto que ela não é para uma aplicação final, mas para exploração do dado ainda.
@hildogjr, concord contigo. E usando o pip freeze
ainda gera outro problema: trazer como dependência tudo que está instalado no ambiente, mas não necessariamente sendo usado de fato no projeto.
Para fins de controle de dependência, sugiro usar 100% o poetry
. Ele tem essa flexibilidade que você comentou.
Esse bug já foi corrigido? @crislanealves @JoaoCarabetta @d116626
Não, não. Quer seguir com esse? Manda bala!
Para fins de controle de dependência, sugiro usar 100% o poetry. Ele tem essa flexibilidade que você comentou.
Será que o arquio requirements-dev.txt
está, inclusive, listando dependências que não precisamos em tempo de execução da biblioteca, visto que ele é propositalmente chamado "dev". É que este é o único arquivo de requerimentos que o setup.py
usa.
@hildogjr
Na verdade as dependências estão bem confusas. Tem várias dependências espalhadas:
pyproject.toml
na raiz do projeto -> só tem dependência do mkdocs
e nenhuma pra rodar o projeto de fato.python-package/pyproject.toml
-> este usando uma versão antiga do poetry>=1.2 (poetry está na 1.6)python-package/requirements-dev.txt
-> Aqui de fato tem várias dependências do ambiente virtual que não são de fato importadas/usadas no projeto.setup.py
com poetry
, o que também confunde mais ainda no setup do projeto e das dependências.E eu reparei também que o projeto tem várias coisas fixas para Linux/MacOS. Um exemplo abaixo:
Entre na pasta local do repositório usando
cd mais/
e suba o ambiente localmente:make create-env . .mais/bin/activate cd python-package/ python setup.py develop
REPO=$(shell basename $(CURDIR))
create-env:
python3 -m venv .$(REPO);
. .$(REPO)/bin/activate; \
pip3 install --upgrade -r python-package/requirements-dev.txt; \
python python-package/setup.py develop;
O comando sugerido acima só funciona em Linux/MacOS, não funciona no Windows. E porque usar o venv
+ setup.py
se o projeto usa poetry
que gerencia dependências e ambiente virtual ao mesmo tempo?
Dá pra melhorar muito essa parte do setup pra ser independente de sistema operacional, mas seria outra issue.
O que eu tentei fazer?
Comecei um ambiente virtual novo do zero, sem nenhuma biblioteca, e fui instalando uma a uma conforme os testes foram falhando por ModuleNotFoundError
. Eu consegui criar o ambiente virtual com todas as dependências, mas falhou quase todos os testes.
============================================================================== short test summary info ===============================================================================
FAILED python-package\tests\test_cli.py::test_cli_dataset_create - AssertionError: assert b'Datasets `pytest` and `pytest_staging` were created in BigQuery' in b''
....
FAILED python-package\tests\test_cli.py::test_cli_dataset_publicize - AssertionError: assert b'Dataset `pytest` became public!' in b''
FAILED python-package\tests\test_cli.py::test_cli_dataset_delete - AssertionError: assert b'Datasets `pytest` and `pytest_staging` were deleted in BigQuery' in b''
========================================================= 53 failed, 2 passed, 17 skipped, 18 warnings, 67 errors in 45.96s ==========================================================
Tentei também jogar todas as dependências do python-package/pyproject.toml
para o pyproject.toml
da pasta raiz, mas obtive os mesmos erros dos testes. Talvez seja erro do projeto ao rodar no Windows de forma geral.
Alguém pode me dar uma luz?
Você verificou se os arquivos em tests/
usam bibliotecas extras? É comum alguns projetos terem o requirements.txt
e o requirements-dev.txt
com as dependências extras para rodas os testes.
Com esta sua primeira fase já está sendo possível rodas um "simples" import e query de dados? (sem rodas os testes)
Você verificou se os arquivos em tests/ usam bibliotecas extras?
Sim, basicamente com o ambiente virtual vazio, eu fui rodando os testes e instalando cada biblioteca que gerava erro de ModuleNotFoundError
.
É comum alguns projetos terem o requirements.txt e o requirements-dev.txt com as dependências extras para rodas os testes.
Sim, inclusive o poetry
tem uma separação de dependências da biblioteca em si e de desenvolvimento, que ficam em um grupo separado em [tool.poetry.group.dev.dependencies]
, resolvendo essa questão de ter 2 arquivos requirements.txt
e requirements-dev.txt
.
Mas como não conheço o projeto a fundo, não sei distinguir quais são do projeto em si e quais são de desenvolvimento.
Com esta sua primeira fase já está sendo possível rodas um "simples" import e query de dados?
Vou fazer esse teste e retorno aqui.
Bom dia pessoal!
Essas questões de dependências foram endereçadas para a versão 2.x do pacote, que está na branch v2.0.0 e no PR #1678. Como já existe esse esforço de aprimorar o gerenciamento de dependências, penso que seria excelente se pudessem validar, nos ambientes de vocês, as pré-releases da v2. A mais recente no momento de escrita dessa mensagem é a 2.0.0b15
. Só queria pedir também, se possível, que lessem o changelog (está no PR mencionado) para endereçar eventuais extras que queiram instalar.
@gabriel-milan, obrigado por situar. Não sabia que essa issue já estava endereçada na release nova.
Eu achei que ficou bem mais claro agora a questão das dependências, todas centradas em um único pyproject.toml
, com escopos e grupos bem definidos.
Consegui instalar o ambiente virtual sem problemas. O único ponto que tive foi ao rodar os testes:
ImportError while loading conftest 'C:\Users\Henrique\Documents\area de trabalho\pessoal\repos\mais\python-package\tests\conftest.py'.
tests\conftest.py:11: in <module>
from ruamel import yaml as ryaml
E ModuleNotFoundError: No module named 'ruamel'
E eu conferi algumas vezes pra verificar se o ambiente virtual estava ativo e se essa dependência estava instalada nele, e de fato estava.
$ poetry show ruamel.yaml
name : ruamel-yaml
version : 0.17.40
description : ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order
dependencies
- ruamel.yaml.clib >=0.2.7
required by
- semgrep >=0.16.0,<0.18
Juro que não sei que acontece com essa biblioteca em específico.
A questão do ambiente virtual ficou bem mais fácil de realizar o setup inicial inclusive para desenvolvedores contribuidores.
E ainda fica a sugestão de centralizar 100% das dependências, ambientes virtuais e publicação com o poetry
, como disse acima, atualizando inclusive a forma como cria o ambiente virtual citada no CONTRIBUTING.md
.
Há mistura do setup.py com poetry, o que também confunde mais ainda no setup do projeto e das dependências. E eu reparei também que o projeto tem várias coisas fixas para Linux/MacOS. Um exemplo abaixo:
Entre na pasta local do repositório usando cd mais/ e suba o ambiente localmente: ... O comando sugerido acima só funciona em Linux/MacOS, não funciona no Windows. E porque usar o venv + setup.py se o projeto usa poetry que gerencia dependências e ambiente virtual ao mesmo tempo?
O único ponto que tive foi ao rodar os testes
Os testes ainda precisam ser todos revistos, muitos deles já não fazem mais sentido para a versão 2.
E ainda fica a sugestão de centralizar 100% das dependências, ambientes virtuais e publicação com o
poetry
A ideia é essa sim, se não me engano a versão 2 deve conter somente o pyproject.toml
.
atualizando inclusive a forma como cria o ambiente virtual citada no
CONTRIBUTING.md
.
Esse é um ponto bem lembrado, será necessário revisar a documentação antes de lançar efetivamente essa versão do pacote.
@gabriel-milan, obrigado pelo feedback. Tem alguma atuação nesta issue em específico (arrumar as dependências) que necessite de ajuda?
E sobre os outros tópicos que você mencionou de limpeza dos testes e de ajustes na documentação, seria legal ter issues também. E caso alguma delas já esteja sendo desenvolvida por alguém, sugiro deixar claro pra quem é de fora pra não deixar espaço para esforços repetidos e desnecessários.
Tem alguma atuação nesta issue em específico (arrumar as dependências) que necessite de ajuda?
Isso já está resolvido no PR
seria legal ter issues
feito
Dado que problemas relacionados estão sendo tratados em #1691 e #1692, essa issue pode ser fechada.
Descrição A instalação do pacote em linguagem Python trás como dependências versões específicas das bibliotecas, mesmo usando a biblioteca
basedosdados
dentro de um ambiente de desenvolvimento, esta restrição acaba por entrar em conflito com as restrições de outras bibliotecas.Um exemplo disso é a biblioteca
pandas==1.3.5
enumpy==1.21.5
, sendo que a versão estável atual para Pandas é 2.1.1 e para Numpy é 1.26.1. Pandas>=2 é necessário para instalação de outros pacotes de manipulação de dados no mesmo ambiente de desenvolvimento.Comportamento esperado / proposta Atualização do arquivo de requerimentos de instalação
setup.py
para restrições do tipo>=
e não estritamente==
conforme branch https://github.com/hildogjr/mais/tree/python-requeriments.