Skip to main content

Adaptive waiting and smart automation library — includes Wi-Fi, system context, and Vision Mode for screen-based decisions.

Project description

Nano-Wait

Automação Inteligente com Espera Adaptativa e Visão Computacional


Visão Geral

Nano-Wait é uma biblioteca Python para automação de interfaces gráficas (GUI) que substitui o uso de time.sleep() por um sistema de Espera Adaptativa Inteligente, ajustando dinamicamente o tempo de espera com base:

  • No desempenho do computador (CPU e memória)

  • Na qualidade do sinal Wi-Fi (quando disponível)

  • No nível de agressividade definido pelo usuário

A partir da versão 3.0, o Nano-Wait também inclui um Módulo de Visão Computacional (OCR) capaz de ler números diretamente da tela e tomar decisões automatizadas.

🚀 Por que não usar time.sleep()?

O time.sleep() é estático e “cego”: ele ignora se o sistema está sobrecarregado ou se a rede está lenta.

O Nano-Wait resolve isso aplicando um Fator de Ajuste Dinâmico, garantindo que o script:

  • Não seja lento demais quando o sistema está rápido

  • Nem rápido demais a ponto de quebrar a automação


📦 Instalação

pip install nano-wait
  • Dependências opcionais

  • Para funcionamento completo do módulo Vision:

  • Tesseract OCR (obrigatório para OCR)

  • pytesseract

  • Pillow

  • pyautogui

  • pynput

  • psutil

  • pywifi (somente no Windows)

⚠️ O Nano-Wait não coleta dados de rede.

Ele apenas lê métricas locais de sinal e desempenho do sistema operacional.

🧠 Módulo 1 — Espera Adaptativa (Smart Wait)

Função principal: wait()

A função wait() é o substituto direto do time.sleep().

from nano_wait import wait

wait(5)

Assinatura da função

wait(
    t: float,
    wifi: str | None = None,
    speed: str | float = "normal",
    verbose: bool = False,
    log: bool = False
) -> float

Parâmetros

Parâmetro Valor padrão Comportamento quando omitido
t obrigatório Define o tempo máximo de espera. Não pode ser omitido.
wifi None O Nano-Wait ignora métricas de rede e calcula o fator apenas com base no desempenho local (CPU e memória).
speed "normal" Utiliza agressividade balanceada, priorizando estabilidade sem perder desempenho.
verbose False Nenhuma informação de cálculo é exibida no terminal.
log False Nenhum arquivo de log é gerado (nano_wait.log não é criado nem atualizado).

Exemplo com Wi-Fi

wait(
    5,
    wifi="MinhaRede_5G",
    speed="fast",
    verbose=True
)

Exemplo sem Wi-Fi (somente hardware local)

wait(2, speed="ultra")

🔬 Como o tempo de espera é calculado

O Nano-Wait calcula um fator adaptativo com base em:

  • Uso de CPU

  • Uso de memória

  • Intensidade do sinal Wi-Fi (quando disponível)

Fórmula aplicada

wait_time = max(0.05, min(t / factor, t))

Regras de segurança

  • Piso: nunca espera menos que 50 ms

  • Teto: nunca ultrapassa o tempo t original

  • Evita uso excessivo de CPU

🧠 Módulo 2 — Vision (OCR e Decisão Visual)

O módulo Vision permite ler números da tela e tomar decisões automáticas.

Classe principal

from nano_wait.vision import VisionMode

Modos Disponíveis

Modo Descrição
observe Apenas lê e exibe os dados
decision Lê os dados e executa ações
learn Coleta padrões visuais (experimental)

📸 Captura de Região da Tela

O usuário pode marcar regiões manualmente:

region = VisionMode.mark_region()

O retorno é uma tupla:

(x, y, largura, altura)

🔍 Exemplo Completo — Leitura e Decisão

from nano_wait.vision import VisionMode

vision = VisionMode(mode="decision")
region = VisionMode.mark_region()
vision.run(regions=[region])

Lógica interna (modo decision)

Se número detectado > 1000 → clique duplo

Caso contrário → pular item

Essas ações podem ser facilmente customizadas no código.

⚙️ Pipeline Interno do Vision

  • Captura da região da tela (ImageGrab)

  • Conversão para escala de cinza

  • OCR via Tesseract

  • Extração numérica com Regex

  • Execução de ações automáticas

🧪 Modo Learn (Estado Atual)

  • O modo learn atualmente:

  • Captura dados visuais repetidamente

  • Serve como base para futuras versões com persistência

📌 Observação: O modo learn ainda não salva modelos em disco. Ele é experimental e focado em coleta de dados.

Sistema Wi-Fi Observação
Windows Usa pywifi
macOS Usa comando airport
Linux Usa nmcli
Outros Apenas modo sem Wi-Fi

🛠 Casos de Uso Reais

  • Bots de automação visual

  • Leitura de painéis legados

  • Ajuste inteligente de cliques

  • Automação baseada em OCR

  • RPA leve sem Selenium

🤝 Contribuição

  • Fork o projeto

  • Crie uma branch (feature/minha-melhoria)

  • Envie um Pull Request

📄 Licença

MIT License

👤 Autor

Luiz Seabra De Marco

👤 Autor da documentação

Vitor Seabra De Marco

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

nano_wait-3.1.1.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nano_wait-3.1.1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file nano_wait-3.1.1.tar.gz.

File metadata

  • Download URL: nano_wait-3.1.1.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for nano_wait-3.1.1.tar.gz
Algorithm Hash digest
SHA256 bcc2cfcc58af483c8a90fb42d5f1682394dc99a4c40cebdc4cbc43492a5cd1c4
MD5 5cbface4c25841c43f7aa4c2daf4b3f6
BLAKE2b-256 ff113330f997d241fe25d1071bc747a2d1ccd7fa3b15ae00d391e04e0c49e6a6

See more details on using hashes here.

File details

Details for the file nano_wait-3.1.1-py3-none-any.whl.

File metadata

  • Download URL: nano_wait-3.1.1-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for nano_wait-3.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1e5511c0905148afa374262f2eab0c19713bf3a0182e562db6101b2e6c22df7f
MD5 a677291a44287f9224ac83e5a67e8276
BLAKE2b-256 3f742085a97fc703d94b8996bf6079bca82fecd4a1466d6cc9afffa2a1afeb04

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