Metadata-Version: 2.3
Name: tochka-client
Version: 0.1.0
Summary: Tochka Bank API Client
Author: Alexey Pechenin
Author-email: Alexey Pechenin <me@pyrorhythm.dev>
License: MIT
Classifier: Typing :: Typed
Requires-Dist: typer
Requires-Dist: rich
Requires-Dist: niquests[speedups]>=3.19.1
Requires-Dist: pydantic>=2.13.4
Requires-Dist: orjson>=3.11.9
Requires-Dist: email-validator>=2.3.0
Maintainer: Alexey Pechenin
Maintainer-email: Alexey Pechenin <me@pyrorhythm.dev>
Requires-Python: >=3.12
Project-URL: bugs, https://github.com/pyrorhythm/tochka-client/issues
Project-URL: changelog, https://github.com/pyrorhythm/tochka-client/releases
Project-URL: homepage, https://github.com/pyrorhythm/tochka-client
Description-Content-Type: text/markdown

# Tochka Bank API Client

![PyPI version](https://img.shields.io/pypi/v/tochka-client.svg)

Tochka Bank API Client

* GitHub: https://github.com/pyrorhythm/tochka-client/
* PyPI package: https://pypi.org/project/tochka-client/
* Created by: **[Alexey Pechenin](https://pyrorhythm.dev/)** | GitHub https://github.com/pyrorhythm | PyPI https://pypi.org/user/pyrorhythm/
* Free software: MIT License

## Features

* Async client built on [niquests](https://niquests.readthedocs.io/), covering the full Tochka API (71 endpoints).
* Services grouped as namespaces - `client.open_banking`, `client.acquiring`, `client.sbp`, etc.
* Fully typed: Pydantic request/response models, typed query params via `Unpack[TypedDict]`.
* Sandbox/production switch, typed errors (`TochkaAPIError`), async context manager.
* Models regenerated from `swagger.json`; client mixins regenerated via `scripts/gen_client.py`.

## Development

To set up for local development:

```bash
# Clone your fork
git clone git@github.com:your_username/tochka-client.git
cd tochka-client

# Install in editable mode with live updates
uv tool install --editable .
```

Run tests:

```bash
uv run pytest
```

Run quality checks (format, lint, type check, test):

```bash
just qa
```

## Author

Tochka Bank API Client was created in 2026 by Alexey Pechenin.
