Um toolkit de produtividade para desenvolvedores em Python
Project description
pybrige
pt-BR: Uma coleção de utilitários para desenvolvedores Python — logging elegante, medição de tempo, retry automático, manipulação de JSON, tratamento de strings e muito mais.
en-US: A collection of developer utilities for Python — elegant logging, timing, retry decorator, JSON helpers, string utilities and more.
✨ Visão Geral
O pybrige é um toolkit de produtividade para desenvolvedores Python, projetado para acelerar tarefas comuns do dia a dia com ferramentas robustas e fáceis de usar.
Chega de copiar e colar o mesmo código de utilidade em todos os seus projetos! Com pybrige você obtém soluções prontas e testadas para configuração, logging, debugging e manipulação de dados.
🚀 Instalação
pip install pybrige
---
## ⚡ Guia Rápido (Quick Start)
Veja como o `pybrige` pode simplificar seu código:
```python
import logging
import requests
from pybrige import setup_logging, load_env, EnvSpec, VarSpec, timer, retry, print_table
# 1. Configure logs coloridos
setup_logging(colors=True)
# 2. Defina e carregue a configuração da aplicação
try:
config = load_env(EnvSpec(
vars=[
VarSpec("API_URL", help="URL da API de dados"),
VarSpec("RETRIES", type="int", default=3),
],
prefix="APP_"
))
except Exception as e:
logging.error(f"Erro de configuração: {e}")
exit(1)
# 3. Use decorators para resiliência e análise de performance
@retry(tries=config["RETRIES"], delay=1, exceptions=(requests.exceptions.RequestException,))
@timer(template="[PERF] '{func_name}' contactou a API em {elapsed:.2f}s")
def buscar_dados():
logging.info(f"A contactar a API em {config['API_URL']}...")
response = requests.get(config["API_URL"])
response.raise_for_status()
return response.json()
# 4. Execute e apresente resultados
try:
dados = buscar_dados()
logging.info("Dados recebidos com sucesso!")
print_table(dados, title="Relatório de Utilizadores")
except Exception as e:
logging.critical(f"Não foi possível obter os dados: {e}")
🔧 Funcionalidades Principais
- Configuração Segura: Carregue e valide variáveis de ambiente (
load_env,EnvSpec,VarSpec). - Logging Inteligente: Configure logs coloridos e amigáveis ao terminal (
setup_logging). - Decorators Poderosos:
@retry→ adiciona retentativas automáticas.@timer→ mede o tempo de execução de funções.
- Utilidades de Dados:
- Manipulação de JSON (
read_json,write_json,append_json_line,pretty_print_json). - Transformações de texto (
slugify,camel_to_snake,snake_to_camel,normalize_whitespace). - Extração (
extract_emails,extract_urls,remove_html_tags). - Impressão de tabelas (
print_tablecomrich).
- Manipulação de JSON (
📚 Exemplos de Uso
Logging
from pybrige import setup_logging
import logging
setup_logging(colors=True)
logging.info("Mensagem colorida!")
Timer
from pybrige import timer, setup_logging
setup_logging(colors=True)
@timer()
def process_data():
return sum(range(100000))
process_data()
Retry
from pybrige import retry
import random
@retry(tries=3, delay=1, backoff=2)
def unstable():
if random.random() < 0.7:
raise ValueError("Falhou")
return "Sucesso!"
print(unstable())
JSON Helpers
from pybrige import write_json, read_json
data = {"id": 1, "name": "Alice"}
write_json("data.json", data)
print(read_json("data.json"))
String Utils
from pybrige import slugify, camel_to_snake, snake_to_camel, extract_emails, extract_urls
print(slugify("Título de Exemplo com Áccentos"))
print(camel_to_snake("CamelCaseTest"))
print(snake_to_camel("snake_case_test"))
print(extract_emails("contato: dev@helper.org"))
print(extract_urls("Veja https://example.com"))
Hacker Style
from pybrige import ascii_banner_hacker, matrix_rain_preview
print(ascii_banner_hacker("F SOCIETY", subtitle="we are everyone"))
print(matrix_rain_preview(lines=5, width=20))
📌 Roadmap
- Suporte a YAML (
io_utils) - Novas transformações de texto (snake → kebab, title case etc.)
- CLI para acessar utilitários diretamente no terminal
📖 Referência da API (v0.2.0)
validate_bi
Verifica o formato de um Bilhete de Identidade de Moçambique de 13 caracteres.
from pybrige import validate_bi
# Casos válidos
print(validate_bi("123456789012A"))
# Saída: True
print(validate_bi(" 123456-789012-B ")) # Lida com espaços e hífens
# Saída: True
# Caso inválido
print(validate_bi("documento_invalido"))
# Saída: False
### Core
- `load_env(spec: EnvSpec)` → valida e carrega variáveis de ambiente.
- `require_vars(vars: list[str])` → garante que variáveis existem (versão legada).
- `setup_logging(level, colors, file, logger_name)` → configura logging.
### Decorators
- `@timer(level, template, logger)` → mede e loga tempo de execução.
- `@retry(tries, delay, backoff, exceptions, ...)` → retentativas automáticas em caso de falha.
### Utils
- `print_table(data, title)` → imprime tabelas com estilo (`rich`).
- `slugify(text, allow_unicode)` → texto → slug.
- `camel_to_snake(text)` / `snake_to_camel(text)` → conversões de nomenclatura.
- `normalize_whitespace(text)` → remove espaços extras.
- `remove_html_tags(text)` → remove tags HTML.
- `extract_emails(text)` / `extract_urls(text)` → extrações de emails e URLs.
- `read_json(path, safe)` / `write_json(path, data)` → helpers JSON.
- `append_json_line(path, record)` → escreve no formato JSON Lines.
- `pretty_print_json(data)` → retorna JSON formatado.
### `utils.text`
* `slugify`, `camel_to_snake`, `snake_to_camel`, `normalize_whitespace`, `remove_html_tags`, `extract_emails`, `extract_urls`, **`validate_bi`**.
## 🤝 Contribuindo
Contribuições são bem-vindas!
Sinta-se livre para abrir **issues** ou enviar um **pull request** no GitHub.
1. Fork o repositório
2. Crie sua branch: `git checkout -b minha-feature`
3. Commit: `git commit -m "Nova feature"`
4. Push: `git push origin minha-feature`
5. Abra o PR 🚀
---
## 📄 Licença
Distribuído sob a licença MIT.
Veja [LICENSE](LICENSE) para mais detalhes.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pybrige-0.5.1.tar.gz.
File metadata
- Download URL: pybrige-0.5.1.tar.gz
- Upload date:
- Size: 1.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df9451bb116fb4dd53fcf156f72feecc55aa83b9433d721a88038653885b41ab
|
|
| MD5 |
02807549fcfc22ebb3fbe1b6a0535d0e
|
|
| BLAKE2b-256 |
5f87b9d31ae08b0e30e8ed2877cd4f981be320bc027b995c09a5b3c0a44955bf
|
File details
Details for the file pybrige-0.5.1-py3-none-any.whl.
File metadata
- Download URL: pybrige-0.5.1-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fb21e4b0d5b10bcf1b0a5ed35cea545a85bbc5f5fdf15a19620495c2bb61679
|
|
| MD5 |
ee2eefa72d7416eb7dba313eb92ad7c3
|
|
| BLAKE2b-256 |
88cafecb41c9bc4acdc3630ad26943c150f59bd06df454246771a9a5aadddcca
|