Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

rpa-arc

PyPI - Version PyPI - Python Version PyPI - License PyPI - Status

rpa-arc é a ferramenta definitiva para iniciar projetos RPA em Python. Com um único comando, ela cria uma arquitetura robusta, escalável e pronta para produção.

"Sem firula, na lata: one command and you are ready to automate."

🚀 Por que rpa-arc?

  • Zero Config: Esqueça o boilerplate. Instale e rode.
  • Padronização: Todos os bots da sua equipe seguindo a mesma estrutura.
  • Features Enterprise: Logs rotacionados, Driver com auto-healing, API Client com retry.
  • Flexível: Suporta desde scripts simples até arquiteturas complexas em containers.

📦 Instalação

pip install rpa-arc

🛠️ Uso

Criar Novo Projeto

Para criar um novo projeto em uma pasta específica:

rpa-arc meu-novo-bot

Isso criará a pasta meu-novo-bot/ com toda a estrutura dentro.

Na Pasta Atual

Se você já criou a pasta e quer apenas popular a estrutura nela:

# Estando dentro da pasta do projeto
rpa-arc

Opções Avançadas

  • -f, --force: Adiciona arquivos faltantes sem sobrescrever os existentes. Útil para atualizar projetos antigos.
  • -m, --minimal: Cria uma versão "leve" da estrutura, sem arquivos Docker e sem o módulo de API. Ideal para bots locais simples.
# Exemplo: Atualizar estrutura de um projeto existente sem perder código
rpa-arc --force

# Exemplo: Criar bot simples sem Docker/API
rpa-arc bot-simples --minimal

📂 Estrutura Gerada

Abaixo, a arquitetura completa gerada pela ferramenta:

meu-projeto/
├── src/
│   ├── app/
│   │   └── app.py           # Onde seu código de negócio reside
│   ├── core/
│   │   ├── logger.py        # Logger configurado com TimedRotatingFileHandler
│   │   └── driver.py        # Wrapper do Selenium com gestão avançada
│   ├── api/
│   │   └── Api.py           # (Opcional) Cliente HTTP com Retry e Auth JWT
│   ├── integracoes/         # Espaço para integrações com sistemas terceiros
│   └── utils/               # Funções auxiliares
├── config/
│   └── config.py            # Configurações centralizadas com Pydantic BaseSettings
├── dados/                   # Diretório padrão para downloads e inputs
├── logs/                    # Logs gerados (ignorados no git)
├── tests/                   # Testes unitários
├── .env                     # Variáveis de ambiente (template)
├── .gitignore               # Ignora venv, logs, pycache, etc.
├── Dockerfile               # (Opcional) Pronto para deploy
├── main.py                  # Entrypoint simples
├── readme.md                # Documentação inicial do seu bot
└── requirements.txt         # Dependências do projeto

✨ Funcionalidades do Core

1. Gerenciador de Navegador (src.core.driver)

O GerenciadorNavegador não é apenas um wrapper do Selenium. Ele resolve as dores de cabeça comuns de RPA:

  • Gestão de Temp Files: Cria perfis de usuário temporários (user-data-dir) isolados para evitar conflitos de cache/sessão entre execuções paralelas.
  • Auto-Cleanup: Limpa diretórios temporários antigos e mata processos órfãos do Chrome.
  • Modo Headless: Detecta ambiente Linux e ativa headless automaticamente se necessário.
  • Fallback: Se o diretório de perfil falhar, ele tenta um modo de recuperação automaticamente.
from src.core.driver import GerenciadorNavegador

# Inicia navegador (baixa driver automaticamente se necessário)
nav = GerenciadorNavegador()
driver = nav.obter_navegador()

driver.get("https://google.com")

2. Logger Robusto (src.core.logger)

Logs são a vida do RPA. O nosso logger já vem com:

  • Rotação Diária: Arquivos separados por dia (2024-02-01.log).
  • Timezone Aware: Configurado para America/Sao_Paulo por padrão (ajustável via .env).
  • Dual Output: Escreve no arquivo e no console simultaneamente.
from src.core.logger import Logger

log = Logger().get_logger()
log.info("Processo iniciado")
log.error("Falha ao encontrar seletor X")

3. Configuração Centralizada (config.config)

