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
>>>