PyQTTier
A Python MQTT client library providing a clean, type-safe wrapper around paho-mqtt with support for MQTT 5.0 features.
Features
- MQTT 5.0 Support - Full support for MQTT 5.0 protocol features including message properties, correlation data, and response topics
- Type Safety - Strongly typed with mypy-checked type hints for reliability
- Multiple Transports - Supports TCP, WebSocket, and Unix socket connections
- Mock Implementation - Built-in
MockConnectionfor easy testing without a broker - Python 3.7+ - Compatible with Python 3.7 through 3.12
Installation
pip install pyqttier
Quick Start
Basic Usage
from pyqttier.connection import Mqtt5Connection
from pyqttier.transport import MqttTransport, MqttTransportType
from pyqttier.message import Message
# Connect to broker
transport = MqttTransport(
transport_type=MqttTransportType.TCP,
host="localhost",
port=1883,
)
conn = Mqtt5Connection(transport=transport, client_id="my-client")
# Subscribe to a topic
def on_message(msg: Message):
print(f"Received: {msg.payload.decode()}")
conn.subscribe("sensors/temperature", callback=on_message)
# Publish a message
msg = Message(topic="sensors/temperature", payload=b"23.5", qos=1)
conn.publish(msg)
Testing with MockConnection
from pyqttier.mock import MockConnection
from pyqttier.message import Message
# Create mock connection for testing
conn = MockConnection()
# Publish and verify
result = conn.publish(Message(topic="test", payload=b"data", qos=1))
assert result.done()
assert len(conn.published_messages) == 1
assert conn.published_messages[0].topic == "test"
Examples
See the examples/ directory for more detailed usage examples:
usage_example.py- Real broker connections, wildcards, request-response patternsmock_example.py- Testing with MockConnection
Development
# Install project
uv pip install -e .
# Type checking
uv run mypy --check-untyped-defs ./src/
# Unit tests
uv run pytest
License
MIT License.
See LICENSE file for details.
Metadata
Release files for pyqttier 0.2.11.post0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyqttier-0.2.11.post0.tar.gz | 70.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyqttier-0.2.11.post0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 82.0 kB
Release files / pyqttier-0.2.11.post0.tar.gz
| Download URL | pyqttier-0.2.11.post0.tar.gz |
|---|---|
| Size | 70.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c7fe77af31b8bb943a3f817548c0014f15848f316bc03e862f9081e531f390ef
|
|
BLAKE2b-256 checksum How to use checksums |
b6a16096e52ec79800866c20edb13d0ee9e828a5341d03e23d669c70d5bba463
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / pyqttier-0.2.11.post0-py3-none-any.whl
| Download URL | pyqttier-0.2.11.post0-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f3350dc9d4ee67f6853f4253bdb2715c28bd3b98e1daa4759205ab26f67f39bb
|
|
BLAKE2b-256 checksum How to use checksums |
9c5e5a090f5adecd2c5a96470c63841410ec450c0e1c4c70827642c0deb0890c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|