Metadata-Version: 2.4
Name: pysolidarity
Version: 0.1.0
Summary: A tiny, modular Solidarity.Tech API wrapper with optional Redis-backed rate limiting.
Project-URL: Homepage, https://www.solidarity.tech
Project-URL: Issues, https://github.com/your-org/pysolidarity/issues
Project-URL: Source, https://github.com/your-org/pysolidarity
Author-email: Your Org <oss@example.com>
License: MIT
Keywords: api,sdk,solidarity
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.9
Requires-Dist: requests<3.0,>=2.31
Provides-Extra: dev
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1; extra == 'dev'
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: responses>=0.25.0; extra == 'dev'
Requires-Dist: ruff>=0.5.0; extra == 'dev'
Requires-Dist: types-requests; extra == 'dev'
Provides-Extra: rate
Requires-Dist: redis>=5.0; extra == 'rate'
Description-Content-Type: text/markdown

# pysolidarity

Solidarity.Tech API Wrapper for Python.

Creates a clean(er) python interface to a few functions of the Solidarity.tech API.

This is an early version. Not fully tested. Significantly vibe-coded.

Currently only supports creating, updating, and fetching users.

## Installation

```bash
pip install pysolidarity
# with optional rate limiting support
pip install "pysolidarity[rate]"
```

## Quick start
```python
from pysolidarity import make_client_from_env

# export SOLIDARITY_API_KEY=...
client = make_client_from_env()

# Create-or-update by email or phone
user = client.users.create_or_update({"phone_number": "15555555555", "first_name":"Jimmy"})
print(user)

# Update (returns all user details)
client.users.update(user["id"], {"first_name":"Jiiiimmy"})

# Get (returns all user details)
client.users.get(user["id"])
```

## Rate limiting (optional)
```python
import redis
from pysolidarity import make_rate_limited_client

r = redis.Redis(host="127.0.0.1", port=6379)
client = make_rate_limited_client(r, req_per_sec=4)
print(client.users.get(1234))
```

## Environment
`SOLIDARITY_API_KEY` (required)

## Development
```python
pip install -e .[dev]
pytest -q
ruff check pysolidarity tests
mypy pysolidarity
```