Metadata-Version: 2.4
Name: mqttproto
Version: 0.7.2.29
Summary: Sans-io MQTT v5 client/broker with an AnyIO based I/O implementation
Author-email: Alex Grönholm <alex.gronholm@nextday.fi>
License: MIT
Project-URL: Documentation, https://mqttproto.readthedocs.io/en/latest/
Project-URL: Source code, https://github.com/agronholm/mqttproto
Project-URL: Issue tracker, https://github.com/agronholm/mqttproto/issues
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Typing :: Typed
Classifier: Framework :: AnyIO
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: anyio~=4.4
Requires-Dist: attrs>=23.2.0
Requires-Dist: stamina>=24.2.0
Requires-Dist: typing-extensions>=4.0; python_version < "3.11"
Provides-Extra: websockets
Requires-Dist: httpx-ws>=0.6.0; extra == "websockets"
Provides-Extra: test
Requires-Dist: anyio[trio]; extra == "test"
Requires-Dist: coverage>=7; extra == "test"
Requires-Dist: mqttproto[websockets]; extra == "test"
Requires-Dist: pytest>=8.0; extra == "test"
Provides-Extra: doc
Requires-Dist: enum_tools[sphinx]>=0.12.0; extra == "doc"
Requires-Dist: mqttproto[websockets]; extra == "doc"
Requires-Dist: packaging; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=2.1.1; extra == "doc"
Requires-Dist: sphinx-tabs>=3.3.1; extra == "doc"
Requires-Dist: sphinx_rtd_theme>=2.0.0; extra == "doc"
Dynamic: license-file

.. image:: https://github.com/agronholm/mqttproto/actions/workflows/test.yml/badge.svg
  :target: https://github.com/agronholm/mqttproto/actions/workflows/test.yml
  :alt: Build Status
.. image:: https://coveralls.io/repos/github/agronholm/mqttproto/badge.svg?branch=main
  :target: https://coveralls.io/github/agronholm/mqttproto?branch=main
  :alt: Code Coverage
.. image:: https://readthedocs.org/projects/mqttproto/badge/?version=latest
  :target: https://mqttproto.readthedocs.io/en/latest/?badge=latest
  :alt: Documentation

This library contains a sans-io_ implementation of the MQTT_ v5 protocol.

Contents:

* State machines appropriate for implementing MQTT_ clients and brokers
* Asynchronous client and broker implementations, compatible with both Trio_ and
  asyncio_, via the AnyIO_ library
* Synchronous client implementation, implemented by using an asyncio_ event loop thread
  behind the scenes

While the provided client I/O implementations are intended for production use, the
broker implementation should only be used in very lightweight scenarios where high
performance or a broad feature set are not required. In those cases, broker
implementations from vendors like EMQX_ or HiveMQ_ are recommended instead.

The state machine implementation tries to adhere to the MQTT v5 protocol as tightly as
possible, and this project has certain automatic safeguards to ensure correctness:

* Ruff_ linting
* Passes Mypy_ in strict mode
* Documentation built with "fail-on-warning" enabled

You can find the documentation `here <https://mqttproto.readthedocs.io/>`_.

.. _sans-io: https://sans-io.readthedocs.io/
.. _MQTT: https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
.. _Trio: https://github.com/python-trio/trio
.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _AnyIO: https://pypi.org/project/anyio/
.. _EMQX: https://www.emqx.com/en
.. _HiveMQ: https://www.hivemq.com/
.. _Ruff: https://docs.astral.sh/ruff/
.. _Mypy: https://mypy-lang.org/
.. _Pyright: https://github.com/microsoft/pyright
