Skip to main content

Adaptive waiting and computer vision execution engine — replaces time.sleep() with system-aware, vision-driven automation.

Project description

🧠 Nano-Wait — Adaptive & Visual Execution Engine

Nano-Wait é um motor de execução adaptativo para Python que substitui delays cegos (time.sleep) por decisões baseadas em contexto do sistema e estado visual da tela.

Ele combina:

  • ⏱ Espera adaptativa (CPU, memória, rede)

  • 👁️ Visão computacional (OCR + ícones)

  • 🧠 Memória visual determinística (sem ML pesado)

  • 🖥️ API Python + CLI

🚀 Quick Start (o essencial)

from nano_wait import wait

wait(2.0)
wait(2.0, speed="fast")
wait(2.0, smart=True)

Com rede:

wait(3.0, wifi="MyNetwork", smart=True)

Com visão:

wait(until="logged_in", timeout=15)
wait(icon="ok.png", timeout=10)

⚠️ Instalação & Dependências (LEIA ISTO)

Nano-Wait não é uma biblioteca leve por padrão. Ela integra sistema operacional, visão computacional e automação gráfica.

📦 Dependências Python

Instaladas via pip:

pip install nano-wait

Incluem:

  • psutil

  • opencv-python

  • pytesseract

  • pynput

  • pyautogui

  • numpy

🧠 Dependência EXTERNA OBRIGATÓRIA (VisionMode)

👉 O Tesseract OCR precisa estar instalado no sistema operacional.

macOS

brew install tesseract

Ubuntu / Debian

sudo apt install tesseract-ocr

Windows

  • Baixar o instalador oficial do Tesseract

  • Adicionar o caminho ao PATH

⚠️ Sem o Tesseract, qualquer uso de OCR no VisionMode falhará imediatamente.

🧠 Mental Model — Como o Nano-Wait funciona

Nano-Wait executa continuamente:

observe → reason → wait → observe

Ele é composto por dois motores cooperativos:

⏱ Adaptive Waiting Engine — quando avançar?

  • CPU

  • Memória

  • Wi-Fi (se disponível)

  • Speed / Smart Mode

👁️ Vision Engine — o que está acontecendo?

  • OCR (texto)

  • Ícones (template matching)

  • Memória visual persistente

👉 A execução nunca avança cegamente.

⏱️ Adaptive Waiting Engine

📊 PC Score (estado da máquina)

cpu_score = 10 - cpu_usage / 10
mem_score = 10 - mem_usage / 10

pc_score = (cpu_score + mem_score) / 2
  • Intervalo: 0.0 → 10.0

  • Suave

  • Sem thresholds rígidos

🌐 Wi-Fi Awareness (opcional)

Sistema Implementação
Windows pywifi
macOS airport
Linux nmcli

🧯 Casos de borda (importante)

  • Se o pywifi falhar no Windows

  • Se o comando do sistema não responder

  • Se não houver Wi-Fi ativo

👉 Nano-Wait assume automaticamente um valor neutro:

wifi_score = 5.0

Isso garante:

  • Nenhuma exceção

  • Nenhum comportamento extremo

  • Execução previsível

🧠 Smart Context Mode

wait(2.0, smart=True)

Nesse modo, o Nano-Wait calcula a agressividade automaticamente:

risk = (pc_score + wifi_score) / 2
speed = clamp(risk, 0.5 → 5.0)

Ideal para:

  • Ambientes desconhecidos

  • Máquinas diferentes

  • Scripts distribuídos

⚡ Speed Presets (manual)

Speed Valor interno
slow 0.8
normal 1.5
fast 3.0
ultra 6.0

⚠️ Speed não define tempo fixo, apenas limite de agressividade.

⏱️ Cálculo Final de Espera

wait_time = clamp(t / factor, 0.05 → t)

Garantias:

  • Nunca < 50 ms

  • Nunca > tempo base

  • Estável mesmo sob carga

👁️ Vision Engine

from nano_wait.vision import VisionMode

vision = VisionMode(mode="observe")
state = vision.observe()

Modos conceituais

  • observe → detectar estados

  • learn → ensinar padrões

  • decision → agir conforme estado

📚 Learn Mode — Memória Visual (sem ML)

vision.learn("Welcome", state="home")
vision.learn_icon("ok.png", state="confirmed")

Os padrões são salvos em:

~/.nano-wait/vision_patterns.json

✔️ Determinístico ✔️ Versionado ✔️ Reproduzível ✔️ Explicável

🔍 Retorno da função wait (TIPOS)

A função wait não retorna sempre a mesma coisa:

result = wait(...)

Possíveis retornos

⏱️ Espera por tempo

float  # tempo efetivamente aguardado

Exemplo:

elapsed = wait(2.0)

👁️ Espera visual

VisualState

Exemplo:

state = wait(until="logged_in")

if state.detected:
    print(state.name, state.confidence)

👉 Sempre valide o tipo do retorno em automações críticas.

🖥️ CLI — Uso via Terminal

📦 Instalação correta da CLI

Para que o comando funcione:

nano-wait 2 --smart

O pacote deve expor um entry_point no setup.py ou pyproject.toml:

entry_points={
    "console_scripts": [
        "nano-wait=nano_wait.cli:main"
    ]
}

Sem isso, o comando não existirá no terminal, apenas a API Python.

Exemplos de uso

nano-wait 2 --smart --verbose
nano-wait 3 --wifi MyNetwork --speed fast

Flags:

  • --smart

  • --wifi

  • --speed

  • --verbose

  • --log

🔟 O que pode melhorar (o caminho para o 10)

Documentação honesta é o que separa libs boas de libs grandes.

Próximos upgrades naturais:

  • Instalação modular (nano-wait[vision])

  • Lazy import do VisionMode

  • Typed overloads para wait

  • Exceções semânticas (VisionTimeout, ContextUnavailable)

  • Benchmarks oficiais vs time.sleep

  • Modo headless/documentado

📌 Em uma frase

Nano-Wait não espera tempo — ele espera condições.

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.3.0.tar.gz (15.2 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.3.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nano_wait-3.3.0.tar.gz
Algorithm Hash digest
SHA256 aead4a2578aa2f92c5878eeaa7d3d0811882aaad3f9651c883cf28be02105cb0
MD5 cfe07a65661db711e60e713ec01a0714
BLAKE2b-256 d50478906a0c61b35a5ada5720e0d52ffdb83d4cee24b2c6bd7a9ded7028423b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nano_wait-3.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fbba9c73cfbc27df6b3d27dff2dc4b49c9e078ef6a1476c219b71fdf1139ac6d
MD5 e31fd19cc117b6ea044ed6ca2a50d88e
BLAKE2b-256 698a145f7ec4544924682b73f2d8dc01e6d6392e6e9a6ea16cbe9a89c3a2de83

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