Best-of-python Visualizer!
WebUma opção simples e fácil para acompanhar o ecossitema python
Best-of-Python Explorer
Best-of-Python Explorer é um dashboard open source construído sobre os dados do projeto best-of-python. Ele oferece uma interface visual e interativa para explorar o ecossistema de bibliotecas Python — dando aos desenvolvedores uma visão clara de quais ferramentas estão ganhando tração, como a adoção evolui ao longo do tempo e onde cada biblioteca se posiciona dentro da sua categoria.
Motivação
O ecossistema Python é vasto. Escolher a biblioteca certa para uma tarefa exige navegar por centenas de opções distribuídas em dezenas de categorias. Projetos como o best-of-python fazem o trabalho duro de curar e pontuar bibliotecas com base em dados reais do GitHub e do PyPI — mas o resultado é um arquivo markdown estático. Este projeto transforma esses dados em algo que você pode explorar de forma visual e interativa.
O que ele faz
Página de Ranking
Exibe as principais bibliotecas Python em todas as categorias ou dentro de uma categoria específica. As bibliotecas são ordenadas pela métrica de sua escolha:
- Stars — contagem de estrelas no GitHub, um indicador de popularidade na comunidade
- Forks — contagem de forks no GitHub, um indicador de contribuição ativa
- Downloads — contagem de downloads mensais no PyPI, um indicador de adoção real
A página atualiza dinamicamente conforme você muda os filtros. As métricas são buscadas ao vivo na API do GitHub e no pypistats.org, e depois armazenadas em cache local por 24 horas.
Página de Crescimento
Compara a trajetória de downloads de até 5 bibliotecas lado a lado ao longo do tempo. Selecione uma janela de tempo — últimos 6 meses, último ano ou histórico completo — e veja como os downloads mensais no PyPI de cada biblioteca evoluem. Útil para identificar bibliotecas em ascensão, ferramentas em declínio ou padrões sazonais de adoção.
Fontes de dados
| Fonte | O que fornece | Autenticação |
|---|---|---|
| best-of-python | Catálogo de bibliotecas com categorias | Nenhuma |
| GitHub REST API | Contagem de stars e forks por repositório | Opcional (token aumenta o rate limit) |
| pypistats.org | Histórico mensal de downloads por pacote | Nenhuma |
Os dados são buscados na primeira execução e armazenados em disco com TTL de 24 horas. Visitas subsequentes dentro dessa janela são servidas do cache sem nenhuma chamada à API.
Stack tecnológica
| Ferramenta | Função |
|---|---|
| Python 3.12 | Runtime |
| Streamlit | Framework web e interface |
| Plotly | Gráficos interativos |
| Polars | Manipulação de dados |
| requests + PyYAML | HTTP e parsing de YAML |
| diskcache | Cache em disco com TTL |
| loguru | Logging estruturado |
| python-dotenv | Gerenciamento de variáveis de ambiente |
| uv | Gerenciamento de dependências |
| ruff + mypy | Linting e verificação de tipos |
Estrutura do projeto
best-of-python-dashboard/
├── app.py # Página Home e entry point
├── pages/
│ ├── 1_Ranking.py # Página de Ranking (UC-01)
│ └── 2_Growth.py # Página de Crescimento (UC-02)
├── src/
│ ├── data/
│ │ ├── loader.py # Busca e parseia o projects.yaml
│ │ ├── github_client.py# Cliente da API do GitHub com busca paralela
│ │ └── pypi_client.py # Cliente do pypistats.org com busca paralela
│ ├── cache/
│ │ └── manager.py # Padrão cache-aside com diskcache
│ └── utils/
│ ├── logger.py # Configuração do loguru
│ └── styles.py # Injeção de CSS global
├── .streamlit/
│ └── config.toml # Configuração do tema
├── pyproject.toml
└── .env # GITHUB_TOKEN (não versionado)
Como rodar
Pré-requisitos
- Python 3.12+
- uv
Instalação
git clone https://github.com/<seu-usuario>/best-of-python-dashboard
cd best-of-python-dashboard
uv sync
Configuração (opcional)
Crie um arquivo .env na raiz do projeto para definir um token do GitHub. Sem ele,
o app funciona mas está limitado a 60 requisições por hora na API do GitHub:
GITHUB_TOKEN=seu_token_aqui
Executando
uv run streamlit run app.py
Licença
Este projeto é licenciado sob CC BY-SA 4.0, herdada do projeto best-of-python. É obrigatório dar atribuição ao projeto original, e qualquer trabalho derivado deve ser distribuído sob a mesma licença.
Screenshots
Tags
Contato
Publicado por
@davicc
29/03/2026 às 15:59