Biblioteca Python com ferramentas essenciais para desenvolvimento de RPA e ML, oferecendo recursos para conexão com bancos de dados, logging, ORM, geração de estruturas de projeto e interface CLI.
Project description
Personallize
Uma biblioteca Python com ferramentas essenciais para desenvolvimento de RPA (Robotic Process Automation) e ML (Machine Learning), oferecendo recursos para conexão com bancos de dados, logging, geração de estruturas de projeto e interface de linha de comando.
✨ Funcionalidades
- 🏗️ CLI Project Generator: Interface de linha de comando para criação de projetos
- 🗄️ EntityFactory: Geração automática de entidades SQLAlchemy a partir de DataFrames
- 🏗️ ProjectStructureGenerator: Criação automática de estrutura de projeto em camadas
- 🔌 Connection: Conexão simplificada com bancos de dados
- 📊 Logging: Sistema de logging simples e avançado
- 🌐 WebDriver Factory: Criação automatizada de drivers para automação web
📋 Requisitos
- Python >= 3.11
- SQLAlchemy >= 2.0.0
- Selenium >= 4.0.0
- Rich >= 12.0.0
📦 Instalação
Com pip
pip install personallize
Com uv (recomendado)
uv add personallize
Para desenvolvimento
# Com pip
pip install personallize[dev]
# Com uv
uv add personallize --optional dev
🚀 Uso
🖥️ Interface de Linha de Comando (CLI)
Após a instalação, você pode usar o comando personallize diretamente no terminal:
# Criar projeto no diretório atual
personallize --init
# Criar projeto em um diretório específico
personallize --init ./meu_projeto
# Criar projeto com nome personalizado
personallize --init ./meu_projeto --name "nome_do_projeto"
# Ver todas as opções disponíveis
personallize --help
Opções da CLI
--init [PATH]: Inicializa projeto no path especificado (padrão: diretório atual)--name NAME: Nome do projeto (padrão: my_project)--no-git: Não criar arquivos Git (.gitignore, etc.)--docker: Criar arquivos Docker (Dockerfile, docker-compose.yml)--no-tests: Não criar estrutura de testes--python-version VERSION: Versão do Python (padrão: 3.11)
Usando com Python
# Alternativa usando python -m
python -m personallize --init ./meu_projeto
# Com uv
uv run python -m personallize --init ./meu_projeto
🏗️ Estrutura de Projeto Gerada
O comando CLI cria uma estrutura completa de projeto:
meu_projeto/
├── .env.example # Configurações de ambiente
├── .gitignore # Arquivos ignorados pelo Git
├── README.md # Documentação do projeto
├── requirements.txt # Dependências (com blue formatter)
├── docs/ # Documentação
├── src/ # Código fonte
│ ├── __init__.py
│ ├── configs/ # Configurações
│ │ ├── __init__.py
│ │ └── environments.py # Configurações de ambiente
│ ├── controller/ # Controladores
│ ├── main/ # Arquivos principais
│ ├── models/ # Modelos de dados
│ │ └── config/
│ │ └── connection.py # Conexão com BD
│ ├── schemas/ # Esquemas de dados
│ ├── services/ # Serviços de negócio
│ └── utils/ # Utilitários
│ └── logs.py # Sistema de logging
└── tests/ # Testes
├── __init__.py
├── conftest.py
└── test_main.py
🗄️ EntityFactory - Geração Automática de Entidades
import pandas as pd
from personallize.entity_factory import EntityFactory, EntityConfig
# Criar DataFrame de exemplo
df = pd.DataFrame({
'id': [1, 2, 3],
'name': ['João', 'Maria', 'Pedro'],
'email': ['joao@email.com', 'maria@email.com', 'pedro@email.com'],
'age': [25, 30, 35],
'created_at': pd.to_datetime(['2024-01-01', '2024-01-02', '2024-01-03'])
})
# Configurar EntityFactory
config = EntityConfig(
auto_add_id=True,
detect_relationships=True,
add_indexes=True,
add_timestamps=True
)
# Criar factory e gerar entidade
factory = EntityFactory(config)
entity_path = factory.create_entity_from_dataframe(df, "User", "./models/")
print(f"Entidade criada em: {entity_path}")
🏗️ ProjectStructureGenerator - Programático
from personallize.project_structure import create_layered_project, ProjectConfig
# Criar projeto com estrutura em camadas
project_path = create_layered_project(
project_name="meu_projeto",
base_path="./",
create_git_files=True,
create_docker_files=True,
create_tests=True,
python_version="3.11"
)
print(f"Projeto criado em: {project_path}")
🔌 Conexão com Banco de Dados
from personallize import Connection, Credentials
# Configurar credenciais
credentials = Credentials(
host='localhost',
database='exemplo.db',
username='user',
password='password'
)
# Criar conexão
conn = Connection('sqlite', credentials)
# Usar conexão
with conn.get_connection() as db:
result = db.execute("SELECT * FROM users")
print(result.fetchall())
📊 Sistema de Logging
from personallize import LogManager
# Logging simples para desenvolvimento
logger = LogManager().development()
logger.info("Aplicação iniciada")
logger.error("Erro encontrado")
# Logging para produção
logger = LogManager().production()
logger.info("Sistema em produção")
🚀 Recursos Detalhados
📊 Connection
Módulo flexível para conexão com diversos bancos de dados:
- SQLite
- MySQL
- PostgreSQL
- SQL Server
📝 Logs
Sistema de logging com duas opções:
Simple Log (simple_log):
- Logging básico e direto
- Ideal para projetos simples
Complex Log (complex_log):
- Sistema avançado com configurações flexíveis
- Presets:
simple(),development(),production() - Suporte a queue para logging assíncrono
- Gerar logs em arquivo
- Personalização completa de formatos e níveis de log
- Decorators para captura de exceções
🏗️ Gerador de Estruturas
Características dos projetos gerados:
- Estrutura MVC em camadas
- Configuração de ambiente com
.env.example - Sistema de logging integrado com
LogManager - Conexão com banco de dados configurada
- Formatação de código com
blue - Estrutura de testes com
pytest - Documentação básica
🌐 WebDriver
Ferramentas para automação web:
- Gerenciamento customizado do ChromeDriver
- Manipulação avançada de WebDriver
- Integração com Selenium
🔧 Desenvolvimento
Executando testes
# Com pytest
pytest
# Com uv
uv run pytest
Formatação de código
# Com blue (recomendado)
blue src/ tests/
# Com uv
uv run blue src/ tests/
Linting
# Com ruff
ruff check src/ tests/
# Com uv
uv run ruff check src/ tests/
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
👨💻 Autor
Miguel Tenório
- Email:
deepydev42@gmail.com - GitHub: @MiguelTenorio42
🤝 Contribuindo
Contribuições são bem-vindas! Por favor, sinta-se à vontade para submeter um Pull Request.
📝 Changelog
v1.1.0
- ✨ Nova funcionalidade: Interface de linha de comando (CLI)
- 🏗️ Melhoria: Estrutura de projeto atualizada com
LogManager - 🔧 Melhoria: Configuração de ambiente com
Credentials - 🎨 Melhoria: Formatador alterado de
blackparablue - 📦 Melhoria: Suporte para Python 3.11+
- 🐛 Correção: Estrutura de projeto agora cria arquivos no diretório correto
v1.0.1
- 🐛 Correções de bugs menores
- 📚 Melhorias na documentação
v1.0.0
- 🎉 Lançamento inicial
- 🗄️ EntityFactory
- 🔌 Sistema de conexão com bancos de dados
- 📊 Sistema de logging
- 🌐 WebDriver Factory
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
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 personallize-1.1.0.tar.gz.
File metadata
- Download URL: personallize-1.1.0.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62a35218211cbb199dfd4ff5bb6d8b9f50a4d765712dc085ebbdd85d921ccb67
|
|
| MD5 |
6f91e5e600962a01d285ca5e9315d2b9
|
|
| BLAKE2b-256 |
c9d622e61a65ebc1d5fd69ca0995bf39b2df00ceb77505297ab98c997aebff01
|
File details
Details for the file personallize-1.1.0-py3-none-any.whl.
File metadata
- Download URL: personallize-1.1.0-py3-none-any.whl
- Upload date:
- Size: 34.9 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 |
544c9236eda0e2d30b5b98b11806a9e032980a60371ad2fd32b126687a4bce4d
|
|
| MD5 |
189822f31ef47afbdb70022af3a7f1d1
|
|
| BLAKE2b-256 |
59ccf9b520ff68493fbe9157671f6d64562bd0a3a29748340c46935b78832a1d
|