fidi-common-libraries


Namefidi-common-libraries JSON
Version 1.3.6 PyPI version JSON
download
home_pageNone
SummaryBibliotecas compartilhadas entre os projetos da FIDI
upload_time2025-07-27 03:15:45
maintainerNone
docs_urlNone
authorVander Loto
requires_python<4.0,>=3.11
licenseMIT
keywords fidi aws utils database logger
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # FIDI Common Libraries

Bibliotecas compartilhadas entre os projetos da FIDI, desenvolvidas seguindo as melhores práticas de desenvolvimento Python.

## đź“‹ VisĂŁo Geral

Este projeto fornece um conjunto de bibliotecas reutilizáveis para automação, integração AWS, processamento de dados e utilitários comuns utilizados nos projetos da FIDI.

## 🚀 Funcionalidades Principais

- **Data**: Operações de banco de dados multi-SGBD (Oracle via oracledb, PostgreSQL, SQL Server)
- **Utils**: Sistema de logging estruturado para mĂşltiplos SGBDs
- **Constants**: Constantes de status padronizadas e funções de conversão entre diferentes tipos de status
- **AWS**: Clientes padronizados para SQS, SNS, Lambda, S3 com configuração centralizada
- **Config**: Gerenciamento de parâmetros com cache e conversão automática de tipos
- **UI**: Componentes para automação de interfaces gráficas com Pywinauto, incluindo inspetor de elementos

## 📦 Instalação e Configuração

### Pré-requisitos
- Python 3.9+
- Poetry

### Instalação como Biblioteca
```bash
# Instalar via Poetry (recomendado)
poetry add git+https://github.com/your-org/fidi-common-libraries.git

# Ou via pip
pip install git+https://github.com/your-org/fidi-common-libraries.git
```

### Desenvolvimento Local
```bash
# Clone o repositĂłrio
git clone <repository-url>
cd fidi-common-libraries

# Instale as dependĂŞncias
poetry install

# Ative o ambiente virtual
poetry shell
```

### Configuração de Desenvolvimento
```bash
# Instale os hooks de pre-commit
poetry run pre-commit install

# Execute os testes
poetry run pytest

# Verifique a cobertura de testes
poetry run pytest --cov=src --cov-report=html
```

## đź”§ Como Usar

### Módulo Data - Operações de Banco

```python
from fidi_common_libraries.data.db_data import DatabaseConfig, DatabaseQuery, ProcessosRpaInserter, ProcessosRpaUpdater
from datetime import datetime

# Configuração do banco
db_config = DatabaseConfig.from_env('RPA_')  # Usa variáveis RPA_DB_SERVER, etc.

# Inserir registro
inserter = ProcessosRpaInserter(db_config)
registro_id = inserter.insert(
    ambiente="PRD",
    produto="FIDI-ferias",
    versao="1.0.0",
    chapa="123456",
    statusexecucao="NOVO"
)

# Consulta segura
query = DatabaseQuery(db_config)
results = query.execute_query(
    "SELECT * FROM processosrpa WHERE statusexecucao = :status",
    {"status": "NOVO"}
)
```

### Módulo Config - Gerenciamento de Parâmetros

```python
from fidi_common_libraries.config.parametros import Parametros

# Inicializar o gerenciador de parâmetros
params = Parametros(ambiente="HML", produto="FIDI-ferias")

# Obter um parâmetro
url_api = params.get_parametro("URL_API", default="https://api.exemplo.com")

# Obter parâmetros por grupo
config_email = params.get_parametros_por_grupo("Email")

# Obter parâmetros por categorias específicas
config_ti = params.get_parametros_por_grupo("TI")  # Configurações técnicas
config_negocio = params.get_parametros_por_grupo("Negocio")  # Configurações de negócio
config_produto = params.get_parametros_por_grupo("Produto")  # Configurações do produto

# Atualizar um parâmetro
params.atualizar_parametro("TIMEOUT_API", 30)
```

### MĂłdulo Utils - Logging e Status

