Skip to main content

AMQP 1.0 Client Library for Python

Project description

uAMQP for Python

image image image

An AMQP 1.0 client library for Python.

Disclaimer

This repo is no longer in active maintenance and we plan on deprecating it sometime in the first quarter of 2025. The EventHubs & Service Bus client libraries are now using the python based AMQP library which is under active development. If there is interest in using the new python library as standalone, please share your interest in this issue.

uAMQP for Python requires Python 3.6+ starting from v1.5, and Python 2.7 is no longer supported. If Python 2.7 is required, please install uAMQP v1.4.3:

$ pip install uamqp==1.4.3 

Installation

Wheels are provided for most major operating systems, so you can install directly with pip:

$ pip install uamqp 

If you are running a Linux distro that does not support ManyLinux1 or you need to customize the build based on your system settings and packages, you can install from source:

$ apt-get update 
$ apt-get install -y build-essential libssl-dev uuid-dev cmake libcurl4-openssl-dev pkg-config python3-dev python3-pip $ pip3 install uamqp --no-binary :all: 

If you are running Alpine, you can install from source:

$ apk add --update python3 py-pip python3-dev cmake gcc g++ openssl-dev build-base $ pip3 install uamqp --no-binary :all: 

If you are running Red Hat, you can install from source:

$ yum install cmake gcc gcc-c++ make openssl-devel python3-devel $ pip3 install uamqp --no-binary :all: 

Documentation

Reference documentation can be found here: docs.microsoft.com/python/api/uamqp/uamqp.

Developer Setup

In order to run the code directly, the Cython extension will need to be build first.

Pre-requisites

  • Windows: Setup a build environment. - Linux: Install dependencies as descriped above in the installation instructions. - MacOS: Install cmake using Homebrew:
$ brew install cmake 

Building the extension

This project has two C library dependencies. They are vendored in this repository in these versions:

To build, start by creating a virtual environment and installing the required Python packages:

$ python -m venv env 
$ env/Scripts/activate 
(env)$ pip install -r dev_requirements.txt 

Next, run the build command:

$ python setup.py build_ext --inplace 

Tests

The tests can be run from within the virtual environment. The extension must be built first using the instructions above.

(env)$ pytest 

Provide Feedback

If you encounter any bugs or have suggestions, please file an issue in the Issues section of the project.

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Release History

1.6.11 (2024-10-28)

  • Added support for python 3.13
  • Updated OpenSSL dependency to 3.0 LTS
  • Updated Cython dependency to 3.0.11
  • Updated Azure uAMQP C and Azure C Shared Utility dependencies

1.6.10 (2024-09-11)

  • Incorporate fixes from PR to update vendor uamqp code.

1.6.9 (2024-03-20)

  • Incorporate fixes from PR

1.6.8 (2024-01-29)

  • Incorporate fixes from PR

1.6.7 (2024-01-17)

  • Fixes for CVE-2024-21646

1.6.6 (2023-11-16)

  • Added support for python 3.11

1.6.5 (2023-07-12)

  • Few more updates to submodules to support OpenSSL 3.0 compilation

1.6.4 (2023-02-09)

  • Updated OpenSSL dependency to 1.1.1t
  • Updated submodules to support OpenSSL 3.0 compilation
  • Removed dependency on six
  • Fixed a bug that caused the wrong port to selected for websockets when a port was not passed in

1.6.3 (2022-10-27)

  • Publish 3.11 wheels

1.6.2 (2022-10-27)

  • Added support for python 3.11
  • Updated OpenSSL dependency to 1.1.1q
  • Updated cython dependency to 0.29.32
  • Dropped support for manylinux2010
  • Using cibuildwheel to generate wheels