O arquivo config/config.py utiliza Pydantic BaseSettings para gerenciar todas as configurações da aplicação de forma tipo-segura:

  • Validação automática: Pydantic valida tipos e valores ao carregar do .env
  • Defaults inteligentes: Valores padrão sensatos para cada variável
  • Carregamento de .env: Automático via python-dotenv
  • Type hints: Autocomplete total na IDE
from config.config import settings

print(settings.BASE_URL_API_RPA)
print(settings.LOG_LEVEL)  # DEBUG, INFO, WARNING, ERROR

4. API Client (src.api.Api)

Disponível na estrutura completa.

Um cliente HTTP Wrapper sobre o requests que implementa:

  • Auth JWT: Gerencia tokens Bearer e renova automaticamente se expirados (via método CheckToken).
  • Smart Retry: Tenta novamente em caso de falhas de rede ou Rate Limit (429), com backoff exponencial.
  • Integração S3: Métodos prontos para upload de arquivos de log.

⚙️ Configuração (.env e config.py)

O sistema utiliza dois arquivos de configuração em conjunto:

1. .env (na raiz)

Contém as variáveis de ambiente. Um template é gerado automaticamente:

# Credenciais da API (se usar)
BASE_URL_API_RPA="https://api..."
USERNAME_API_RPA=user
PASSWORD_API_RPA=pass

# Configuração de Log
LOG_LEVEL=DEBUG
LOG_TZ=America/Sao_Paulo

# Chrome RPA
RPA_MAX_CHROME_TABS=10
RPA_MAX_CHROME_PROCESSES=50
RPA_CHROME_MONITOR_INTERVAL_SECONDS=5

2. config/config.py (Pydantic BaseSettings)

Carrega e valida as variáveis do .env com type safety:

from config.config import settings

# Acesso às configurações (type-safe)
base_url = settings.BASE_URL_API_RPA
log_level = settings.LOG_LEVEL
max_tabs = settings.RPA_MAX_CHROME_TABS

Todas as variáveis carregam do .env e têm valores padrão sensatos definidos.

🐳 Docker

A estrutura completa já inclui um Dockerfile otimizado baseado em python:3.12-slim. Ele instala as dependências de sistema necessárias para o Chrome rodar em ambiente Linux (Debian/Ubuntu), incluindo fontes e libs gráficas.

Para rodar:

docker build -t meu-bot .
docker run --rm meu-bot

📋 Changelog

v0.2.0+ (Recentes)

  • config.py automático: O arquivo config/config.py é criado automaticamente com classe Pydantic Settings para gerenciamento de configurações.
  • Suporte a Pydantic BaseSettings: Validação de tipo e valores automática via .env.

v0.1.0 (Base)

  • Estrutura base com logger, driver, API client e CLI.
  • Suporte a Docker e arquivos de CI/CD.

🤝 Contribuição

Sua ajuda é bem-vinda!

  1. Fork o projeto.
  2. Crie uma branch (git checkout -b feature/NovaFeature).
  3. Commit (git commit -m 'Add NovaFeature').
  4. Push (git push origin feature/NovaFeature).
  5. Abra um Pull Request.

📝 Licença

MIT License.

Metadata

Release files for rpa-arc 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rpa-arc 0.9.0
File Size Uploaded
rpa_arc-0.9.0.tar.gz 33.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rpa-arc 0.9.0
File Interpreter ABI Platform
rpa_arc-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 54.3 kB

Release files / rpa_arc-0.9.0.tar.gz

Download URL rpa_arc-0.9.0.tar.gz
Size 33.1 kB
Tags Source
SHA-256 checksum
How to use checksums
872095595cc42f7dd015dde44d0c6252d1a28dd6b8f1ce5dae9b0aaa2fa4143f
BLAKE2b-256 checksum
How to use checksums
6f1c4acf03cd8213346b258785e796bf70fc42b146bd0d3306054c3479812c53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / rpa_arc-0.9.0-py3-none-any.whl

Download URL rpa_arc-0.9.0-py3-none-any.whl
Size 21.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6cc44cbc76c9a0fbe4077f5de4db3e8031781d01cc8b203d5e76cb2747d51e69
BLAKE2b-256 checksum
How to use checksums
81f59efe8cc5da7ad40a7dbff9bdcfd9b26cbb1b02f5350ef08e3d4fb4eb7ce3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page