Metadata-Version: 2.4
Name: alphawindow
Version: 0.1.0
Summary: Windows-first window automation abstractions with pluggable input and output modes.
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: native
Requires-Dist: pywin32>=306; platform_system == "Windows" and extra == "native"
Requires-Dist: pynput>=1.7.6; platform_system == "Windows" and extra == "native"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"

# AlphaWindow

AlphaWindow is a Windows-first automation abstraction layer. It exposes one session API for window operations while allowing callers to choose different input and output modes.

The first implementation includes:

- Built-in I/O profiles for every declared input and output mode, including `inspect`, `observe`, `desktop_observe`, `dry_run`, `win32_message`, `message_only`, `uia_control`, `uia_visual`, `global_input`, `foreground_visual`, `guarded_input`, `guarded_desktop`, `isolated_observe`, `isolated_telemetry`, `virtual_window`, `virtual_telemetry`, and `virtual_input_only`.
- A `WindowSession` API for `prefetch`, `capture`, `observe`, `click`, `key_down`, `key_up`, and `type_text`.
- Generic delegation backends for message, UIA, foreground, guarded foreground, state, desktop-region, hook-telemetry, and no-output modes.
- Compatibility checks so a backend cannot silently fall back to a broader side-effect mode.
- Hook-aware `isolated` and `virtualized` input backends that accept pluggable hook managers and virtual input transports.

Native pywin32, pynput, and DLL hook adapters are intended to plug into the same protocols in later slices.

## Install

From PyPI after publishing:

```powershell
pip install alphawindow
```

From this checkout:

```powershell
pip install .
```

## Import

```python
import alphawindow

from alphawindow import (
    AutomationConfig,
    InputMode,
    OutputMode,
    WindowSelector,
    WindowSession,
    get_profile,
)

print(alphawindow.__version__)
print(get_profile("observe").input_mode is InputMode.DRY_RUN)
```

## Release

Publishing is handled by GitHub Actions in `.github/workflows/publish.yml`.

1. Configure PyPI Trusted Publishing for this repository, environment `pypi`, and workflow `publish.yml`.
2. Update the version in `pyproject.toml` and `src/alphawindow/_version.py`.
3. Push a version tag:

```powershell
git tag v0.1.0
git push origin v0.1.0
```

The workflow runs tests on Windows for Python 3.11, 3.12, and 3.13, builds the package, checks distribution metadata, and publishes to PyPI only for `v*` tags.
