Metadata-Version: 2.4
Name: flowqueue
Version: 0.1.0
Summary: Python client SDK for FlowQueue — a cloud-native message processing platform
Author: FlowQueue
License: MIT
Project-URL: Homepage, https://github.com/your-org/flowqueue
Project-URL: Repository, https://github.com/your-org/flowqueue
Project-URL: Documentation, https://github.com/your-org/flowqueue#readme
Keywords: queue,messaging,webhook,delivery,dlq,flowqueue
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.27
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Dynamic: license-file

# flowqueue

Python client SDK for **FlowQueue** — a cloud-native message processing platform
(durable queues, per-consumer delivery lifecycle, retries, dead-letter queue,
scheduled delivery, webhooks with HMAC signing, replay, and a tamper-evident audit
log).

```bash
pip install flowqueue
```

## Quickstart

```python
from flowqueue import FlowQueueClient, FlowQueueConsumer

client = FlowQueueClient("https://flowqueue.example.com", "fq_your_api_key")

# Create a queue + a pull consumer
queue = client.create_queue("orders", max_retries=5, dlq_enabled=True)
consumer = client.create_consumer(queue["id"], "billing", type="http")

# Publish (optionally scheduled)
client.publish(queue["id"], {"order_id": 42}, idempotency_key="order-42")
client.publish(queue["id"], {"order_id": 43}, delay_seconds=30)   # deliver in 30s

# Consume one delivery
c = FlowQueueConsumer(client, consumer["id"])
d = c.poll()
if d:
    print(d.payload)
    c.complete(d.id, remark="done")
```

## Run a worker loop

```python
def handle(delivery):
    process(delivery.payload)        # raise to fail (retry / DLQ), return to complete

FlowQueueConsumer(client, consumer_id).run(handle, poll_interval=2.0)
```

## Management, replay, DLQ

```python
client.pause_queue(qid); client.resume_queue(qid)
client.queue_stats(qid)
client.replay_failed(consumer_id)
dead = client.dlq_list(qid)
client.requeue_all(qid)              # bulk requeue the dead-letter queue
```

## API keys & scopes

Generate scoped keys in the FlowQueue UI or:

```python
key = client.create_api_key("ci-publisher", scopes=["publish"])
print(key["token"])   # shown once
```

Errors raise `flowqueue.ApiError(status, code, message)`.

## License

MIT