```python
from fidi_common_libraries.utils.logger import registrar_log_banco
from fidi_common_libraries.constants.status import HubStatus, DBStatus, LogStatus, convert_status
import pyodbc

# ConexĂŁo com banco
conn = pyodbc.connect(connection_string)

# Registrar log (detecta automaticamente o tipo de banco)
registrar_log_banco(
    conn=conn,
    ambiente="PRD",
    produto="FIDI-ferias",
    versao="1.0.0",
    nivel="INFO",
    modulo="main",
    processo="processamento",
    acao="inicio",
    lote="LOTE001",
    mensagem="Processo iniciado",
    usuario="sistema",
    status_execucao=LogStatus.SUCESSO,
    hostname="server01",
    ip_origem="192.168.1.100"
)

# Usar constantes de status
status_db = DBStatus.NOVO
status_log = convert_status(status_db, 'db', 'log')
```

### MĂłdulo AWS - Clientes Padronizados

```python
from fidi_common_libraries.aws.common_aws import AWSClientFactory, AWSConfig, create_message_with_metadata

# Configuração AWS
config = AWSConfig.from_env()  # Usa variáveis AWS_REGION, AWS_ACCESS_KEY_ID, etc.
factory = AWSClientFactory(config)

# Cliente SQS
sqs = factory.get_sqs_client()
message_id = sqs.send_message(
    queue_url="https://sqs.sa-east-1.amazonaws.com/123456789/my-queue",
    message={"data": "test"},
    message_attributes={"Type": {"StringValue": "ProcessData", "DataType": "String"}}
)
```

### Módulo UI - Automação de Interfaces Gráficas

```python
from fidi_common_libraries.ui import RMApplication, ElementFinder, UIInteractions, UIWaits, LocatorService

# Conectar ou iniciar aplicação RM
app = RMApplication()
app.connect_or_start()  # Conecta se existir ou inicia nova instância

# Aguardar aplicação ficar pronta
app.wait_for_application_ready(timeout=60)

# Obter janela principal ou TOTVS
main_window = app.get_main_window()
totvs_window = app.get_totvs_window()

# Navegação automática no sistema RM
from fidi_common_libraries.ui import RMNavigator, LocatorMode
navigator = RMNavigator(app.app, main_window)
success, button_text = navigator.navigate_to_element(
    {"title": "Encargos", "control_type": "TabItem"},
    {"title": "Contabilização", "control_type": "Pane"},
    {"title": "Geração dos Encargos", "control_type": "Button"}
)

# Usar serviço de locators para elementos
locator_service = LocatorService("locators.yaml", mode=LocatorMode.PYWINAUTO)
login_criteria = locator_service.get_non_null_attributes("login_button")

# Encontrar elemento com critérios robustos
finder = ElementFinder()
button = finder.find_element(
    parent=main_window,
    primary_criteria=login_criteria,
    fallback_criteria=[{"auto_id": "btnSave"}]
)

# Interagir com elementos de forma segura
interactions = UIInteractions()
interactions.safe_click(button)

# Aguardar elementos ou condições
waits = UIWaits()
waits.wait_for_element_ready(button, timeout=10)

# Inspeção de elementos UI (ferramenta de desenvolvimento)
from fidi_common_libraries.ui.utils.inspector import UIElementInspectorAdvanced
inspector = UIElementInspectorAdvanced()
inspector.connect_to_application(window_title="TOTVS")
inspector.start_assisted_navigation()  # Navegação assistida com overlay visual

# Fechar aplicação quando terminar
app.close_application()  # Fecha apenas se foi iniciada por nĂłs

# Configuração AWS
config = AWSConfig.from_env()  # Usa variáveis AWS_REGION, AWS_ACCESS_KEY_ID, etc.
factory = AWSClientFactory(config)

# Cliente SQS
sqs = factory.get_sqs_client()
message_id = sqs.send_message(
    queue_url="https://sqs.sa-east-1.amazonaws.com/123456789/my-queue",
    message={"data": "test"},
    message_attributes={"Type": {"StringValue": "ProcessData", "DataType": "String"}}
)

# Cliente SNS
sns = factory.get_sns_client()
sns.publish_message(
    topic_arn="arn:aws:sns:sa-east-1:123456789:my-topic",
    message=create_message_with_metadata({"event": "process_completed"}),
    subject="Processo Finalizado"
)

# Cliente Lambda
lambda_client = factory.get_lambda_client()
result = lambda_client.invoke_function(
    function_name="my-function",
    payload={"action": "process", "data": "test"}
)

# Cliente S3
s3 = factory.get_s3_client()
s3.upload_file("/path/to/file.txt", "my-bucket", "uploads/file.txt")
```

