Skip to main content

Um toolkit de produtividade para desenvolvedores em Python

Project description

pybrige

PyPI version Python versions License GitHub Workflow Status Coverage Status


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_table com rich).

📚 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pybrige-0.5.1.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pybrige-0.5.1-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

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

Hashes for pybrige-0.5.1.tar.gz
Algorithm Hash digest
SHA256 df9451bb116fb4dd53fcf156f72feecc55aa83b9433d721a88038653885b41ab
MD5 02807549fcfc22ebb3fbe1b6a0535d0e
BLAKE2b-256 5f87b9d31ae08b0e30e8ed2877cd4f981be320bc027b995c09a5b3c0a44955bf

See more details on using hashes here.

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

Hashes for pybrige-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0fb21e4b0d5b10bcf1b0a5ed35cea545a85bbc5f5fdf15a19620495c2bb61679
MD5 ee2eefa72d7416eb7dba313eb92ad7c3
BLAKE2b-256 88cafecb41c9bc4acdc3630ad26943c150f59bd06df454246771a9a5aadddcca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page