Skip to main content

Um toolkit de produtividade para desenvolvedores em Python

Project description

pybrige

PyPI version
Python versions
License


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_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)

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.

  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 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.0.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.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

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

Hashes for pybrige-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3b2028805d4e9c30e5311ca5d7dd345a60043264375ff5fc545c08e8fa7df0de
MD5 df52d7a5704b093e47af2d7a47f27f2a
BLAKE2b-256 462695b577fa72b417ee92a59e890ea0199899d5b43280abe0f4c59d27a4dc45

See more details on using hashes here.

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

Hashes for pybrige-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f7b12dde4af71e9c795611ae27aa7e25a74243641df8294f3561ee0ca92ec27
MD5 8aca16f25223c8fff01ce983389314d1
BLAKE2b-256 dff0fad41618983d69925f3c7f977abd9b5b86a12fad2748a994fcc26df73f36

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