## 🏗️ Estrutura do Projeto

```
fidi-common-libraries/
├── src/
│   └── fidi_common_libraries/
│       ├── aws/          # Utilitários AWS
│       ├── config/       # Gerenciamento de configurações e parâmetros
│       ├── constants/    # Constantes e enums compartilhados
│       ├── data/         # Processamento de dados e acesso a banco
│       ├── ui/           # Automação de UI
│       │   ├── core/     # Componentes principais
│       │   ├── utils/    # Utilitários (inspector, screenshot)
│       │   └── locators/ # Serviços de locators
│       └── utils/        # Utilitários gerais e logging
├── tests/
│   ├── unit/            # Testes unitários
│   ├── integration/     # Testes de integração
│   └── e2e/            # Testes end-to-end
├── docs/               # Documentação
├── scripts/            # Scripts auxiliares
└── resources/          # Recursos estáticos
```

## đź§Ş Testes

O projeto mantém uma cobertura de testes superior a 85%:

```bash
# Executar todos os testes
poetry run pytest

# Executar com cobertura
poetry run pytest --cov=src --cov-report=term-missing

# Executar apenas testes unitários
poetry run pytest tests/unit/
```

## 📊 Qualidade de Código

Ferramentas utilizadas:
- **Black**: Formatação automática
- **Flake8**: Linting
- **MyPy**: Verificação de tipos
- **Bandit**: Análise de segurança

```bash
# Formatação
poetry run black src/ tests/

# Linting
poetry run flake8 src/ tests/

# Verificação de tipos
poetry run mypy src/

# Análise de segurança
poetry run bandit -r src/
```

## 📚 Documentação

- [INSTALL.md](INSTALL.md) - Guia completo de instalação e uso
- [CHANGELOG.md](CHANGELOG.md) - Histórico de mudanças
- [STATUS_ATUAL.md](STATUS_ATUAL.md) - Estado atual do projeto
- [docs/UI_MODULE_GUIDE.md](docs/UI_MODULE_GUIDE.md) - Guia completo do mĂłdulo UI
- [docs/UI_INSPECTOR_GUIDE.md](docs/UI_INSPECTOR_GUIDE.md) - Guia do inspetor de elementos UI
- [docs/RM_NAVIGATOR_GUIDE.md](docs/RM_NAVIGATOR_GUIDE.md) - Guia do navegador RM
- [docs/LOCATOR_SERVICE_GUIDE.md](docs/LOCATOR_SERVICE_GUIDE.md) - Guia do serviço de locators

> **Nota**: A partir da versão 1.2.0, este projeto utiliza apenas a biblioteca `oracledb` para conexões Oracle, removendo a dependência do `cx_Oracle`.
>
> **Nota**: A versão 1.3.0 introduz o módulo `ui` para automação de interfaces gráficas com Pywinauto.
>
> **Nota**: A versão 1.3.1 adiciona funcionalidades avançadas de inicialização e gerenciamento da aplicação RM.
>
> **Nota**: A versĂŁo 1.3.2 introduz o LocatorService para gerenciamento de locators via arquivos YAML.
>
> **Nota**: A versão 1.3.3 aprimora o LocatorService com validação robusta e tratamento de valores vazios.
>
> **Nota**: A versão 1.3.4 adiciona modos de retorno parametrizáveis (STD e PYWINAUTO) ao LocatorService.
>
> **Nota**: A versão 1.3.5 expande o LocatorService com suporte a dimensões e cálculo de centro dos elementos.
>
> **Nota**: A versão 1.3.6 introduz o RMNavigator para navegação automática no sistema TOTVS RM.

