Metadata-Version: 2.4
Name: asyncio-for-ynab
Version: 1.83.0
Summary: Unofficial asyncio client for the YNAB API.
Author: asyncio-for-ynab maintainers
License-Expression: MIT
Project-URL: Repository, https://github.com/mxr/asyncio-for-ynab
Keywords: ynab,asyncio,openapi,httpx
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: python-dateutil>=2.8.2
Requires-Dist: httpx>=0.28.1
Requires-Dist: pydantic>=2.11
Requires-Dist: typing-extensions>=4.7.1
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: types-python-dateutil; extra == "dev"

# asyncio-for-ynab

Unofficial asyncio client for the YNAB API. This package is generated from YNAB's OpenAPI spec and uses the OpenAPI Generator Python `httpx` client.

This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with YNAB.

## Usage

```python
import asyncio

import asyncio_for_ynab


async def main() -> None:
    configuration = asyncio_for_ynab.Configuration(access_token="your-token")

    async with asyncio_for_ynab.ApiClient(configuration) as api_client:
        plans_api = asyncio_for_ynab.PlansApi(api_client)
        response = await plans_api.get_plans()
        print(response.data.plans)


asyncio.run(main())
```

## Development

Install development dependencies:

```bash
python -m pip install -e ".[dev]"
```

Validate the checked-in OpenAPI spec:

```bash
pre-commit run --all-files
```

Regenerate the SDK from `config/spec.yaml`:

```bash
scripts/generate
```

Download the current upstream spec and regenerate if the API version changed:

```bash
scripts/update-from-upstream
```

Run tests and build checks:

```bash
tox -e py
python -m build
twine check dist/*
```

## Release

Package versions mirror YNAB API spec versions. For example, YNAB spec `1.83.0` is published as `asyncio-for-ynab==1.83.0`.

After merging an update and verifying the tree is clean, run:

```bash
scripts/release
```

The release workflow publishes tagged releases to PyPI using trusted publishing.
