.. asynqp documentation master file, created by
   sphinx-quickstart on Wed Jun 11 20:44:10 2014.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

.. role :: red

.. role :: orange

.. role :: green


AMQP Procotol Support
=====================
``asynqp`` is under development.
Here is a table documenting the parts of the `AMQP protocol <https://www.rabbitmq.com/protocol.html>`_
that are currently supported by ``asynqp``.

.. NOTE::
    This library is alpha software. Even the methods marked as 'full support' may still have bugs.
    Please report any bugs to the `Github tracker <https://github.com/benjamin-hodgson/asynqp>`_.


+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| Class      | Method               | Support           | API                                       | Notes                                   |
+============+======================+===================+===========================================+=========================================+
| connection |                      | :orange:`partial` | :class:`asynqp.Connection`                |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | start/start-ok       | :green:`full`     | :func:`asynqp.connect`                    |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | secure/secure-ok     | :red:`none`       |                                           | Not required for default auth mechanism |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | tune/tune-ok         | :orange:`partial` |                                           | Not presently user-customisable         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | open/open-ok         | :green:`full`     | :func:`asynqp.connect`                    |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | close/close-ok       | :green:`full`     | :meth:`asynqp.Connection.close`           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| channel    |                      | :orange:`partial` | :class:`asynqp.Channel`                   |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | open/open-ok         | :green:`full`     | :func:`asynqp.Connection.open_channel`    |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | flow/flow-ok         | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | close/close-ok       | :green:`full`     | :meth:`asynqp.Channel.close`              |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| exchange   |                      | :orange:`partial` | :class:`asynqp.Exchange`                  |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | declare/declare-ok   | :green:`full`     | :meth:`asynqp.Channel.declare_exchange`   |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | delete/delete-ok     | :green:`full`     | :meth:`asynqp.Exchange.delete`            |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | bind/bind-ok         | :red:`none`       |                                           | RabbitMQ extension                      |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | unbind/unbind-ok     | :red:`none`       |                                           | RabbitMQ extension                      |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| queue      |                      | :orange:`partial` | :class:`asynqp.Queue`                     |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | declare/declare-ok   | :green:`full`     | :meth:`asynqp.Channel.declare_queue`      |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | bind/bind-ok         | :orange:`partial` | :meth:`asynqp.Queue.bind`                 | Not all parameters presently supported  |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | unbind/unbind-ok     | :green:`full`     | :meth:`asynqp.QueueBinding.unbind`        |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | purge/purge-ok       | :orange:`partial` | :meth:`asynqp.Queue.purge`                | ``no-wait`` not presently supported     |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | delete/delete-ok     | :orange:`partial` | :meth:`asynqp.Queue.delete`               | ``no-wait`` not presently supported     |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| basic      |                      | :orange:`partial` |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | qos/qos-ok           | :green:`full`     | :meth:`asynqp.Channel.set_qos`            |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | consume/consume-ok   | :orange:`partial` | :meth:`asynqp.Queue.consume`              | Not all parameters presently supported  |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | cancel/cancel-ok     | :orange:`partial` | :meth:`asynqp.Consumer.cancel`            | ``no-wait`` not presently supported     |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | publish              | :orange:`partial` | :meth:`asynqp.Exchange.publish`           | ``immediate`` not presently supported   |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | return               | :green:`full`     | :meth:`asynqp.Channel.set_return_handler` |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | deliver              | :green:`full`     |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | get/get-ok/get-empty | :green:`full`     | :meth:`asynqp.Queue.get`                  |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | ack                  | :green:`full`     | :meth:`asynqp.IncomingMessage.ack`        |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | reject               | :green:`full`     | :meth:`asynqp.IncomingMessage.reject`     |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | recover/recover-ok   | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | recover-async        | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | nack                 | :red:`none`       |                                           | RabbitMQ extension                      |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| tx         |                      | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | select/select-ok     | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | commit/commit-ok     | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | rollback/rollback-ok | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
| confirm    |                      | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+
|            | select/select-ok     | :red:`none`       |                                           |                                         |
+------------+----------------------+-------------------+-------------------------------------------+-----------------------------------------+