summaryrefslogtreecommitdiff
path: root/amqp/serialization.py
diff options
context:
space:
mode:
Diffstat (limited to 'amqp/serialization.py')
-rw-r--r--amqp/serialization.py18
1 files changed, 5 insertions, 13 deletions
diff --git a/amqp/serialization.py b/amqp/serialization.py
index 6a74702..528d0b7 100644
--- a/amqp/serialization.py
+++ b/amqp/serialization.py
@@ -25,6 +25,7 @@ import sys
from datetime import datetime
from decimal import Decimal
+from io import BytesIO
from struct import pack, unpack
from time import mktime
@@ -39,19 +40,6 @@ if IS_PY3K:
else:
byte = chr
-try:
- from io import BytesIO
-except ImportError: # Py2.5
- try:
- from cStringIO import StringIO as BytesIO # noqa
- except ImportError:
- from StringIO import StringIO as BytesIO # noqa
-
-try:
- bytes
-except NameError:
- # Python 2.5 and lower
- bytes = str
ILLEGAL_TABLE_TYPE_WITH_KEY = """\
Table type {0!r} for key {1!r} not handled by amqp. [value: {2!r}]
@@ -174,6 +162,8 @@ class AMQPReader(object):
val = self.read_bit()
elif ftype == 100:
val = self.read_float()
+ elif ftype == 86: # 'V'
+ val = None
else:
raise FrameSyntaxError(
'Unknown value in table: {0!r} ({1!r})'.format(
@@ -357,6 +347,8 @@ class AMQPWriter(object):
elif isinstance(v, (list, tuple)):
self.write(b'A')
self.write_array(v)
+ elif v is None:
+ self.write(b'V')
else:
err = (ILLEGAL_TABLE_TYPE_WITH_KEY.format(type(v), k, v) if k
else ILLEGAL_TABLE_TYPE.format(type(v), v))