This project has been archived by its maintainers, and is no longer receiving any updates.
rpa-arc
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_Paulopor 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 viapython-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 PydanticSettingspara 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!
- Fork o projeto.
- Crie uma branch (
git checkout -b feature/NovaFeature). - Commit (
git commit -m 'Add NovaFeature'). - Push (
git push origin feature/NovaFeature). - 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)
| File | Size | Uploaded | |
|---|---|---|---|
| rpa_arc-0.9.0.tar.gz | 33.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|