1.6.1 (2022-10-11)

  • Added support for handling of duplicate certificates in [azure-c-shared-utility]{.title-ref} dependency by using [CERT_STORE_ADD_REPLACE_EXISTING]{.title-ref} parameter in the [CertAddEncodedCertificateToStore]{.title-ref} function call. (azure-sdk-for-python issue #26034)

1.6.0 (2022-08-18)

This version and all future versions will require Python 3.7+, Python 3.6 is no longer supported.

  • Added [data]{.title-ref}, [value]{.title-ref}, [sequence]{.title-ref} properties to [uamqp.Message]{.title-ref}, which return the body if the body type corresponds.
  • Added [message_annotations]{.title-ref} property to [uamqp.Message]{.title-ref}, which is an alias for the [annotations]{.title-ref} instance variable.
  • Added [data]{.title-ref} property to [uamqp.BatchMessage]{.title-ref}, which returns the iterable body of the batch.
  • Added [ttl]{.title-ref} property to [uamqp.MessageHeader]{.title-ref}, which is an alias for the [time_to_live]{.title-ref} instance variable.

1.5.3 (2022-03-23)

  • Updated OpenSSL dependency to 1.1.1n for wheels of manylinux and macOS.

1.5.2 (2022-03-15)

  • Fixed bug that resulted in an error when deepcopying BatchMessage objects (azure-sdk-for-python issue #22529).

1.5.1 (2022-01-12)

  • Added back the support for Python 3.6.

1.5.0 (2022-01-05)

This version and all future versions will require Python 3.7+, Python 2.7 and Python 3.6 are no longer supported.

  • [SASTokenAuth]{.title-ref}, [JWTTokenAuth]{.title-ref}, [SASTokenAsync]{.title-ref}, and [JWTTokenAsync]{.title-ref} now takes keyword argument [refresh_window]{.title-ref} to override default token refresh timing in constructors.
  • Fixed bug that [SendClientAsync]{.title-ref} might run into infinite loop while sending when it is shutdown unexpectedly.
  • Updated dependencies Azure uAMQP C @ 2021-11-16 and Azure C Shared Utility @ 2021-11-15.
  • Fixed bug that the [keep_alive_thread]{.title-ref} of [AMQPClient]{.title-ref} should not keep program from exiting in the case of [AMQPClient]{.title-ref} not being closed properly.

1.4.3 (2021-10-06)

  • Added support for Python 3.10.

1.4.2 (2021-09-21)

  • Fixed memory leak in win32 socketio and tlsio (azure-sdk-for-python issue #19777).
  • Fixed memory leak in the process of converting AMQPValue into string (azure-sdk-for-python issue #19777).

1.4.1 (2021-06-28)

  • Fixed bug that JWTTokenAuth and JWTTokenAsync do not initialize token for token types other than b'jwt'.
  • Fixed bug that attibutes [creation_time]{.title-ref}, [absolute_expiry_time]{.title-ref} and [group_sequence]{.title-ref} on [MessageProperties]{.title-ref} should be compatible with integer types on Python 2.7.

1.4.0 (2021-05-03)

This version and all future versions will require Python 2.7 or Python 3.6+, Python 3.5 is no longer supported.

  • Fixed memory leaks in the process of link attach where source and target cython objects are not properly deallocated (azure-sdk-for-python issue #15747).
  • Improved management operation callback not to parse description value of non AMQP_TYPE_STRING type as string (azure-sdk-for-python issue #18361).

1.3.0 (2021-04-05)

This version will be the last version to officially support Python 3.5, future versions will require Python 2.7 or Python 3.6+.

  • Added support for AMQP Sequence as the body type of an amqp message.

  • Added new class [uamqp.MessageBodyType]{.title-ref} to represent the body type of an amqp message, including:

  • `Data`: The body consists of one or more data sections and each section contains opaque binary data. > - `Sequence`: The body consists of one or more sequence sections and each section contains an arbitrary number of structured data elements. > - `Value`: The body consists of one amqp-value section and the section contains a single AMQP value.
  • Added new parameters to the constructor of `uamqp.Message`:
  • [body_type]{.title-ref} which takes [uamqp.MessageBodyType]{.title-ref} to specify the body type of an amqp message.
  • [footer]{.title-ref} which takes a dict to set the footer of an amqp message.
  • [delivery_annotations]{.title-ref} which takes a dict to set the delivery annotations of an amqp message.
  • Added support for pickling [uamqp.Message]{.title-ref}.

  • Fixed bug that sending message of large size triggering segmentation fault when the underlying socket connection is lost.

  • Fixed bug in link flow control where link credit and delivery count should be calculated based on per message instead of per transfer frame.

1.2.15 (2021-03-02)

  • Added desired-capabilities for [SendClient(Async)]{.title-ref} and [MessageSender(Async)]{.title-ref} as part of the AMQP protocol.
  • Added types for AMQPShort and AMQPuShort for explicit handling of short and unsigned short encoding.

1.2.14 (2021-02-01)

  • Updated Azure uAMQP C and Azure C Shared Utility dependencies.
  • Fixed memory leak with SAS Token creation.

1.2.13 (2021-01-06)

  • Fixed bug in accessing [MessageProperties.user_id]{.title-ref} triggering segmentation fault when the underlying C bytes are NULL.
  • Fixed bug in [MessageProperties.user_id]{.title-ref} being limited to 8 bytes.
  • Fixed bug where connection establishment on macOS with Clang 12 triggering unrecognized selector exception.
  • Fixed bug that macOS was unable to detect network error.
  • Fixed bug that [ReceiveClient]{.title-ref} and [ReceiveClientAsync]{.title-ref} receive messages during connection establishment.

1.2.12 (2020-10-09)

  • Updated cython dependency to 0.29.21.
  • Added support for Python 3.9.

1.2.11 (2020-10-01)

  • Updated tlsio_openssl module to send SNI when establishing tls connection (Thanks to milope).
  • Fixed bug where [Message.footer]{.title-ref} and [Message.delivery_annotation]{.title-ref} were not encoded into the outgoing payload.
  • Fixed bug where message sending timeout error didn't get raised out.

1.2.10 (2020-08-05)

  • Added parameter [shutdown_after_timeout]{.title-ref} to [ReceiveClient]{.title-ref} and [ReceiveClientAsync]{.title-ref} which gives control over whether to shutdown receiver after timeout.

1.2.9 (2020-07-06)

  • Added method [MessageReceiver.reset_link_credit]{.title-ref} which is responsible for resetting current available link credit on the receiver link and send update to the sender.

1.2.8 (2020-05-19)

  • Fix to initialize delivery_count header at 0 instead of None (azure-sdk-for-python issue #9708)
  • Added info fields to rejected delivery disposition.

1.2.7 (2020-05-04)

  • Fixed bug in setting certificate of tlsio on MacOS (azure-sdk-for-python issue #7201).
  • Fixed seg fault in logging network tracing on MacOS (PR#147, Thanks to malthe).
  • Fixed typos in log messages (PR#146, Thanks to bluca).
  • Improved reproducibility of the generated c_uamqp.c file (PR#144, Thanks to bluca).

1.2.6 (2020-02-13)

  • Fixed seg fault in tearing down a failed link with unsent pending messages.

1.2.5 (2019-12-10)

  • Fixed garbage collection of C objects to prevent crashing on uncontrolled shutdown.
  • Fixed missing event loop references passed into asyncio functions.
  • Fixed bug in noneffective flow control when large messages are received.
  • Demote link redirect logging from warning to info.

1.2.4 (2019-12-02)

  • Fixed bug in calculating send timeout.
  • Removed [ThreadPoolExecutor]{.title-ref} in [ConnectionAsync]{.title-ref}.
  • Added support for Python 3.8

1.2.3 (2019-10-07)

  • Fixed bug in dropping received messages at the moment when the connection just started working.
  • Fixed bug where underlying io type wasn't set to WebSocket when http_proxy was applied (PR#92, Thanks to skoop22).
  • Fixed bug in noneffective timeout when sending messages.
  • Added desired-capabilities for [ReceiveClient(Async)]{.title-ref} and [MessageReceiver(Async)]{.title-ref} as part of the AMQP protocol.
  • Added delivery-tag to [Message]{.title-ref} (azure-sdk-for-python issue #7336).
  • Added method [work]{.title-ref} to [MessageReceiver]{.title-ref} and [work_async]{.title-ref} to [MessageReceiverAsync]{.title-ref} responsible for updating link status.

1.2.2 (2019-07-02)

  • Made bug fix in asyncio.get_event_loop backwards-compatible for now by just printing a warning rather than raising an error. In the next major version bump we can disable entirely.

1.2.1 (2019-06-20)

  • Updated the implementation of [update_token()]{.title-ref} in [JWTTokenAuth]{.title-ref} and [JWTTokenAsync]{.title-ref} (issue #80).

1.2.0 (2019-04-16)

  • Fixed bug in batched messages missing application_properties (azure-event-hubs-python issue #97).
  • Fixed bug in datetime object parsing (issue #63).
  • Fixed bug in unexposed send/receive settle modes.
  • Fixed bug where retried messages were not added back to the send queue.
  • Fixed bug in using asyncio.get_event_loop.
  • Added type objects for AMQP Byte and uBytes types.
  • Added async locking around pending messages queue (PR#54, Thanks to zach-b)
  • Added WebSocket(AMQP over WebSocket) support (azure-sdk-for-python issue #5318).
  • Added new token class [JWTTokenAuth]{.title-ref} and [JWTTokenAsync]{.title-ref} to support OAuth.

1.1.0 (2018-11-12)

  • Support for Python 2.7 (>_<)/
  • Where ever a [TimeoutError]{.title-ref} is raised in Python 3.x, this will be replaced with a new ~uamqp.errors.ClientTimeout exception in Python 2.7.
  • A Python 2 [str]{.title-ref} object will be treated as [bytes]{.title-ref} in Python 3 and a Python 2 [unicode]{.title-ref} object will be treated like a Python 3 [str]{.title-ref}.
  • Added uamqp.compat module for handling Py 2 vs 3 imports and types (PR#46, Thanks to maxkrivich).
  • AMQP encoding of an integer type will now automatically failover into a Long type or a double type if the value is too large.

  • Improved support for promptly detecting invalid ATTACH handles and raising the appropriate error.

  • Added types for AMQPDescribed, AMQPInt and AMQPuInt for explicit handling of int and unsigned int encoding.

  • Added new error [errors.AMQPClientShutdown]{.title-ref} as a wrapper for [KeyboardInterrupt]{.title-ref} to better handle interrupt handling.

  • Added better handling of keyboard interrupts during C callbacks to better facilitate clean client shutdown.

  • Added additional handling of keyboard interrupt at the C level to clean up annoying warnings.

  • Added classmethod [Message.decode_from_bytes]{.title-ref} to create a message from AMQP wire-encoded data.

  • Added [Message.encode_message]{.title-ref} method to retrieve the AMQP wire-encoded byte representation of the current message.

  • Fixed behaviour of [Message.get_message_encoded_size()]{.title-ref} to return accurate size.

  • Added new optional [callback]{.title-ref} argument to [client.mgmt_request]{.title-ref} to allow for custom handling of different status codes.

  • Added new client methods [auth_complete()]{.title-ref} and [client_ready()]{.title-ref} to allow for more fine-tuned monitoring or the client opening stages.

  • Client message handler is now a public attribute [client.message_handler]{.title-ref} ([SendClient._message_sender]{.title-ref} and [ReceiveClient._message_receiver]{.title-ref} are now deprecated).

  • Added automatic encoding of [datetime.datetime]{.title-ref} objects into AMQP timestamp.

  • Better support for Source filters with optional [descriptor]{.title-ref} argument in [Source.set_filter()]{.title-ref} and new [Source.get_filter()]{.title-ref} method.

  • Fixed Session settings not being passed to CBS session.

  • Added support for a callback on receipt on a Link ATTACH frame. Can be supplied to a client through the [on_attach]{.title-ref} keyword argument.

  • Removed unsued message.SequenceBody class.

  • Exposed BatchMessage.size_offset property for batch size customization.

1.0.3 (2018-09-14)

  • Reduced CPU load during idle receive.
  • Updated Azure uAMQP C and Azure C Shared Utility dependencies.

1.0.2 (2018-09-05)

  • Fixed additional bugs in setting MessageProperties as string or bytes.
  • Removed auth locking to prevent locking issues on keyboard interrupt.

1.0.1 (2018-08-29)

  • Added some more checks in place to prevent lock hanging on a keybaord interrupt.
  • Fixed bug in setting MessageProperties.subject as string or bytes.
  • [uamqp.send_message]{.title-ref} now returns a list of [uamqp.constants.MessageState]{.title-ref} to indicate the success of each message sent.

1.0.0 (2018-08-20)

  • API settled.

  • Behaviour change When a SendClient or SendClientAsync is shutdown, any remaining pending messages (that is messages in the states [WaitingToBeSent]{.title-ref} and [WaitingForSendAck]{.title-ref}) will no longer be cleared, but can be retrieved from a new attribute [SendClient.pending_messages]{.title-ref} in order to be re-processed as needed.

  • Behaviour change The function [SendClient.queue_message]{.title-ref} now allows for queueing multiple messages at once by simply passing in additional message instances:

  • [send_client.queue_message(my_message)]{.title-ref}
  • [send_client.queue_message(message_1, message_2, message_3)]{.title-ref}
  • [send_client.queue_message(*my_message_list)]{.title-ref}
  • An authentication object will now raise a [ValueError]{.title-ref} if one attempts to use it for more than one connection.

  • Renamed internal [_async]{.title-ref} module to non-private [async_ops]{.title-ref} to allow for docs generation.

  • Reformatted logging for better performance.

  • Added additional logging.

0.2.1 (2018-08-06)

  • Fixed potential crashing in bindings for amqpvalue.
  • Fixed bindings fault in cbs PUT token complete callback.
  • Updated uAMQP-C.
  • Added additional auth and connection locking for thread/async safety.
  • Increased INFO level logging.
  • Removed platform deinitialization until it can be improved.
  • Added handling for a connection reaching a client-caused error state.

0.2.0 (2018-07-25)

  • Breaking change [MessageSender.send_async]{.title-ref} has been renamed to [MessageSender.send]{.title-ref}, and [MessageSenderAsync.send_async]{.title-ref} is now a coroutine.

  • Breaking change Removed [detach_received]{.title-ref} callback argument from MessageSender, MessageReceiver, MessageSenderAsync, and MessageReceiverAsync in favour of new [error_policy]{.title-ref} argument.

  • Added ErrorPolicy class to determine how the client should respond to both generic AMQP errors and custom or vendor-specific errors. A default policy will be used, but a custom policy can be added to any client by using a new [error_policy]{.title-ref} argument. Value must be either an instance or subclass of ErrorPolicy.

  • The [error_policy]{.title-ref} argument has also been added to MessageSender, MessageReceiver, Connection, and their async counterparts to allow for handling of link DETACH and connection CLOSE events.
  • The error policy passed to a SendClient determines the number of message send retry attempts. This replaces the previous [constants.MESSAGE_SEND_RETRIES]{.title-ref} value which is now deprecated.
  • Added new ErrorAction object to determine how a client should > respond to an error. It has three properties: [retry]{.title-ref} (a boolean to determine whether the error is retryable), [backoff]{.title-ref} (an integer to determine how long the client should wait before retrying, default is 0) and [increment_retries]{.title-ref} (a boolean to determine whether the error should count against the maximum retry attempts, default is [True]{.title-ref}). Currently [backoff]{.title-ref} and [increment_retries]{.title-ref} are only considered for message send failures.
  • Added [VendorConnectionClose]{.title-ref} and [VendorLinkDetach]{.title-ref} exceptions for non-standard (unrecognized) connection/link errors.
  • Added support for HTTP proxy configuration.

  • Added support for running async clients synchronously.

  • Added keep-alive support for connection - this is a background thread for a synchronous client, and a background async function for an async client. The keep-alive feature is disabled by default, to enable, set the [keep_alive_interval]{.title-ref} argument on the client to an integer representing the number of seconds between connection pings.

  • Added support for catching a Connection CLOSE event.

  • Added support for [Connection.sleep]{.title-ref} and [ConnectionAsync.sleep_async]{.title-ref} to pause the connection.

  • Added support for surfacing message disposition delivery-state (with error information).

  • Added [constants.ErrorCodes]{.title-ref} enum to map standard AMQP error conditions. This replaces the previous [constants.ERROR_CONNECTION_REDIRECT]{.title-ref} and [constants.ERROR_LINK_REDIRECT]{.title-ref} which are now both deprecated.

  • Added new super error [AMQPError]{.title-ref} from which all exceptions inherit.

  • Added new [MessageHandlerError]{.title-ref} exception, a subclass of [AMQPConnectionError]{.title-ref}, for Senders/Receivers that enter an indeterminate error state.

  • [MessageException]{.title-ref} is now a subclass of [MessageResponse]{.title-ref}.

  • Added [ClientMessageError]{.title-ref} exception, a subclass of [MessageException]{.title-ref} for send errors raised client-side.

  • Catching Link DETACH event will now work regardless of whether service returns delivery-state.

  • Fixed bug where received messages attempting to settle on a detached link crashed the client.

  • Fixed bug in amqp C DescribedValue.

  • Fixed bug where client crashed on deallocating failed management operation.

0.1.1 (2018-07-14)

  • Removed circular dependency in Python 3.4 with types.py/utils.py
  • When a header properties is not set, returns [None]{.title-ref} rather than raising ValueError.
  • Fixed bug in receiving messages with application properties.

0.1.0 (2018-07-05)

  • Fixed bug in error handling for CBS auth to invalid hostname.
  • Changed C error logging to debug level.
  • Bumped uAMQP C version to 1.2.7
  • Fixed memory leaks and deallocation bugs with Properties and Annotations.

0.1.0rc2 (2018-07-02)

  • Breaking change Submodule [async]{.title-ref} has been renamed to the internal [_async]{.title-ref}. All asynchronous classes in the submodule can now be accessed from uamqp or uamqp.authentication directly.

  • Breaking change Anything returned by a callback supplied to receive messages will now be ignored.

  • Breaking change Changed message state enum values:

  • [Complete -> SendComplete]{.title-ref}
  • [Failed -> SendFailed]{.title-ref}
  • [WaitingForAck -> WaitingForSendAck]{.title-ref}
  • Added new message state enum values:
  • [ReceivedUnsettled]{.title-ref}
  • [ReceivedSettled]{.title-ref}
  • Breaking change Changes to message settlement exceptions:
  • Combined the [AbandonMessage]{.title-ref} and [DeferMessage]{.title-ref} exceptions as [MessageModified]{.title-ref} to be in keeping with the AMQP specification.
  • Renamed [AcceptMessage]{.title-ref} to [MessageAccepted]{.title-ref}.
  • Renamed [RejectMessage]{.title-ref} to [MessageRejected]{.title-ref} which now takes [condition]{.title-ref} and [description]{.title-ref} arguments rather than [message]{.title-ref}.
  • Added [errors.LinkDetach]{.title-ref} exception as new subclass of [AMQPConnectionError]{.title-ref} as a wrapped for data in a Link DETACH dispostition.

  • Added [errors.LinkRedirect]{.title-ref} as a specific subclass of [LinkDetach]{.title-ref} to decode the specific redirect fields of a Link Redirect response.

  • Added [errors.MessageAlreadySettled]{.title-ref} exception for operations performed on a received message that has already returned a receipt dispostition.

  • Added [errors.MessageReleased]{.title-ref} exception.

  • Added [errors.ErrorResponse]{.title-ref} exception.

  • A received Message can now be explicitly settled through a set of new functions on the message:

  • [Message.accept()]{.title-ref} > - [Message.reject(condition:str, description:str)]{.title-ref}
  • [Message.release()]{.title-ref} > - [Message.modify(failed:bool, deliverable:bool, > annotations:dict)]{.title-ref}
  • Added explicit [auto_complete]{.title-ref} argument to [ReceiveClient]{.title-ref} and [ReceiveClientAsync]{.title-ref}. If [auto_complete]{.title-ref} is set to [False]{.title-ref} then all messages must be explicitly "accepted" or "rejected" by the user otherwise they will timeout and be released. The default is [True]{.title-ref}, which is the exiting behaviour for each receive mechanism:
  • Received messages processed by callback ([ReceiveClient.receive_messages()]{.title-ref}) will be automatically "accepted" if no explicit response has been set on completion of the callback.
  • Received messages processed by batch ([ReceiveClient.receive_message_batch()]{.title-ref}) will by automatically "accepted" before being returned to the user.
  • Received messages processed by iterator ([ReceiveClient.receive_message_iter()]{.title-ref}) will by automatically "accepted" if no explicit response has been set once the generator is incremented.
  • Added new methods to clients and connections to allow to redirect to an alternative endpoint when a LinkRedirect exception is raised. The client redirect helper cannot be used for clients that use a shared connection - the clients must be closed before the connection can be redirected. New credentials must be supplied for the new endpoint. The new methods are:
  • [uamqp.Connection.redirect(redirect_info, auth)]{.title-ref}
  • [uamqp.async.ConnectionAsync.redirect_async(redirect_info, auth)]{.title-ref}
  • [uamqp.SendClient.redirect(redirect_info, auth)]{.title-ref}
  • [uamqp.ReceiveClient.redirect(redirect_info, auth)]{.title-ref}
  • [uamqp.async.SendClientAsync.redirect_async(redirect_info, auth)]{.title-ref}
  • [uamqp.async.ReceiveClientAsync.redirect_async(redirect_info, auth)]{.title-ref}
  • Added [on_detach_received]{.title-ref} argument to [Sender]{.title-ref} and [Receiver]{.title-ref} classes to pass in callback to run on Link DETACH.

  • Removed automatic char encoding for strings of length 1, and added [types.AMQPChar]{.title-ref} for explicit encoding.

  • Bumped uAMQP C version to 1.2.5

  • Bumped Azure C Shared Utility to 1.1.5

  • Fixed memory leaks in MessageProperties, MessageHeader and message annotations.

0.1.0rc1 (2018-05-29)

  • Fixed import error in async receiver.
  • Exposed sender/receiver destroy function.
  • Moved receiver.open on_message_received argument to constructor.
  • Removed sasl module and moved internal classes into authentication module.
  • Added encoding parameter everywhere where strings are encoded.
  • Started documentation.
  • Updated uAMQP-C to 1.2.4 and C Shared Utility to 1.1.4 (includes fix for issue #12).
  • Fixed return type of MgmtOperation.execute - now returns ~uamqp.message.Message.
  • Made AMQP connection/session/sender/receiver types in a client overridable.
  • Added debug trace to management operations.
  • Fixed error in management callback on failed operation.
  • Default AMQP encoding of bytes is now a String type and a bytearray is a Binary type.
  • Added AMQP Array type and fixed Long type range validation.
  • Added [header]{.title-ref} argument to Message and BatchMessage for setting a MessageHeader.
  • Fixed MessageHeader attribute setters.

0.1.0b5 (2018-04-27)

  • Added Certifi as a depedency to make OpenSSL certs dynamic.
  • Added [verify]{.title-ref} option to authentication classes to allow setting custom certificate path (for Linux and OSX).

0.1.0b4 (2018-04-19)

  • Fixed memory leak in async receive.
  • Removed close_on_done argument from client receive functions.
  • Added receive iterator to synchronous client.
  • Made async iter receive compatible with Python 3.5.

0.1.0b3 (2018-04-14)

  • Fixed SSL errors in manylinux wheels.
  • Fixed message annoations attribute.
  • Fixed bugs in batched messages and sending batched messages.
  • Fixed conflicting receiver link ID.
  • Fixed hanging receiver by removing queue max size in sync clients.
  • Added support for sending messages with None and empty bodies.

0.1.0b2 (2018-04-06)

  • Added message send retry.
  • Added timeouts and better error handling for management requests.
  • Improved connection and auth error handling and error messages.
  • Fixed message annotations type.
  • SendClient.send_all_messages() now returns a list of message send statuses.
  • Fixed OpenSSL platform being initialized multiple times.
  • Fixed auto-refresh of SAS tokens.
  • Altered [receive_batch]{.title-ref} behaviour to return messages as soon as they're available.
  • Parameter [batch_size]{.title-ref} in [receive_batch]{.title-ref} renamed to [max_batch_size]{.title-ref}.
  • Fixed message [application_properties]{.title-ref} decode error.
  • Removed MacOS dependency on OpenSSL and libuuid.

0.1.0b1 (2018-03-24)

  • Added management request support.
  • Fixed message-less C operation ValueError.
  • Store message metadata in Python rather than C.
  • Refactored Send and Receive clients to create a generic parent AMQPClient.
  • Fixed None receive timestamp bug.
  • Removed async iterator queue due to instabilities - all callbacks are now synchronous.

0.1.0a3 (2018-03-19)

  • Added support for asynchronous message receive by iterator or batch.
  • Removed synchronous receive iterator, and replaced with synchronous batch receive.
  • Added sync and async context managers for Send and Receive Clients.
  • Fixed token instability and added put token retry policy.
  • Exposed Link ATTACH properties.
  • A connection now has a single $cbs session that can be reused between clients.
  • Added C debug trace logging to the Python logger ('uamqp.c_uamqp')

0.1.0a2 (2018-03-12)

  • Exposed OPEN performative properties for connection telemetry.
  • Exposed setters for message.message_annotations and message.application_properties.
  • Made adjustments to connection open and close to facilitate sharing a connection object between send/receive clients.
  • Support for username/password embedded in connection URI.
  • Clients can now optionally leave connection/session/link open for re-use.
  • Updated build process and installation instructions.
  • Various bug fixes to increase stability.

0.1.0a1 (2018-03-04)

  • Initial release

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

uamqp-1.6.11.tar.gz (4.6 MB view details)

Uploaded Source

Built Distributions

uamqp-1.6.11-cp313-cp313-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.13 Windows x86-64

uamqp-1.6.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp313-cp313-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

uamqp-1.6.11-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12 Windows x86-64

uamqp-1.6.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp312-cp312-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

uamqp-1.6.11-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

uamqp-1.6.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

uamqp-1.6.11-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

uamqp-1.6.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

uamqp-1.6.11-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9 Windows x86-64

uamqp-1.6.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

uamqp-1.6.11-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8 Windows x86-64

uamqp-1.6.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

uamqp-1.6.11-cp38-cp38-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file uamqp-1.6.11.tar.gz.

File metadata

  • Download URL: uamqp-1.6.11.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11.tar.gz
Algorithm Hash digest
SHA256 6bab2fb249cb2ca312795093747227de3f09648f8dad77f432b49a45e5bc403d
MD5 da992d36bb34b4110ba6e8fb91a8768f
BLAKE2b-256 2e99e5fbdd1964f2b7f04fcfacd9c8252a998725af2c2b186d5436ff0499a886

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6f155ce0ed6f0aabd182205d295742714be005c1079b32a5cdeed1c4511c8e89
MD5 6dfe9b7f68861b9c2fb201d1ecffa350
BLAKE2b-256 1303adf1b15a05d3558a5dba15c1813bf6bc84e37c19500a578a8062866ee019

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d1b77c5fd21271176658a90b3a2a6b99f9ec7dcb9d435e608e231fe62a74440
MD5 5137425e0ad81d7a44db98dbb1354fe5
BLAKE2b-256 9ddf84419ba5553502d2a82666c86f83c2afd63488c00826493c1c36edc702ed

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9672e1a49cf3c669c4ed664a9d487de8c8361faf0ba5475c5315f2ef379a2fea
MD5 10197ee1b76fc759804af3a70c672963
BLAKE2b-256 fdc8796b149cc12ce77e0c36efabcdab5f29483f4fcf4fbfb9e5862967ad6210

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 71a7385ff98b46ee6726be93e34785e473e78b49e513519515420384bbdb37c8
MD5 2f5cb3cb76a07a9d6102b60dd8f66bc3
BLAKE2b-256 1afd2ee4cbe2c727f8b263560ee49558de8103f1f6c7d0f32bd196e5b4cb0bdf

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd1ef9bf90e527a13581cd9b9755d75c1ae70985e108dbdaa532c1472c9dca2e
MD5 81504efc821960085e2a856b1d3e95cf
BLAKE2b-256 a270160c1c2be8833f7f824e88aa3761e6b8d6feefeb7a81764fdeabc58ea689

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 db6dd3feb163bcda69ced8453726c2b2110b99357e46e4ac09c496128438c954
MD5 b6e3464197080b11c4ca1011427759c5
BLAKE2b-256 f611dfa0f24813b5b5dedf86f3ca97c66d6e2b1df2b2e3cb09b537cef1697b98

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9b4aef57893233f3b0b6b90677964357bc845f510d8794038622095a745ab47b
MD5 435f7749f15665d77b08599705254525
BLAKE2b-256 5c2024c4108c518f06a8f5a911c2c9a643abcd1c641ed6578c6b2d6dc994b1ef

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb36875dceabc0bf7ca0523df03d120a8b489d378e5cf152afb10f693f48574c
MD5 1251b775a05a866712a34838bf585cac
BLAKE2b-256 1e55048b333fd1368331ae87b422fa180bdab38077623992e37dbed37d2fe8fe

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4bc48997ee1f3717edb5bb3713cf2b8f9b7641a8167194a57782a8b2f26a7e2a
MD5 a6843a021cc357ea8a4c8e66607d5b3e
BLAKE2b-256 9ceb9d01c878c5be6f10e1763bfe209a38481ecf8801434f3fa315ba2ab64164

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bebe8c97f5896cf86db9682bb231fe844d65519ad2ba241f28737d6eef00917c
MD5 ad01088d25277ba2c3cee5cc09eeede4
BLAKE2b-256 8432358d780c4c3f2b4add326aebaae1e9b88c16098660e33c2766b6a9659157

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b74d2bde953932d011076f8d1cc43e8ddc3fede653a519b261e0b0f1d1e2dd43
MD5 01a10f87685d26f0c2062d9f649b9740
BLAKE2b-256 32a2c452924b42161e44eadcd04c7058cbd30afa42aa023d24b089de7966898c

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c0fd7706b7c6afbd1d806c568749a114cc1bac2b25a0bc9f227e65ca7570029
MD5 9325509f0689e477734708cfb19c0a07
BLAKE2b-256 a6d5b506da61d021b1db88a3a6f00ab8944fa21ed4ddf80f5c3a55f1ab5cc41c

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 806c9f7e180ecb2835669272478eb8191815829ed416cbfd73e3744fa3ea012c
MD5 198cbed15b289d4395fdfcadf163a73d
BLAKE2b-256 8e3aa4000f7ff2d13f8a05fb1cd231ca6e1a17851547450fafe0feab75f00e49

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53ee78a224d4a095a4fa35efcd8c8a5c51339abcb37a2aefad2e31cb92ba280b
MD5 a405f05a77ceae562093e1502ad13444
BLAKE2b-256 75a332b9404a958b7eb7aa0b3b22fb1c5a95a923ae39476cea6fc6c7e89b09db

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dc5644acf6b6cb722be3b896bd5dc576c0eebe43c60052466ab4c4b8af040b1e
MD5 4fde93aa088677a5736b624180bc6c81
BLAKE2b-256 c68518dc80325102b124a8086fcd97078efc7c505d881f42ca795ec1383f00d1

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: uamqp-1.6.11-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: RestSharp/106.13.0.0

File hashes

Hashes for uamqp-1.6.11-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 5e027aa5a785441598ff51353cf6752c426947b33acc84e9e169fdfac0017ec9
MD5 bf27f4de2a98b43300f864f12cf2009b
BLAKE2b-256 a234400e95aa58b3f7e5d3ec6179a5e9fb33758c388b55db92e2d67a7a036314

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e507a4f1a9e3ef64675f83cfb800b94746934a4c6f3e6b57aa0e1df9cd3697a2
MD5 a8ae001fc6fc0a5e3bb8cb6fb433ee81
BLAKE2b-256 24c55f874c07456f8bd22b4bf69a71de00206e05437aee136eb9eba200505f7e

See more details on using hashes here.

File details

Details for the file uamqp-1.6.11-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for uamqp-1.6.11-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5b05b3a6f4f7f74ccd871eb9cda2ccc95e9b50556dd232ff951d6dbc53000bed
MD5 b3b61ddd412912a12eabc2a55cc0197e
BLAKE2b-256 6761b0451f14d5c5d5b02ca47388efe2dcd561cf199079d07eb57edee3e1e2e8

See more details on using hashes here.

Supported by

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