Skip to main content

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 MockConnection for easy testing without a broker
  • Python 3.7+ - Compatible with Python 3.7 through 3.12 Python 3.7 Tests

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 patterns
  • mock_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


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.5.tar.gz (55.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyqttier-0.2.5-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file pyqttier-0.2.5.tar.gz.

File metadata

  • Download URL: pyqttier-0.2.5.tar.gz
  • Upload date:
  • Size: 55.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.6

File hashes

Hashes for pyqttier-0.2.5.tar.gz
Algorithm Hash digest
SHA256 36ca3dc1698dc5823aeecc23d4bd0c4dedb3cedc32bf3f1e95f546b26673eab8
MD5 deb8ef68ccf53e327a81ac9fcfcf351d
BLAKE2b-256 f88ef47db52b49642cf6a43b68e0073eebaf494b6aca839ad9b6583ebbe8123e

See more details on using hashes here.

File details

Details for the file pyqttier-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: pyqttier-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.6

File hashes

Hashes for pyqttier-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 84e0e3782c50f3c179b942cc51b34fda99273b9c38e551bb786910f80b809572
MD5 490ed2782d4c9ca9bf6f93592cc15f1c
BLAKE2b-256 a8ea944a6e68fb5e2c555a88129d0a1dcef740ff370edcb8cdbd4c6527ea2af2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page