Metadata-Version: 2.4
Name: postkit
Version: 0.2.0
Summary: PostgreSQL-native auth, permissions, versioned config, usage tracking, and job queues
Project-URL: Homepage, https://github.com/varunchopra/postkit
Project-URL: Repository, https://github.com/varunchopra/postkit
Project-URL: Documentation, https://github.com/varunchopra/postkit/tree/main/docs
Project-URL: Issues, https://github.com/varunchopra/postkit/issues
Author: Varun Chopra
License-Expression: Apache-2.0
Keywords: authentication,authorization,postgresql,rebac,sdk
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database
Classifier: Topic :: Security
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: jsonschema>=4.0.0
Requires-Dist: psycopg>=3.1.0
Provides-Extra: binary
Requires-Dist: psycopg[binary]>=3.1.0; extra == 'binary'
Provides-Extra: dev
Requires-Dist: psycopg[binary]>=3.1.0; extra == 'dev'
Requires-Dist: pytest-randomly>=3.0; extra == 'dev'
Requires-Dist: pytest-xdist>=3.0; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Description-Content-Type: text/markdown

# postkit SDK

Python client for postkit.

## Installation

```bash
pip install postkit
```

## Usage

```python
import psycopg
from postkit.authz import AuthzClient
from postkit.authn import AuthnClient

conn = psycopg.connect("postgresql://...")
cursor = conn.cursor()

# Authorization
authz = AuthzClient(cursor, namespace="my-app")
authz.grant("admin", resource=("repo", "api"), subject=("user", "alice"))
if authz.check(("user", "alice"), "read", ("repo", "api")):
    print("Access granted")

# Authentication
authn = AuthnClient(cursor, namespace="my-app")
user_id = authn.create_user("alice@example.com", password_hash="argon2...")
session_id = authn.create_session(user_id, token_hash="sha256...")
```

## Requirements

- PostgreSQL 14+
- The postkit SQL schema installed in your database

See the [main repository](https://github.com/varunchopra/postkit) for SQL installation instructions.
