AMQP Types

These tables summarize the various AMQP types and their Python API equivalents as used in the API.


Scalar Types


AMQP Type

Proton C API Type

Proton Python API Type

Description

null

PN_NONE

None

Indicates an empty value.

boolean

PN_BOOL

bool

Represents a true or false value.

ubyte

PN_UBYTE

proton.ubyte

Integer in the range \(0\) to \(2^8 - 1\) inclusive.

byte

PN_BYTE

proton.byte

Integer in the range \(-(2^7)\) to \(2^7 - 1\) inclusive.

ushort

PN_USHORT

proton.ushort

Integer in the range \(0\) to \(2^{16} - 1\) inclusive.

short

PN_SHORT

proton.short

Integer in the range \(-(2^{15})\) to \(2^{15} - 1\) inclusive.

uint

PN_UINT

proton.uint

Integer in the range \(0\) to \(2^{32} - 1\) inclusive.

int

PN_INT

proton.int32

Integer in the range \(-(2^{31})\) to \(2^{31} - 1\) inclusive.

char

PN_CHAR

proton.char

A single Unicode character.

ulong

PN_ULONG

proton.ulong

Integer in the range \(0\) to \(2^{64} - 1\) inclusive.

long

PN_LONG

int or long

Integer in the range \(-(2^{63})\) to \(2^{63} - 1\) inclusive.

timestamp

PN_TIMESTAMP

proton.timestamp

An absolute point in time with millisecond precision.

float

PN_FLOAT

proton.float32

32-bit floating point number (IEEE 754-2008 binary32).

double

PN_DOUBLE

double

64-bit floating point number (IEEE 754-2008 binary64).

decimal32

PN_DECIMAL32

proton.decimal32

32-bit decimal number (IEEE 754-2008 decimal32).

decimal64

PN_DECIMAL64

proton.decimal64

64-bit decimal number (IEEE 754-2008 decimal64).

decimal128

PN_DECIMAL128

proton.decimal128

128-bit decimal number (IEEE 754-2008 decimal128).

uuid

PN_UUID

uuid.UUID

A universally unique identifier as defined by RFC-4122 section 4.1.2.

binary

PN_BINARY

bytes

A sequence of octets.

string

PN_STRING

str

A sequence of Unicode characters.

symbol

PN_SYMBOL

proton.symbol

Symbolic values from a constrained domain.


Compound Types


AMQP Type

Proton C API Type

Proton Python API Type

Description

array

PN_ARRAY

proton.Array

A sequence of values of a single type.

list

PN_LIST

list

A sequence of polymorphic values.

map

PN_MAP

dict

A polymorphic mapping from distinct keys to values.


Specialized Types

The following classes implement specialized or restricted types to help enforce type restrictions in the AMQP specification.


Proton Python API Type

Description

Where used in API

proton.SymbolList

A list that only accepts proton.symbol elements. However, will silently convert strings to symbols.

proton.Connection.desired_capabilities proton.Connection.offered_capabilities

proton.PropertyDict

A dict that only accppts proton.symbol keys. However, will silently convert strings to symbols.

proton.Connection.properties

proton.AnnotationDict

A dict that only accppts proton.symbol or proton.ulong keys. However, will silently convert strings to symbols.

proton.Message.annotations proton.Message.instructions


These types would typically be used where the the above attributes are set. They will silently convert strings to symbols, but will raise an error if a not-allowed type is used. For example:

>>> from proton import symbol, ulong, Message, AnnotationDict
>>> msg = Message()
>>> msg.annotations = AnnotationDict({'one':1, symbol('two'):2, ulong(3):'three'})
>>> msg.annotations
AnnotationDict({symbol('one'): 1, symbol('two'): 2, ulong(3): 'three'})
>>> m.instructions = AnnotationDict({'one':1, symbol('two'):2, ulong(3):'three', 4:'four'})
  ...
KeyError: "invalid non-symbol key: <class 'int'>: 4"
>>> m.instructions
>>>