---
# System prepended metadata

title: Untitled

---

## Simplificar instalação e distribuição do stoq e stoq-server como pacotes python


### Permitir instalar "core" do stoq sem GTK

##### Por quê

- Permite instalação do stoq-server via pip sem muita dificuldade
- Facilita eventual instalação do stoq-server em Windows
- Instalação e build no CI mais rápida
- Menos código para manter e entender
    
##### Como

- Remover kiwi do setup:
    - [X] stoq-server
    - [X] stoqdrivers
    - [ ] plugins
- Separar pacote stoq
    - [ ] stoq-gtk (tudo relacionado a gui/desktop/gtk)
    - [ ] stoq-domain
    - [ ] stoq-database (patches sql + mágicas de stoqlib.database)
    - [ ] stoq-utils (utils com baixa dependência utilizadas pelos projetos anteriores)
    - [ ] separar em múltiplos repos
- Permitir instalação sem GTK
    - [ ] stoq
    - [X] stoq-server
    - [X] stoqdrivers
    - [X] kiwi
    - [ ] stoq-plugin-nfe
    - [ ] stoq-plugin-nfce
    - [ ] stoq-plugin-sat
    - [ ] outros plugins

### Mover gerenciamento de dependências do APT para poetry (ou similar)

##### Por quê
- Garantia que todas as máquinas rodam mesmas versões das bibliotecas
- Simplifica atualização de versões de libs (por ex. usar a versão mais recente da requests que acabou de receber fix de segurança)
- Auxilia substituição do APT por pip para instalação de pacotes python
    
##### Como
- Organizar dependências usando poetry em:
    - [ ] stoq-domain
    - [ ] stoq-database
    - [ ] stoq-utils
    - [ ] stoq-server
    - [ ] plugins


### Suportar múltiplas versões de python

##### Por quê
- Facilitar trocar de versão de python (3.5 chegou ao fim da vida em 13/09/2020)
- Estar sempre na última versão (ou algo próximo disso) faz com que não precisemos correr um dia atrás de migrar versão deprecated e podemos usufruir de novas features
- Para rodar em outras distros e sistemas operacionais que usam/suportam versões diferentes de python
    
##### Como
- Alterar CI para rodar testes em versões diferentes de python e constantemente mudar essas configs para usar últimas versões do python
    - Usar gitlab CI ou tox
- Arrumar base de código para funcionar na última versão
- Adotar política de idealmente usar sempre a última versão


### Usar PyPI para hospedar pacotes python no lugar de APT repo e eggs via stoq.link

##### Por quê:
- Torna possível manter diferentes versões de todos nossos pacotes uma vez que o apt+PPA dificultam isso
- Mais fácil que custom eggs etc. e com mesma funcionalidade se usarmos repositórios privados python e menos código nosso que precisamos manter, se preocupar com bugs, melhorias etc.
    
##### Como:
- Subir plugins no pypi (privado se necessário) e pinnar versões dos plugins onde necessário


### Melhorar mudanças de banco para que a instância e os diferentes PDVs saibam sobreviver melhor com versões diferentes

##### Por quê:
- Fazer alterações no banco exige um release para sql e outro para código python ou sincronização instancia <> pdv quebra, ou seja, temos que fazer 2 releases para 1 alteração

##### Como:
   - A decidir

### :lipstick: Modernizar / simplificar linting e testes

##### Por quê:
- Vários scripts e dependências (stoq-utils/source-tests.sh por ex.) que provavelmente não vão ser mais necessários com mudanças anteriores
 
##### Como:
- Usar flake8 do pip (no lugar de python-pyflakes)
- Limpar coisas do jenkins
- Simplificar stoq-utils/utils.mk