Metadata-Version: 2.1
Name: pia-ctl-sdk
Version: 0.1.2
Summary: Typed mini-SDK for the PIA `piactl` CLI with env settings, strategy connect, async monitor, and proxy adapters.
Keywords: pia,vpn,piactl,proxy,playwright,selenium,httpx,pydantic
Author-Email: 0rac130fD31phi <william.astley@algebraicwealth.com>
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Project-URL: Homepage, https://github.com/pr1m8/pia-ctl
Project-URL: Issues, https://github.com/pr1m8/pia-ctl/issues
Project-URL: Documentation, https://pr1m8.github.io/pia-ctl/
Requires-Python: ==3.13.*
Requires-Dist: pydantic>=2.7
Requires-Dist: pydantic-settings>=2.2
Provides-Extra: cli
Requires-Dist: typer[all]>=0.12; extra == "cli"
Provides-Extra: net
Requires-Dist: httpx>=0.27; extra == "net"
Requires-Dist: selenium>=4; extra == "net"
Requires-Dist: playwright>=1.46; extra == "net"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.6.1; extra == "docs"
Requires-Dist: mkdocs-material>=9.6.21; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.30.1; extra == "docs"
Requires-Dist: mkdocs-gen-files>=0.5.0; extra == "docs"
Requires-Dist: mkdocs-literate-nav>=0.6.2; extra == "docs"
Requires-Dist: mkdocs-section-index>=0.3.10; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin>=7.2.0; extra == "docs"
Provides-Extra: sphinx
Requires-Dist: sphinx>=7.4; extra == "sphinx"
Requires-Dist: furo>=2024.8.6; extra == "sphinx"
Requires-Dist: myst-parser>=3.0; extra == "sphinx"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"
Requires-Dist: pytest-cov>=5; extra == "test"
Description-Content-Type: text/markdown

# pypia_ctl


[![PyPI - Version](https://img.shields.io/pypi/v/pypia-ctl.svg)](https://pypi.org/project/pypia-ctl/)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![CI - Lint](https://github.com/your-org/pypia_ctl/actions/workflows/lint.yml/badge.svg)](https://github.com/your-org/pypia_ctl/actions/workflows/lint.yml)
[![CI - Tests](https://github.com/your-org/pypia_ctl/actions/workflows/tests.yml/badge.svg)](https://github.com/your-org/pypia_ctl/actions/workflows/tests.yml)
[![Docs - GitHub Pages](https://img.shields.io/badge/docs-mkdocs--material-blue)](https://your-org.github.io/pypia_ctl/)
[![Read the Docs](https://img.shields.io/readthedocs/pypia-ctl)](https://readthedocs.org/projects/pypia-ctl/)
[![Code Style - Ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
[![Type Checking - mypy](https://img.shields.io/badge/types-mypy-2A6DB2.svg)](http://mypy-lang.org/)


Typed wrapper around the **Private Internet Access** CLI (`piactl`) with:
- strict subprocess runner + typed exceptions
- status getters & strategy connect (preferred → random → default)
- async monitor (`piactl monitor`)
- Pydantic v2 settings via `.env` / env vars
- proxy adapters (Playwright, httpx, Selenium)
- `.env` tools (create/merge)
- plugin hooks

## Install (PDM or pip)

```bash
# PDM
pdm install -G docs -G dev -G sphinx

# pip
pip install pydantic pydantic-settings mkdocs mkdocs-material mkdocstrings[python] ruff mypy pytest sphinx furo myst-parser
```

## Docs (MkDocs + Material)

```bash
pdm run mkdocs serve    # or: mkdocs serve
```

## Sphinx (optional)

```bash
pip install sphinx furo myst-parser
(cd sphinx-docs && make html)
open sphinx-docs/_build/html/index.html
```
