Convenient wrapper around Paho MQTT
Project description
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(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
conn.publish(Message(topic="test", payload=b"data", qos=1))
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyqttier-0.2.0.tar.gz
(58.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyqttier-0.2.0.tar.gz.
File metadata
- Download URL: pyqttier-0.2.0.tar.gz
- Upload date:
- Size: 58.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.12 {"installer":{"name":"uv","version":"0.9.12"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f451a013909a784a90eccea2559c4cce6e3af7c248f90135240426f24e757cb
|
|
| MD5 |
9f2a30c439af07a1396fe85cac330a7b
|
|
| BLAKE2b-256 |
7345fa6379b42d8f2a2240c3f331fd44ec663f4ee0d7580e6eb5764a7e8f2e04
|
File details
Details for the file pyqttier-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pyqttier-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.12 {"installer":{"name":"uv","version":"0.9.12"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2da862cbd3485842b380f0006598e064edc3376a0ac36a7cee8c90ba9b0664a2
|
|
| MD5 |
34c05784f7e603a45c4f032f091f5448
|
|
| BLAKE2b-256 |
c5957c249d48c6f7bfde659606570955534c09dc5559151ce581cb963c97a181
|