Um toolkit de produtividade para desenvolvedores em Python
Project description
pybrige
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.
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:
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)
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.
🤝 Contribuindo
Contribuições são bem-vindas!
Sinta-se livre para abrir issues ou enviar um pull request no GitHub.
- Fork o repositório
- Crie sua branch:
git checkout -b minha-feature - Commit:
git commit -m "Nova feature" - Push:
git push origin minha-feature - Abra o PR 🚀
📄 Licença
Distribuído sob a licença MIT.
Veja 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.0.tar.gz.
File metadata
- Download URL: pybrige-0.5.0.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 |
3b2028805d4e9c30e5311ca5d7dd345a60043264375ff5fc545c08e8fa7df0de
|
|
| MD5 |
df52d7a5704b093e47af2d7a47f27f2a
|
|
| BLAKE2b-256 |
462695b577fa72b417ee92a59e890ea0199899d5b43280abe0f4c59d27a4dc45
|
File details
Details for the file pybrige-0.5.0-py3-none-any.whl.
File metadata
- Download URL: pybrige-0.5.0-py3-none-any.whl
- Upload date:
- Size: 20.7 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 |
1f7b12dde4af71e9c795611ae27aa7e25a74243641df8294f3561ee0ca92ec27
|
|
| MD5 |
8aca16f25223c8fff01ce983389314d1
|
|
| BLAKE2b-256 |
dff0fad41618983d69925f3c7f977abd9b5b86a12fad2748a994fcc26df73f36
|