## 🤝 Contribuição

1. Siga as diretrizes estabelecidas em `.amazonq/rules/`
2. Mantenha a cobertura de testes acima de 85%
3. Execute os pre-commit hooks antes de fazer commit
4. Atualize a documentação conforme necessário

## 📄 Licença

Este projeto está licenciado sob os termos definidos no arquivo [LICENSE](LICENSE).
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "fidi-common-libraries",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "fidi, aws, utils, database, logger",
    "author": "Vander Loto",
    "author_email": "vander.loto@datametria.io",
    "download_url": "https://files.pythonhosted.org/packages/eb/70/69f3f39d5a031022e361844606852efaf545e71fba30793964ba731f99f0/fidi_common_libraries-1.3.6.tar.gz",
    "platform": null,
    "description": "# FIDI Common Libraries\n\nBibliotecas compartilhadas entre os projetos da FIDI, desenvolvidas seguindo as melhores pr\u00e1ticas de desenvolvimento Python.\n\n## \ud83d\udccb Vis\u00e3o Geral\n\nEste projeto fornece um conjunto de bibliotecas reutiliz\u00e1veis para automa\u00e7\u00e3o, integra\u00e7\u00e3o AWS, processamento de dados e utilit\u00e1rios comuns utilizados nos projetos da FIDI.\n\n## \ud83d\ude80 Funcionalidades Principais\n\n- **Data**: Opera\u00e7\u00f5es de banco de dados multi-SGBD (Oracle via oracledb, PostgreSQL, SQL Server)\n- **Utils**: Sistema de logging estruturado para m\u00faltiplos SGBDs\n- **Constants**: Constantes de status padronizadas e fun\u00e7\u00f5es de convers\u00e3o entre diferentes tipos de status\n- **AWS**: Clientes padronizados para SQS, SNS, Lambda, S3 com configura\u00e7\u00e3o centralizada\n- **Config**: Gerenciamento de par\u00e2metros com cache e convers\u00e3o autom\u00e1tica de tipos\n- **UI**: Componentes para automa\u00e7\u00e3o de interfaces gr\u00e1ficas com Pywinauto, incluindo inspetor de elementos\n\n## \ud83d\udce6 Instala\u00e7\u00e3o e Configura\u00e7\u00e3o\n\n### Pr\u00e9-requisitos\n- Python 3.9+\n- Poetry\n\n### Instala\u00e7\u00e3o como Biblioteca\n```bash\n# Instalar via Poetry (recomendado)\npoetry add git+https://github.com/your-org/fidi-common-libraries.git\n\n# Ou via pip\npip install git+https://github.com/your-org/fidi-common-libraries.git\n```\n\n### Desenvolvimento Local\n```bash\n# Clone o reposit\u00f3rio\ngit clone <repository-url>\ncd fidi-common-libraries\n\n# Instale as depend\u00eancias\npoetry install\n\n# Ative o ambiente virtual\npoetry shell\n```\n\n### Configura\u00e7\u00e3o de Desenvolvimento\n```bash\n# Instale os hooks de pre-commit\npoetry run pre-commit install\n\n# Execute os testes\npoetry run pytest\n\n# Verifique a cobertura de testes\npoetry run pytest --cov=src --cov-report=html\n```\n\n## \ud83d\udd27 Como Usar\n\n### M\u00f3dulo Data - Opera\u00e7\u00f5es de Banco\n\n```python\nfrom fidi_common_libraries.data.db_data import DatabaseConfig, DatabaseQuery, ProcessosRpaInserter, ProcessosRpaUpdater\nfrom datetime import datetime\n\n# Configura\u00e7\u00e3o do banco\ndb_config = DatabaseConfig.from_env('RPA_')  # Usa vari\u00e1veis RPA_DB_SERVER, etc.\n\n# Inserir registro\ninserter = ProcessosRpaInserter(db_config)\nregistro_id = inserter.insert(\n    ambiente=\"PRD\",\n    produto=\"FIDI-ferias\",\n    versao=\"1.0.0\",\n    chapa=\"123456\",\n    statusexecucao=\"NOVO\"\n)\n\n# Consulta segura\nquery = DatabaseQuery(db_config)\nresults = query.execute_query(\n    \"SELECT * FROM processosrpa WHERE statusexecucao = :status\",\n    {\"status\": \"NOVO\"}\n)\n```\n\n### M\u00f3dulo Config - Gerenciamento de Par\u00e2metros\n\n```python\nfrom fidi_common_libraries.config.parametros import Parametros\n\n# Inicializar o gerenciador de par\u00e2metros\nparams = Parametros(ambiente=\"HML\", produto=\"FIDI-ferias\")\n\n# Obter um par\u00e2metro\nurl_api = params.get_parametro(\"URL_API\", default=\"https://api.exemplo.com\")\n\n# Obter par\u00e2metros por grupo\nconfig_email = params.get_parametros_por_grupo(\"Email\")\n\n# Obter par\u00e2metros por categorias espec\u00edficas\nconfig_ti = params.get_parametros_por_grupo(\"TI\")  # Configura\u00e7\u00f5es t\u00e9cnicas\nconfig_negocio = params.get_parametros_por_grupo(\"Negocio\")  # Configura\u00e7\u00f5es de neg\u00f3cio\nconfig_produto = params.get_parametros_por_grupo(\"Produto\")  # Configura\u00e7\u00f5es do produto\n\n# Atualizar um par\u00e2metro\nparams.atualizar_parametro(\"TIMEOUT_API\", 30)\n```\n\n### M\u00f3dulo Utils - Logging e Status\n\n```python\nfrom fidi_common_libraries.utils.logger import registrar_log_banco\nfrom fidi_common_libraries.constants.status import HubStatus, DBStatus, LogStatus, convert_status\nimport pyodbc\n\n# Conex\u00e3o com banco\nconn = pyodbc.connect(connection_string)\n\n# Registrar log (detecta automaticamente o tipo de banco)\nregistrar_log_banco(\n    conn=conn,\n    ambiente=\"PRD\",\n    produto=\"FIDI-ferias\",\n    versao=\"1.0.0\",\n    nivel=\"INFO\",\n    modulo=\"main\",\n    processo=\"processamento\",\n    acao=\"inicio\",\n    lote=\"LOTE001\",\n    mensagem=\"Processo iniciado\",\n    usuario=\"sistema\",\n    status_execucao=LogStatus.SUCESSO,\n    hostname=\"server01\",\n    ip_origem=\"192.168.1.100\"\n)\n\n# Usar constantes de status\nstatus_db = DBStatus.NOVO\nstatus_log = convert_status(status_db, 'db', 'log')\n```\n\n### M\u00f3dulo AWS - Clientes Padronizados\n\n```python\nfrom fidi_common_libraries.aws.common_aws import AWSClientFactory, AWSConfig, create_message_with_metadata\n\n# Configura\u00e7\u00e3o AWS\nconfig = AWSConfig.from_env()  # Usa vari\u00e1veis AWS_REGION, AWS_ACCESS_KEY_ID, etc.\nfactory = AWSClientFactory(config)\n\n# Cliente SQS\nsqs = factory.get_sqs_client()\nmessage_id = sqs.send_message(\n    queue_url=\"https://sqs.sa-east-1.amazonaws.com/123456789/my-queue\",\n    message={\"data\": \"test\"},\n    message_attributes={\"Type\": {\"StringValue\": \"ProcessData\", \"DataType\": \"String\"}}\n)\n```\n\n### M\u00f3dulo UI - Automa\u00e7\u00e3o de Interfaces Gr\u00e1ficas\n\n```python\nfrom fidi_common_libraries.ui import RMApplication, ElementFinder, UIInteractions, UIWaits, LocatorService\n\n# Conectar ou iniciar aplica\u00e7\u00e3o RM\napp = RMApplication()\napp.connect_or_start()  # Conecta se existir ou inicia nova inst\u00e2ncia\n\n# Aguardar aplica\u00e7\u00e3o ficar pronta\napp.wait_for_application_ready(timeout=60)\n\n# Obter janela principal ou TOTVS\nmain_window = app.get_main_window()\ntotvs_window = app.get_totvs_window()\n\n# Navega\u00e7\u00e3o autom\u00e1tica no sistema RM\nfrom fidi_common_libraries.ui import RMNavigator, LocatorMode\nnavigator = RMNavigator(app.app, main_window)\nsuccess, button_text = navigator.navigate_to_element(\n    {\"title\": \"Encargos\", \"control_type\": \"TabItem\"},\n    {\"title\": \"Contabiliza\u00e7\u00e3o\", \"control_type\": \"Pane\"},\n    {\"title\": \"Gera\u00e7\u00e3o dos Encargos\", \"control_type\": \"Button\"}\n)\n\n# Usar servi\u00e7o de locators para elementos\nlocator_service = LocatorService(\"locators.yaml\", mode=LocatorMode.PYWINAUTO)\nlogin_criteria = locator_service.get_non_null_attributes(\"login_button\")\n\n# Encontrar elemento com crit\u00e9rios robustos\nfinder = ElementFinder()\nbutton = finder.find_element(\n    parent=main_window,\n    primary_criteria=login_criteria,\n    fallback_criteria=[{\"auto_id\": \"btnSave\"}]\n)\n\n# Interagir com elementos de forma segura\ninteractions = UIInteractions()\ninteractions.safe_click(button)\n\n# Aguardar elementos ou condi\u00e7\u00f5es\nwaits = UIWaits()\nwaits.wait_for_element_ready(button, timeout=10)\n\n# Inspe\u00e7\u00e3o de elementos UI (ferramenta de desenvolvimento)\nfrom fidi_common_libraries.ui.utils.inspector import UIElementInspectorAdvanced\ninspector = UIElementInspectorAdvanced()\ninspector.connect_to_application(window_title=\"TOTVS\")\ninspector.start_assisted_navigation()  # Navega\u00e7\u00e3o assistida com overlay visual\n\n# Fechar aplica\u00e7\u00e3o quando terminar\napp.close_application()  # Fecha apenas se foi iniciada por n\u00f3s\n\n# Configura\u00e7\u00e3o AWS\nconfig = AWSConfig.from_env()  # Usa vari\u00e1veis AWS_REGION, AWS_ACCESS_KEY_ID, etc.\nfactory = AWSClientFactory(config)\n\n# Cliente SQS\nsqs = factory.get_sqs_client()\nmessage_id = sqs.send_message(\n    queue_url=\"https://sqs.sa-east-1.amazonaws.com/123456789/my-queue\",\n    message={\"data\": \"test\"},\n    message_attributes={\"Type\": {\"StringValue\": \"ProcessData\", \"DataType\": \"String\"}}\n)\n\n# Cliente SNS\nsns = factory.get_sns_client()\nsns.publish_message(\n    topic_arn=\"arn:aws:sns:sa-east-1:123456789:my-topic\",\n    message=create_message_with_metadata({\"event\": \"process_completed\"}),\n    subject=\"Processo Finalizado\"\n)\n\n# Cliente Lambda\nlambda_client = factory.get_lambda_client()\nresult = lambda_client.invoke_function(\n    function_name=\"my-function\",\n    payload={\"action\": \"process\", \"data\": \"test\"}\n)\n\n# Cliente S3\ns3 = factory.get_s3_client()\ns3.upload_file(\"/path/to/file.txt\", \"my-bucket\", \"uploads/file.txt\")\n```\n\n## \ud83c\udfd7\ufe0f Estrutura do Projeto\n\n```\nfidi-common-libraries/\n\u251c\u2500\u2500 src/\n\u2502   \u2514\u2500\u2500 fidi_common_libraries/\n\u2502       \u251c\u2500\u2500 aws/          # Utilit\u00e1rios AWS\n\u2502       \u251c\u2500\u2500 config/       # Gerenciamento de configura\u00e7\u00f5es e par\u00e2metros\n\u2502       \u251c\u2500\u2500 constants/    # Constantes e enums compartilhados\n\u2502       \u251c\u2500\u2500 data/         # Processamento de dados e acesso a banco\n\u2502       \u251c\u2500\u2500 ui/           # Automa\u00e7\u00e3o de UI\n\u2502       \u2502   \u251c\u2500\u2500 core/     # Componentes principais\n\u2502       \u2502   \u251c\u2500\u2500 utils/    # Utilit\u00e1rios (inspector, screenshot)\n\u2502       \u2502   \u2514\u2500\u2500 locators/ # Servi\u00e7os de locators\n\u2502       \u2514\u2500\u2500 utils/        # Utilit\u00e1rios gerais e logging\n\u251c\u2500\u2500 tests/\n\u2502   \u251c\u2500\u2500 unit/            # Testes unit\u00e1rios\n\u2502   \u251c\u2500\u2500 integration/     # Testes de integra\u00e7\u00e3o\n\u2502   \u2514\u2500\u2500 e2e/            # Testes end-to-end\n\u251c\u2500\u2500 docs/               # Documenta\u00e7\u00e3o\n\u251c\u2500\u2500 scripts/            # Scripts auxiliares\n\u2514\u2500\u2500 resources/          # Recursos est\u00e1ticos\n```\n\n## \ud83e\uddea Testes\n\nO projeto mant\u00e9m uma cobertura de testes superior a 85%:\n\n```bash\n# Executar todos os testes\npoetry run pytest\n\n# Executar com cobertura\npoetry run pytest --cov=src --cov-report=term-missing\n\n# Executar apenas testes unit\u00e1rios\npoetry run pytest tests/unit/\n```\n\n## \ud83d\udcca Qualidade de C\u00f3digo\n\nFerramentas utilizadas:\n- **Black**: Formata\u00e7\u00e3o autom\u00e1tica\n- **Flake8**: Linting\n- **MyPy**: Verifica\u00e7\u00e3o de tipos\n- **Bandit**: An\u00e1lise de seguran\u00e7a\n\n```bash\n# Formata\u00e7\u00e3o\npoetry run black src/ tests/\n\n# Linting\npoetry run flake8 src/ tests/\n\n# Verifica\u00e7\u00e3o de tipos\npoetry run mypy src/\n\n# An\u00e1lise de seguran\u00e7a\npoetry run bandit -r src/\n```\n\n## \ud83d\udcda Documenta\u00e7\u00e3o\n\n- [INSTALL.md](INSTALL.md) - Guia completo de instala\u00e7\u00e3o e uso\n- [CHANGELOG.md](CHANGELOG.md) - Hist\u00f3rico de mudan\u00e7as\n- [STATUS_ATUAL.md](STATUS_ATUAL.md) - Estado atual do projeto\n- [docs/UI_MODULE_GUIDE.md](docs/UI_MODULE_GUIDE.md) - Guia completo do m\u00f3dulo UI\n- [docs/UI_INSPECTOR_GUIDE.md](docs/UI_INSPECTOR_GUIDE.md) - Guia do inspetor de elementos UI\n- [docs/RM_NAVIGATOR_GUIDE.md](docs/RM_NAVIGATOR_GUIDE.md) - Guia do navegador RM\n- [docs/LOCATOR_SERVICE_GUIDE.md](docs/LOCATOR_SERVICE_GUIDE.md) - Guia do servi\u00e7o de locators\n\n> **Nota**: A partir da vers\u00e3o 1.2.0, este projeto utiliza apenas a biblioteca `oracledb` para conex\u00f5es Oracle, removendo a depend\u00eancia do `cx_Oracle`.\n>\n> **Nota**: A vers\u00e3o 1.3.0 introduz o m\u00f3dulo `ui` para automa\u00e7\u00e3o de interfaces gr\u00e1ficas com Pywinauto.\n>\n> **Nota**: A vers\u00e3o 1.3.1 adiciona funcionalidades avan\u00e7adas de inicializa\u00e7\u00e3o e gerenciamento da aplica\u00e7\u00e3o RM.\n>\n> **Nota**: A vers\u00e3o 1.3.2 introduz o LocatorService para gerenciamento de locators via arquivos YAML.\n>\n> **Nota**: A vers\u00e3o 1.3.3 aprimora o LocatorService com valida\u00e7\u00e3o robusta e tratamento de valores vazios.\n>\n> **Nota**: A vers\u00e3o 1.3.4 adiciona modos de retorno parametriz\u00e1veis (STD e PYWINAUTO) ao LocatorService.\n>\n> **Nota**: A vers\u00e3o 1.3.5 expande o LocatorService com suporte a dimens\u00f5es e c\u00e1lculo de centro dos elementos.\n>\n> **Nota**: A vers\u00e3o 1.3.6 introduz o RMNavigator para navega\u00e7\u00e3o autom\u00e1tica no sistema TOTVS RM.\n\n## \ud83e\udd1d Contribui\u00e7\u00e3o\n\n1. Siga as diretrizes estabelecidas em `.amazonq/rules/`\n2. Mantenha a cobertura de testes acima de 85%\n3. Execute os pre-commit hooks antes de fazer commit\n4. Atualize a documenta\u00e7\u00e3o conforme necess\u00e1rio\n\n## \ud83d\udcc4 Licen\u00e7a\n\nEste projeto est\u00e1 licenciado sob os termos definidos no arquivo [LICENSE](LICENSE).",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Bibliotecas compartilhadas entre os projetos da FIDI",
    "version": "1.3.6",
    "project_urls": {
        "Changelog": "https://github.com/exolyze/FIDI-common-libraries/releases",
        "Documentation": "https://github.com/exolyze/FIDI-common-libraries/README.md",
        "Homepage": "https://github.com/exolyze/FIDI-common-libraries",
        "Repository": "https://github.com/exolyze/FIDI-common-libraries"
    },
    "split_keywords": [
        "fidi",
        " aws",
        " utils",
        " database",
        " logger"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "018ef3d24c38b4980c82b50d34c39e54fbef7ece8e94f09de7c1a9c85e74fd2b",
                "md5": "3a3ff618b19dce41c9598a46d4718b6c",
                "sha256": "1658208864e17eadaf49bed20c4d5f39a6b7b26204f640f849c530e58154a4d9"
            },
            "downloads": -1,
            "filename": "fidi_common_libraries-1.3.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3a3ff618b19dce41c9598a46d4718b6c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 77619,
            "upload_time": "2025-07-27T03:15:44",
            "upload_time_iso_8601": "2025-07-27T03:15:44.138678Z",
            "url": "https://files.pythonhosted.org/packages/01/8e/f3d24c38b4980c82b50d34c39e54fbef7ece8e94f09de7c1a9c85e74fd2b/fidi_common_libraries-1.3.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb7069f3f39d5a031022e361844606852efaf545e71fba30793964ba731f99f0",
                "md5": "a2bf958e09e79a4312b6a3634ececbdd",
                "sha256": "022ed21babd6898a126e891eda8820b0f9312e035042edb52bc30e4adacdd80b"
            },
            "downloads": -1,
            "filename": "fidi_common_libraries-1.3.6.tar.gz",
            "has_sig": false,
            "md5_digest": "a2bf958e09e79a4312b6a3634ececbdd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 62901,
            "upload_time": "2025-07-27T03:15:45",
            "upload_time_iso_8601": "2025-07-27T03:15:45.676011Z",
            "url": "https://files.pythonhosted.org/packages/eb/70/69f3f39d5a031022e361844606852efaf545e71fba30793964ba731f99f0/fidi_common_libraries-1.3.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-27 03:15:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "exolyze",
    "github_project": "FIDI-common-libraries",
    "github_not_found": true,
    "lcname": "fidi-common-libraries"
}
        
Elapsed time: 0.61321s