You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jd...@apache.org on 2023/04/10 21:45:07 UTC

[qpid-python] branch main updated (d0050c6 -> 9651001)

This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git


    from d0050c6  QPID-8631: make the `qpid-python-test` script Python 3 compatible (#14)
     new c3f3a05  QPID-8631: `new.module` -> `types.ModuleType`
     new 36eec79  QPID-8631: `rfc822.unquote` -> `email.utils.unquote`
     new 2bc6123  QPID-8631: `sgmllib.SGMLParser` -> `HTMLParser`
     new 045e904  QPID-8631: fallback import for `cStringIO.StringIO` or `io.StringIO`
     new 84abc18  QPID-8631: fallback import for `cPickle` or `pickle`
     new 9651001  QPID-8631: enable `absolute_import` from `__future__` and fix relative imports

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 examples/api/statistics.py                    |  1 +
 examples/reservations/common.py               |  1 +
 mllib/__init__.py                             |  9 +++++--
 mllib/dom.py                                  |  1 +
 mllib/parsers.py                              | 17 +++++++-----
 mllib/transforms.py                           |  6 ++++-
 qpid-python-test                              |  1 +
 qpid/__init__.py                              |  3 ++-
 qpid/client.py                                | 21 +++++++--------
 qpid/codec.py                                 | 11 +++++---
 qpid/codec010.py                              |  7 ++---
 qpid/compat.py                                |  1 +
 qpid/concurrency.py                           |  4 ++-
 qpid/connection.py                            | 20 ++++++++-------
 qpid/connection08.py                          | 15 +++++++----
 qpid/datatypes.py                             |  3 ++-
 qpid/debug.py                                 |  1 +
 qpid/delegate.py                              |  3 ++-
 qpid/delegates.py                             | 12 +++++----
 qpid/disp.py                                  |  1 +
 qpid/framer.py                                |  5 ++--
 qpid/framing.py                               |  5 ++--
 qpid/generator.py                             |  3 ++-
 qpid/lexer.py                                 |  1 +
 qpid/log.py                                   |  1 +
 qpid/management.py                            | 10 +++++---
 qpid/managementdata.py                        |  3 ++-
 qpid/message.py                               |  3 ++-
 qpid/messaging/__init__.py                    |  1 +
 qpid/messaging/address.py                     |  1 +
 qpid/messaging/driver.py                      |  1 +
 qpid/messaging/endpoints.py                   |  3 ++-
 qpid/messaging/message.py                     |  1 +
 qpid/messaging/transports.py                  |  1 +
 qpid/messaging/util.py                        |  1 +
 qpid/mimetype.py                              |  9 ++++---
 qpid/ops.py                                   | 11 +++++---
 qpid/packer.py                                |  1 +
 qpid/peer.py                                  | 16 +++++++-----
 qpid/queue.py                                 |  8 ++++--
 qpid/reference.py                             |  3 ++-
 qpid/sasl.py                                  |  1 +
 qpid/saslmech/amqplain.py                     |  3 ++-
 qpid/saslmech/anonymous.py                    |  3 ++-
 qpid/saslmech/cram_md5.py                     |  3 ++-
 qpid/saslmech/cram_md5_hex.py                 |  3 ++-
 qpid/saslmech/external.py                     |  3 ++-
 qpid/saslmech/finder.py                       |  1 +
 qpid/saslmech/plain.py                        |  3 ++-
 qpid/saslmech/scram.py                        |  3 ++-
 qpid/saslmech/scram_sha_1.py                  |  3 ++-
 qpid/saslmech/scram_sha_256.py                |  3 ++-
 qpid/selector.py                              |  3 ++-
 qpid/session.py                               | 17 ++++++------
 qpid/spec08.py                                |  7 ++---
 qpid/specs_config.py                          |  1 +
 qpid/testlib.py                               |  6 ++++-
 qpid/tests/__init__.py                        |  1 +
 qpid/tests/codec.py                           |  6 ++++-
 qpid/tests/codec010.py                        |  1 +
 qpid/tests/connection.py                      |  1 +
 qpid/tests/datatypes.py                       |  1 +
 qpid/tests/framing.py                         |  1 +
 qpid/tests/messaging/__init__.py              |  3 ++-
 qpid/tests/messaging/address.py               |  1 +
 qpid/tests/messaging/endpoints.py             |  1 +
 qpid/tests/messaging/implementation.py        |  1 +
 qpid/tests/messaging/message.py               |  1 +
 qpid/tests/messaging/selector.py              |  1 +
 qpid/tests/mimetype.py                        |  3 ++-
 qpid/tests/parser.py                          |  1 +
 qpid/tests/queue.py                           |  1 +
 qpid/tests/saslmech/finder.py                 |  5 ++--
 qpid/tests/saslmech/my_sasl.py                |  1 +
 qpid/tests/saslmech/my_sasl2.py               |  1 +
 qpid/tests/spec010.py                         |  1 +
 qpid/tests/util.py                            |  1 +
 qpid/util.py                                  |  1 +
 qpid_tests/broker_0_10/__init__.py            | 37 ++++++++++++++-------------
 qpid_tests/broker_0_10/alternate_exchange.py  |  1 +
 qpid_tests/broker_0_10/broker.py              |  1 +
 qpid_tests/broker_0_10/dtx.py                 |  1 +
 qpid_tests/broker_0_10/example.py             |  1 +
 qpid_tests/broker_0_10/exchange.py            |  7 ++++-
 qpid_tests/broker_0_10/extensions.py          |  1 +
 qpid_tests/broker_0_10/lvq.py                 |  1 +
 qpid_tests/broker_0_10/management.py          |  1 +
 qpid_tests/broker_0_10/message.py             |  1 +
 qpid_tests/broker_0_10/msg_groups.py          |  1 +
 qpid_tests/broker_0_10/new_api.py             |  1 +
 qpid_tests/broker_0_10/persistence.py         |  1 +
 qpid_tests/broker_0_10/priority.py            |  1 +
 qpid_tests/broker_0_10/qmf_events.py          |  1 +
 qpid_tests/broker_0_10/query.py               |  1 +
 qpid_tests/broker_0_10/queue.py               |  1 +
 qpid_tests/broker_0_10/stats.py               |  1 +
 qpid_tests/broker_0_10/threshold.py           |  1 +
 qpid_tests/broker_0_10/tx.py                  |  1 +
 qpid_tests/broker_0_8/__init__.py             |  3 ++-
 qpid_tests/broker_0_8/basic.py                |  1 +
 qpid_tests/broker_0_8/broker.py               |  1 +
 qpid_tests/broker_0_8/example.py              |  1 +
 qpid_tests/broker_0_8/exchange.py             |  7 ++++-
 qpid_tests/broker_0_8/queue.py                |  1 +
 qpid_tests/broker_0_8/testlib.py              |  6 ++++-
 qpid_tests/broker_0_8/tx.py                   |  1 +
 qpid_tests/broker_0_9/__init__.py             |  3 ++-
 qpid_tests/broker_0_9/echo.py                 |  1 +
 qpid_tests/broker_0_9/messageheader.py        |  1 +
 qpid_tests/broker_0_9/query.py                |  1 +
 qpid_tests/broker_0_9/queue.py                |  1 +
 qpid_tests/broker_1_0/general.py              |  1 +
 qpid_tests/broker_1_0/legacy_exchanges.py     |  1 +
 qpid_tests/broker_1_0/selector.py             |  1 +
 qpid_tests/broker_1_0/translation.py          |  1 +
 qpid_tests/broker_1_0/tx.py                   |  1 +
 qpid_tests/client/client-api-example-tests.py |  1 +
 setup.py                                      |  1 +
 118 files changed, 295 insertions(+), 125 deletions(-)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 04/06: QPID-8631: fallback import for `cStringIO.StringIO` or `io.StringIO`

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit 045e90408b4d3416e1ae4af893c4b4426d9e98a5
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Apr 8 17:40:19 2023 +0200

    QPID-8631: fallback import for `cStringIO.StringIO` or `io.StringIO`
---
 mllib/__init__.py    | 5 ++++-
 mllib/transforms.py  | 5 ++++-
 qpid/codec.py        | 5 ++++-
 qpid/connection08.py | 5 ++++-
 qpid/management.py   | 5 ++++-
 qpid/peer.py         | 5 ++++-
 qpid/tests/codec.py  | 5 ++++-
 7 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/mllib/__init__.py b/mllib/__init__.py
index 7d0ba99..f41ebe6 100644
--- a/mllib/__init__.py
+++ b/mllib/__init__.py
@@ -26,7 +26,10 @@ import os, dom, transforms, parsers, sys
 import xml.sax, types
 from xml.sax.handler import ErrorHandler
 from xml.sax.xmlreader import InputSource
-from cStringIO import StringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from io import StringIO
 
 def transform(node, *args):
   result = node
diff --git a/mllib/transforms.py b/mllib/transforms.py
index dc258cc..397e25c 100644
--- a/mllib/transforms.py
+++ b/mllib/transforms.py
@@ -22,7 +22,10 @@ Useful transforms for dom objects.
 """
 
 import mllib.dom
-from cStringIO import StringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from io import StringIO
 
 class Visitor:
 
diff --git a/qpid/codec.py b/qpid/codec.py
index 8f9d374..78ea0d0 100644
--- a/qpid/codec.py
+++ b/qpid/codec.py
@@ -27,7 +27,10 @@ The unit test for this module is located in tests/codec.py
 """
 
 import re, qpid, spec08, os
-from cStringIO import StringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from io import StringIO
 from struct import *
 from reference import ReferenceId
 from logging import getLogger
diff --git a/qpid/connection08.py b/qpid/connection08.py
index 23f75a2..d0faa00 100644
--- a/qpid/connection08.py
+++ b/qpid/connection08.py
@@ -24,7 +24,10 @@ server, or even a proxy implementation.
 """
 
 import socket, codec, errno, qpid
-from cStringIO import StringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from io import StringIO
 from codec import EOF
 from compat import SHUT_RDWR
 from exceptions import VersionError
diff --git a/qpid/management.py b/qpid/management.py
index 2e76436..cd8e6b5 100644
--- a/qpid/management.py
+++ b/qpid/management.py
@@ -31,7 +31,10 @@ import socket
 from threading    import Thread
 from datatypes    import Message, RangedSet
 from time         import time
-from cStringIO    import StringIO
+try:
+  from cStringIO    import StringIO
+except ImportError:
+  from io import StringIO
 from codec010     import StringCodec as Codec
 from threading    import Lock, Condition
 
diff --git a/qpid/peer.py b/qpid/peer.py
index fddddfd..b6de3ce 100644
--- a/qpid/peer.py
+++ b/qpid/peer.py
@@ -29,7 +29,10 @@ from connection08 import EOF, Method, Header, Body, Request, Response, VersionEr
 from message import Message
 from queue import Queue, Closed as QueueClosed
 from content import Content
-from cStringIO import StringIO
+try:
+  from cStringIO import StringIO
+except ImportError:
+  from io import StringIO
 from time import time
 from exceptions import Closed, Timeout, ContentError
 from logging import getLogger
diff --git a/qpid/tests/codec.py b/qpid/tests/codec.py
index 1c68cfe..e18b01b 100644
--- a/qpid/tests/codec.py
+++ b/qpid/tests/codec.py
@@ -22,7 +22,10 @@ from __future__ import print_function
 import unittest
 from qpid.codec import Codec
 from qpid.spec08 import load
-from cStringIO import StringIO
+try:
+    from cStringIO import StringIO
+except ImportError:
+    from io import StringIO
 from qpid.reference import ReferenceId
 
 __doc__ = """


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 01/06: QPID-8631: `new.module` -> `types.ModuleType`

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit c3f3a058350ef3ac66f27ce16f4085eee4c7bb41
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Apr 8 17:45:16 2023 +0200

    QPID-8631: `new.module` -> `types.ModuleType`
---
 qpid/spec08.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/qpid/spec08.py b/qpid/spec08.py
index d027720..cc86d26 100644
--- a/qpid/spec08.py
+++ b/qpid/spec08.py
@@ -30,7 +30,7 @@ situations.
 """
 
 from __future__ import print_function
-import re, new, mllib, qpid
+import re, types, mllib, qpid
 from util import fill
 
 class SpecContainer:
@@ -122,7 +122,7 @@ class Spec(Metadata):
     return qpid.Struct(type, *args, **kwargs)
 
   def define_module(self, name, doc = None):
-    module = new.module(name, doc)
+    module = types.ModuleType(name, doc)
     module.__file__ = self.file
     for c in self.classes:
       cls = c.define_class(c.name)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 03/06: QPID-8631: `sgmllib.SGMLParser` -> `HTMLParser`

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit 2bc6123f8e80c21c7e765d3deb7528be1b67ff9a
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Apr 8 18:07:40 2023 +0200

    QPID-8631: `sgmllib.SGMLParser` -> `HTMLParser`
---
 mllib/parsers.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/mllib/parsers.py b/mllib/parsers.py
index 3e7cc10..48573f2 100644
--- a/mllib/parsers.py
+++ b/mllib/parsers.py
@@ -21,7 +21,12 @@
 Parsers for SGML and XML to dom.
 """
 
-import sgmllib, xml.sax.handler
+from __future__ import absolute_import
+try:
+  from HTMLParser import HTMLParser
+except ImportError:
+  from html.parser import HTMLParser
+import xml.sax.handler
 from dom import *
 
 class Parser:
@@ -73,10 +78,10 @@ class Parser:
       self.node = self.node.parent
 
 
-class SGMLParser(sgmllib.SGMLParser):
+class SGMLParser(HTMLParser):
 
-  def __init__(self, entitydefs = None):
-    sgmllib.SGMLParser.__init__(self)
+  def __init__(self, entitydefs=None):
+    super(SGMLParser, self).__init__()
     if entitydefs == None:
       self.entitydefs = {}
     else:
@@ -102,7 +107,7 @@ class SGMLParser(sgmllib.SGMLParser):
     self.parser.end(name)
 
   def close(self):
-    sgmllib.SGMLParser.close(self)
+    super(SGMLParser, self).close()
     self.parser.balance()
     assert self.parser.node == self.parser.tree
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 06/06: QPID-8631: enable `absolute_import` from `__future__` and fix relative imports

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit 9651001c6fe0b65e538a96e27df36582b7ccb004
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Mon Apr 10 12:48:14 2023 +0200

    QPID-8631: enable `absolute_import` from `__future__` and fix relative imports
    
    ```
    python-modernize -wnf libmodernize.fixes.fix_import
    ```
---
 examples/api/statistics.py                    |  1 +
 examples/reservations/common.py               |  1 +
 mllib/__init__.py                             |  4 ++-
 mllib/dom.py                                  |  1 +
 mllib/parsers.py                              |  2 +-
 mllib/transforms.py                           |  1 +
 qpid-python-test                              |  1 +
 qpid/__init__.py                              |  3 ++-
 qpid/client.py                                | 21 +++++++--------
 qpid/codec.py                                 |  6 +++--
 qpid/codec010.py                              |  7 ++---
 qpid/compat.py                                |  1 +
 qpid/concurrency.py                           |  4 ++-
 qpid/connection.py                            | 20 ++++++++-------
 qpid/connection08.py                          | 10 +++++---
 qpid/datatypes.py                             |  3 ++-
 qpid/debug.py                                 |  1 +
 qpid/delegate.py                              |  3 ++-
 qpid/delegates.py                             | 12 +++++----
 qpid/disp.py                                  |  1 +
 qpid/framer.py                                |  5 ++--
 qpid/framing.py                               |  5 ++--
 qpid/generator.py                             |  3 ++-
 qpid/lexer.py                                 |  1 +
 qpid/log.py                                   |  1 +
 qpid/management.py                            |  5 ++--
 qpid/managementdata.py                        |  3 ++-
 qpid/message.py                               |  3 ++-
 qpid/messaging/__init__.py                    |  1 +
 qpid/messaging/address.py                     |  1 +
 qpid/messaging/driver.py                      |  1 +
 qpid/messaging/endpoints.py                   |  3 ++-
 qpid/messaging/message.py                     |  1 +
 qpid/messaging/transports.py                  |  1 +
 qpid/messaging/util.py                        |  1 +
 qpid/mimetype.py                              |  5 ++--
 qpid/ops.py                                   |  5 ++--
 qpid/packer.py                                |  1 +
 qpid/peer.py                                  | 11 ++++----
 qpid/queue.py                                 |  8 ++++--
 qpid/reference.py                             |  3 ++-
 qpid/sasl.py                                  |  1 +
 qpid/saslmech/amqplain.py                     |  3 ++-
 qpid/saslmech/anonymous.py                    |  3 ++-
 qpid/saslmech/cram_md5.py                     |  3 ++-
 qpid/saslmech/cram_md5_hex.py                 |  3 ++-
 qpid/saslmech/external.py                     |  3 ++-
 qpid/saslmech/finder.py                       |  1 +
 qpid/saslmech/plain.py                        |  3 ++-
 qpid/saslmech/scram.py                        |  3 ++-
 qpid/saslmech/scram_sha_1.py                  |  3 ++-
 qpid/saslmech/scram_sha_256.py                |  3 ++-
 qpid/selector.py                              |  3 ++-
 qpid/session.py                               | 17 ++++++------
 qpid/spec08.py                                |  3 ++-
 qpid/specs_config.py                          |  1 +
 qpid/testlib.py                               |  6 ++++-
 qpid/tests/__init__.py                        |  1 +
 qpid/tests/codec.py                           |  1 +
 qpid/tests/codec010.py                        |  1 +
 qpid/tests/connection.py                      |  1 +
 qpid/tests/datatypes.py                       |  1 +
 qpid/tests/framing.py                         |  1 +
 qpid/tests/messaging/__init__.py              |  3 ++-
 qpid/tests/messaging/address.py               |  1 +
 qpid/tests/messaging/endpoints.py             |  1 +
 qpid/tests/messaging/implementation.py        |  1 +
 qpid/tests/messaging/message.py               |  1 +
 qpid/tests/messaging/selector.py              |  1 +
 qpid/tests/mimetype.py                        |  3 ++-
 qpid/tests/parser.py                          |  1 +
 qpid/tests/queue.py                           |  1 +
 qpid/tests/saslmech/finder.py                 |  5 ++--
 qpid/tests/saslmech/my_sasl.py                |  1 +
 qpid/tests/saslmech/my_sasl2.py               |  1 +
 qpid/tests/spec010.py                         |  1 +
 qpid/tests/util.py                            |  1 +
 qpid/util.py                                  |  1 +
 qpid_tests/broker_0_10/__init__.py            | 37 ++++++++++++++-------------
 qpid_tests/broker_0_10/alternate_exchange.py  |  1 +
 qpid_tests/broker_0_10/broker.py              |  1 +
 qpid_tests/broker_0_10/dtx.py                 |  1 +
 qpid_tests/broker_0_10/example.py             |  1 +
 qpid_tests/broker_0_10/exchange.py            |  7 ++++-
 qpid_tests/broker_0_10/extensions.py          |  1 +
 qpid_tests/broker_0_10/lvq.py                 |  1 +
 qpid_tests/broker_0_10/management.py          |  1 +
 qpid_tests/broker_0_10/message.py             |  1 +
 qpid_tests/broker_0_10/msg_groups.py          |  1 +
 qpid_tests/broker_0_10/new_api.py             |  1 +
 qpid_tests/broker_0_10/persistence.py         |  1 +
 qpid_tests/broker_0_10/priority.py            |  1 +
 qpid_tests/broker_0_10/qmf_events.py          |  1 +
 qpid_tests/broker_0_10/query.py               |  1 +
 qpid_tests/broker_0_10/queue.py               |  1 +
 qpid_tests/broker_0_10/stats.py               |  1 +
 qpid_tests/broker_0_10/threshold.py           |  1 +
 qpid_tests/broker_0_10/tx.py                  |  1 +
 qpid_tests/broker_0_8/__init__.py             |  3 ++-
 qpid_tests/broker_0_8/basic.py                |  1 +
 qpid_tests/broker_0_8/broker.py               |  1 +
 qpid_tests/broker_0_8/example.py              |  1 +
 qpid_tests/broker_0_8/exchange.py             |  7 ++++-
 qpid_tests/broker_0_8/queue.py                |  1 +
 qpid_tests/broker_0_8/testlib.py              |  6 ++++-
 qpid_tests/broker_0_8/tx.py                   |  1 +
 qpid_tests/broker_0_9/__init__.py             |  3 ++-
 qpid_tests/broker_0_9/echo.py                 |  1 +
 qpid_tests/broker_0_9/messageheader.py        |  1 +
 qpid_tests/broker_0_9/query.py                |  1 +
 qpid_tests/broker_0_9/queue.py                |  1 +
 qpid_tests/broker_1_0/general.py              |  1 +
 qpid_tests/broker_1_0/legacy_exchanges.py     |  1 +
 qpid_tests/broker_1_0/selector.py             |  1 +
 qpid_tests/broker_1_0/translation.py          |  1 +
 qpid_tests/broker_1_0/tx.py                   |  1 +
 qpid_tests/client/client-api-example-tests.py |  1 +
 setup.py                                      |  1 +
 118 files changed, 248 insertions(+), 108 deletions(-)

diff --git a/examples/api/statistics.py b/examples/api/statistics.py
index 77f1e1f..32e4099 100644
--- a/examples/api/statistics.py
+++ b/examples/api/statistics.py
@@ -18,6 +18,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import time
 
diff --git a/examples/reservations/common.py b/examples/reservations/common.py
index 85aeebc..381e028 100644
--- a/examples/reservations/common.py
+++ b/examples/reservations/common.py
@@ -18,6 +18,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import traceback
 from fnmatch import fnmatch
diff --git a/mllib/__init__.py b/mllib/__init__.py
index f41ebe6..d978a0c 100644
--- a/mllib/__init__.py
+++ b/mllib/__init__.py
@@ -22,7 +22,9 @@ This module provides document parsing and transformation utilities for
 both SGML and XML.
 """
 
-import os, dom, transforms, parsers, sys
+from __future__ import absolute_import
+import os, sys
+from . import dom, transforms, parsers
 import xml.sax, types
 from xml.sax.handler import ErrorHandler
 from xml.sax.xmlreader import InputSource
diff --git a/mllib/dom.py b/mllib/dom.py
index 1d2cb5e..916f814 100644
--- a/mllib/dom.py
+++ b/mllib/dom.py
@@ -21,6 +21,7 @@
 Simple DOM for both SGML and XML documents.
 """
 
+from __future__ import absolute_import
 from __future__ import division
 from __future__ import generators
 from __future__ import nested_scopes
diff --git a/mllib/parsers.py b/mllib/parsers.py
index 48573f2..03c6764 100644
--- a/mllib/parsers.py
+++ b/mllib/parsers.py
@@ -27,7 +27,7 @@ try:
 except ImportError:
   from html.parser import HTMLParser
 import xml.sax.handler
-from dom import *
+from .dom import *
 
 class Parser:
 
diff --git a/mllib/transforms.py b/mllib/transforms.py
index 397e25c..b64af5e 100644
--- a/mllib/transforms.py
+++ b/mllib/transforms.py
@@ -21,6 +21,7 @@
 Useful transforms for dom objects.
 """
 
+from __future__ import absolute_import
 import mllib.dom
 try:
   from cStringIO import StringIO
diff --git a/qpid-python-test b/qpid-python-test
index f877c03..791f38b 100755
--- a/qpid-python-test
+++ b/qpid-python-test
@@ -20,6 +20,7 @@
 
 # TODO: summarize, test harness preconditions (e.g. broker is alive)
 
+from __future__ import absolute_import
 from __future__ import print_function
 import logging, optparse, os, struct, sys, time, traceback, types
 from fnmatch import fnmatchcase as match
diff --git a/qpid/__init__.py b/qpid/__init__.py
index 98c42c3..a2f1a31 100644
--- a/qpid/__init__.py
+++ b/qpid/__init__.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-import connection
+from __future__ import absolute_import
+from . import connection
 
 class Struct:
 
diff --git a/qpid/client.py b/qpid/client.py
index b4dba9e..b062ea5 100644
--- a/qpid/client.py
+++ b/qpid/client.py
@@ -22,16 +22,17 @@ An AMQP client implementation that uses a custom delegate for
 interacting with the server.
 """
 
+from __future__ import absolute_import
 import os, threading
-from peer import Peer, Channel, Closed
-from delegate import Delegate
-from util import get_client_properties_with_defaults
-from connection08 import Connection, Frame, connect
-from spec08 import load
-from queue import Queue
-from reference import ReferenceId, References
-from saslmech.finder import get_sasl_mechanism
-from saslmech.sasl import SaslException
+from .peer import Peer, Channel, Closed
+from .delegate import Delegate
+from .util import get_client_properties_with_defaults
+from .connection08 import Connection, Frame, connect
+from .spec08 import load
+from .queue import Queue
+from .reference import ReferenceId, References
+from .saslmech.finder import get_sasl_mechanism
+from .saslmech.sasl import SaslException
 
 
 class Client:
@@ -42,7 +43,7 @@ class Client:
     if spec:
       self.spec = spec
     else:
-      from specs_config import amqp_spec_0_9
+      from .specs_config import amqp_spec_0_9
       self.spec = load(amqp_spec_0_9)
     self.structs = StructFactory(self.spec)
     self.sessions = {}
diff --git a/qpid/codec.py b/qpid/codec.py
index 78ea0d0..4297704 100644
--- a/qpid/codec.py
+++ b/qpid/codec.py
@@ -26,13 +26,15 @@ fields.
 The unit test for this module is located in tests/codec.py
 """
 
-import re, qpid, spec08, os
+from __future__ import absolute_import
+import re, qpid, os
+from . import spec08
 try:
   from cStringIO import StringIO
 except ImportError:
   from io import StringIO
 from struct import *
-from reference import ReferenceId
+from .reference import ReferenceId
 from logging import getLogger
 
 log = getLogger("qpid.codec")
diff --git a/qpid/codec010.py b/qpid/codec010.py
index 78cd592..a03e60e 100644
--- a/qpid/codec010.py
+++ b/qpid/codec010.py
@@ -17,10 +17,11 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import datetime, string
-from packer import Packer
-from datatypes import serial, timestamp, RangedSet, Struct, UUID
-from ops import Compound, PRIMITIVE, COMPOUND
+from .packer import Packer
+from .datatypes import serial, timestamp, RangedSet, Struct, UUID
+from .ops import Compound, PRIMITIVE, COMPOUND
 
 class CodecException(Exception): pass
 
diff --git a/qpid/compat.py b/qpid/compat.py
index edd604c..f3559ab 100644
--- a/qpid/compat.py
+++ b/qpid/compat.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import sys
 import errno
 import time
diff --git a/qpid/concurrency.py b/qpid/concurrency.py
index b9df9f1..89f8740 100644
--- a/qpid/concurrency.py
+++ b/qpid/concurrency.py
@@ -17,7 +17,9 @@
 # under the License.
 #
 
-import compat, inspect, time
+from __future__ import absolute_import
+import inspect, time
+from . import compat
 
 def synchronized(meth):
   args, vargs, kwargs, defs = inspect.getargspec(meth)
diff --git a/qpid/connection.py b/qpid/connection.py
index 65c8ed7..498e638 100644
--- a/qpid/connection.py
+++ b/qpid/connection.py
@@ -17,16 +17,18 @@
 # under the License.
 #
 
-import datatypes, session
+from __future__ import absolute_import
+from . import datatypes, session
 from threading import Thread, Condition, RLock
-from util import wait, notify
-from codec010 import StringCodec
-from framing import *
-from session import Session
-from generator import control_invoker
-from exceptions import *
+from .util import wait, notify
+from .codec010 import StringCodec
+from .framing import *
+from .session import Session
+from .generator import control_invoker
+from .exceptions import *
 from logging import getLogger
-import qpid.delegates, socket
+import qpid.delegates
+import socket
 import sys
 
 class ChannelBusy(Exception): pass
@@ -43,7 +45,7 @@ def client(*args, **kwargs):
 def server(*args, **kwargs):
   return qpid.delegates.Server(*args, **kwargs)
 
-from framer import Framer
+from .framer import Framer
 
 class Connection(Framer):
 
diff --git a/qpid/connection08.py b/qpid/connection08.py
index d0faa00..527e9b6 100644
--- a/qpid/connection08.py
+++ b/qpid/connection08.py
@@ -23,14 +23,16 @@ to read and write Frame objects. This could be used by a client,
 server, or even a proxy implementation.
 """
 
-import socket, codec, errno, qpid
+from __future__ import absolute_import
+import socket, errno, qpid
+from . import codec
 try:
   from cStringIO import StringIO
 except ImportError:
   from io import StringIO
-from codec import EOF
-from compat import SHUT_RDWR
-from exceptions import VersionError
+from .codec import EOF
+from .compat import SHUT_RDWR
+from .exceptions import VersionError
 from logging import getLogger, DEBUG
 
 log = getLogger("qpid.connection08")
diff --git a/qpid/datatypes.py b/qpid/datatypes.py
index 2f8a5d3..b6d5452 100644
--- a/qpid/datatypes.py
+++ b/qpid/datatypes.py
@@ -17,8 +17,9 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import threading, struct, datetime, time
-from exceptions import Timeout
+from .exceptions import Timeout
 
 class Struct:
 
diff --git a/qpid/debug.py b/qpid/debug.py
index 423b03d..bc02ae5 100644
--- a/qpid/debug.py
+++ b/qpid/debug.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import threading, traceback, signal, sys, time
 
diff --git a/qpid/delegate.py b/qpid/delegate.py
index 579cf6c..b8ee687 100644
--- a/qpid/delegate.py
+++ b/qpid/delegate.py
@@ -21,9 +21,10 @@
 Delegate implementation intended for use with the peer module.
 """
 
+from __future__ import absolute_import
 from __future__ import print_function
 import threading, inspect, traceback, sys
-from connection08 import Method, Request, Response
+from .connection08 import Method, Request, Response
 
 def _handler_name(method):
   return "%s_%s" % (method.klass.name, method.name)
diff --git a/qpid/delegates.py b/qpid/delegates.py
index e231a85..8071296 100644
--- a/qpid/delegates.py
+++ b/qpid/delegates.py
@@ -17,13 +17,15 @@
 # under the License.
 #
 
-import os, session
+from __future__ import absolute_import
+import os
 import qpid.connection
-from util import notify, get_client_properties_with_defaults
-from datatypes import RangedSet
-from exceptions import VersionError, Closed
+from . import session
+from .util import notify, get_client_properties_with_defaults
+from .datatypes import RangedSet
+from .exceptions import VersionError, Closed
 from logging import getLogger
-from ops import Control
+from .ops import Control
 import sys
 from qpid import sasl
 
diff --git a/qpid/disp.py b/qpid/disp.py
index 2bef08a..67031c7 100644
--- a/qpid/disp.py
+++ b/qpid/disp.py
@@ -19,6 +19,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 from time import strftime, gmtime
 
diff --git a/qpid/framer.py b/qpid/framer.py
index ff907e9..95d9d7c 100644
--- a/qpid/framer.py
+++ b/qpid/framer.py
@@ -17,9 +17,10 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import struct, socket
-from exceptions import Closed
-from packer import Packer
+from .exceptions import Closed
+from .packer import Packer
 from threading import RLock
 from logging import getLogger
 
diff --git a/qpid/framing.py b/qpid/framing.py
index 96af231..a441487 100644
--- a/qpid/framing.py
+++ b/qpid/framing.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import struct
 
 FIRST_SEG = 0x08
@@ -197,9 +198,9 @@ class SegmentEncoder:
     self.frames = []
     return result
 
-from ops import COMMANDS, CONTROLS, COMPOUND, Header, segment_type, track
+from .ops import COMMANDS, CONTROLS, COMPOUND, Header, segment_type, track
 
-from codec010 import StringCodec
+from .codec010 import StringCodec
 
 class OpEncoder:
 
diff --git a/qpid/generator.py b/qpid/generator.py
index 02d11e5..8fb602e 100644
--- a/qpid/generator.py
+++ b/qpid/generator.py
@@ -17,9 +17,10 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import sys
 
-from ops import *
+from .ops import *
 
 def METHOD(module, op):
   method = lambda self, *args, **kwargs: self.invoke(op, args, kwargs)
diff --git a/qpid/lexer.py b/qpid/lexer.py
index ec28bbb..acf01bc 100644
--- a/qpid/lexer.py
+++ b/qpid/lexer.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import re
 
 class Type:
diff --git a/qpid/log.py b/qpid/log.py
index 1fd7d74..6296a4e 100644
--- a/qpid/log.py
+++ b/qpid/log.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from logging import getLogger, StreamHandler, Formatter
 from logging import DEBUG, INFO, WARN, ERROR, CRITICAL
 
diff --git a/qpid/management.py b/qpid/management.py
index cd8e6b5..7d5e39a 100644
--- a/qpid/management.py
+++ b/qpid/management.py
@@ -25,17 +25,18 @@
 Management API for Qpid
 """
 
+from __future__ import absolute_import
 import qpid
 import struct
 import socket
 from threading    import Thread
-from datatypes    import Message, RangedSet
+from .datatypes   import Message, RangedSet
 from time         import time
 try:
   from cStringIO    import StringIO
 except ImportError:
   from io import StringIO
-from codec010     import StringCodec as Codec
+from .codec010    import StringCodec as Codec
 from threading    import Lock, Condition
 
 
diff --git a/qpid/managementdata.py b/qpid/managementdata.py
index 23261cc..b6338ee 100644
--- a/qpid/managementdata.py
+++ b/qpid/managementdata.py
@@ -24,6 +24,7 @@
 ## This file is being obsoleted by qmf/console.py
 ###############################################################################
 
+from __future__ import absolute_import
 from __future__ import print_function
 import qpid
 import re
@@ -35,7 +36,7 @@ import locale
 from qpid.connection import Timeout
 from qpid.management import managementChannel, managementClient
 from threading       import Lock
-from disp            import Display
+from .disp           import Display
 from shlex           import split
 from qpid.connection import Connection
 from qpid.util       import connect
diff --git a/qpid/message.py b/qpid/message.py
index 85de440..f703dd4 100644
--- a/qpid/message.py
+++ b/qpid/message.py
@@ -16,7 +16,8 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-from connection08 import Method, Request
+from __future__ import absolute_import
+from .connection08 import Method, Request
 
 class Message:
 
diff --git a/qpid/messaging/__init__.py b/qpid/messaging/__init__.py
index f9ddda2..8294686 100644
--- a/qpid/messaging/__init__.py
+++ b/qpid/messaging/__init__.py
@@ -28,6 +28,7 @@ Areas that still need work:
   - protocol negotiation/multiprotocol impl
 """
 
+from __future__ import absolute_import
 from qpid.datatypes import timestamp, uuid4, Serial
 from qpid.messaging.constants import *
 from qpid.messaging.endpoints import *
diff --git a/qpid/messaging/address.py b/qpid/messaging/address.py
index e423f09..786481b 100644
--- a/qpid/messaging/address.py
+++ b/qpid/messaging/address.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import re
 from qpid.lexer import Lexicon, LexError
 from qpid.parser import Parser, ParseError
diff --git a/qpid/messaging/driver.py b/qpid/messaging/driver.py
index e6f7749..1106635 100644
--- a/qpid/messaging/driver.py
+++ b/qpid/messaging/driver.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import socket, struct, sys, time
 from logging import getLogger, DEBUG
 from qpid import compat
diff --git a/qpid/messaging/endpoints.py b/qpid/messaging/endpoints.py
index 55ee1d1..56c2426 100644
--- a/qpid/messaging/endpoints.py
+++ b/qpid/messaging/endpoints.py
@@ -28,6 +28,7 @@ Areas that still need work:
   - protocol negotiation/multiprotocol impl
 """
 
+from __future__ import absolute_import
 from logging import getLogger
 from math import ceil
 from qpid.codec010 import StringCodec
@@ -245,7 +246,7 @@ class Connection(Endpoint):
     self._condition = Condition(self._lock)
     self._waiter = Waiter(self._condition)
     self._modcount = Serial(0)
-    from driver import Driver
+    from .driver import Driver
     self._driver = Driver(self)
 
   def _wait(self, predicate, timeout=None):
diff --git a/qpid/messaging/message.py b/qpid/messaging/message.py
index b70b365..3891665 100644
--- a/qpid/messaging/message.py
+++ b/qpid/messaging/message.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.codec010 import StringCodec
 from qpid.ops import PRIMITIVE
 
diff --git a/qpid/messaging/transports.py b/qpid/messaging/transports.py
index 0b2334e..839210e 100644
--- a/qpid/messaging/transports.py
+++ b/qpid/messaging/transports.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import socket
 from qpid.util import connect
 
diff --git a/qpid/messaging/util.py b/qpid/messaging/util.py
index 726cfd5..f83106a 100644
--- a/qpid/messaging/util.py
+++ b/qpid/messaging/util.py
@@ -21,6 +21,7 @@
 Add-on utilities for the L{qpid.messaging} API.
 """
 
+from __future__ import absolute_import
 from qpid.messaging import *
 from logging import getLogger
 from threading import Thread
diff --git a/qpid/mimetype.py b/qpid/mimetype.py
index 1c428b5..a7b5cbc 100644
--- a/qpid/mimetype.py
+++ b/qpid/mimetype.py
@@ -16,9 +16,10 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import re, email.utils
-from lexer import Lexicon, LexError
-from parser import Parser, ParseError
+from .lexer import Lexicon, LexError
+from .parser import Parser, ParseError
 
 l = Lexicon()
 
diff --git a/qpid/ops.py b/qpid/ops.py
index 8f29945..a54e352 100644
--- a/qpid/ops.py
+++ b/qpid/ops.py
@@ -16,13 +16,14 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from __future__ import print_function
 import os, mllib, sys
 try:
   import cPickle as pickle
 except ImportError:
   import pickle
-from util import fill
+from .util import fill
 
 class Primitive(object):
   pass
@@ -269,7 +270,7 @@ def load_types(file):
       f.close()
   return types
 
-from specs_config import amqp_spec as file
+from .specs_config import amqp_spec as file
 types = load_types(file)
 
 ENUMS = {}
diff --git a/qpid/packer.py b/qpid/packer.py
index 22c1691..25b7957 100644
--- a/qpid/packer.py
+++ b/qpid/packer.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import struct
 
 class Packer:
diff --git a/qpid/peer.py b/qpid/peer.py
index b6de3ce..5d863b3 100644
--- a/qpid/peer.py
+++ b/qpid/peer.py
@@ -24,17 +24,18 @@ sorts incoming frames to their intended channels, and dispatches
 incoming method frames to a delegate.
 """
 
+from __future__ import absolute_import
 import threading, traceback, socket, sys
-from connection08 import EOF, Method, Header, Body, Request, Response, VersionError
-from message import Message
-from queue import Queue, Closed as QueueClosed
-from content import Content
+from .connection08 import EOF, Method, Header, Body, Request, Response, VersionError
+from .message import Message
+from .queue import Queue, Closed as QueueClosed
+from .content import Content
 try:
   from cStringIO import StringIO
 except ImportError:
   from io import StringIO
 from time import time
-from exceptions import Closed, Timeout, ContentError
+from .exceptions import Closed, Timeout, ContentError
 from logging import getLogger
 
 log = getLogger("qpid.peer")
diff --git a/qpid/queue.py b/qpid/queue.py
index af7ee20..86b5d98 100644
--- a/qpid/queue.py
+++ b/qpid/queue.py
@@ -23,9 +23,13 @@ implementation to add a close() method so that threads blocking on the
 content of a queue can be notified if the queue is no longer in use.
 """
 
-from Queue import Queue as BaseQueue, Empty, Full
+from __future__ import absolute_import
+try:
+  from Queue import Queue as BaseQueue, Empty, Full
+except ImportError:
+  from queue import Queue as BaseQueue, Empty, Full
 from threading import Thread
-from exceptions import Closed
+from .exceptions import Closed
 
 class Queue(BaseQueue):
 
diff --git a/qpid/reference.py b/qpid/reference.py
index 1f1d761..50c5c5f 100644
--- a/qpid/reference.py
+++ b/qpid/reference.py
@@ -23,8 +23,9 @@
 Support for amqp 'reference' content (as opposed to inline content)
 """
 
+from __future__ import absolute_import
 import threading
-from queue import Queue, Closed
+from .queue import Queue, Closed
 
 class NotOpened(Exception): pass
 
diff --git a/qpid/sasl.py b/qpid/sasl.py
index a2147e3..0531760 100644
--- a/qpid/sasl.py
+++ b/qpid/sasl.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import socket
 
 class SASLError(Exception):
diff --git a/qpid/saslmech/amqplain.py b/qpid/saslmech/amqplain.py
index 731f6b6..e8bea5d 100644
--- a/qpid/saslmech/amqplain.py
+++ b/qpid/saslmech/amqplain.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 
 class AMQPLAIN(Sasl):
 
diff --git a/qpid/saslmech/anonymous.py b/qpid/saslmech/anonymous.py
index 1002a3a..ce24b1c 100644
--- a/qpid/saslmech/anonymous.py
+++ b/qpid/saslmech/anonymous.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 
 class ANONYMOUS(Sasl):
 
diff --git a/qpid/saslmech/cram_md5.py b/qpid/saslmech/cram_md5.py
index a351f43..5dec975 100644
--- a/qpid/saslmech/cram_md5.py
+++ b/qpid/saslmech/cram_md5.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 from hmac import HMAC
 
 class CRAM_MD5(Sasl):
diff --git a/qpid/saslmech/cram_md5_hex.py b/qpid/saslmech/cram_md5_hex.py
index 03463db..cdc4ff4 100644
--- a/qpid/saslmech/cram_md5_hex.py
+++ b/qpid/saslmech/cram_md5_hex.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 from hmac import HMAC
 from hashlib import md5
 
diff --git a/qpid/saslmech/external.py b/qpid/saslmech/external.py
index 51c8d97..098835f 100644
--- a/qpid/saslmech/external.py
+++ b/qpid/saslmech/external.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 
 
 class EXTERNAL(Sasl):
diff --git a/qpid/saslmech/finder.py b/qpid/saslmech/finder.py
index 975e79a..8aac882 100644
--- a/qpid/saslmech/finder.py
+++ b/qpid/saslmech/finder.py
@@ -18,6 +18,7 @@
 #
 
 
+from __future__ import absolute_import
 from logging import getLogger
 
 log = getLogger("qpid.saslmech")
diff --git a/qpid/saslmech/plain.py b/qpid/saslmech/plain.py
index 8e6fb74..0040372 100644
--- a/qpid/saslmech/plain.py
+++ b/qpid/saslmech/plain.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from sasl import Sasl
+from __future__ import absolute_import
+from .sasl import Sasl
 
 class PLAIN(Sasl):
 
diff --git a/qpid/saslmech/scram.py b/qpid/saslmech/scram.py
index 11a2d2f..a6c112c 100644
--- a/qpid/saslmech/scram.py
+++ b/qpid/saslmech/scram.py
@@ -17,9 +17,10 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from hmac import HMAC
 from binascii import b2a_hex
-from sasl import Sasl
+from .sasl import Sasl
 import os
 import base64
 
diff --git a/qpid/saslmech/scram_sha_1.py b/qpid/saslmech/scram_sha_1.py
index 83f58f8..7022dc8 100644
--- a/qpid/saslmech/scram_sha_1.py
+++ b/qpid/saslmech/scram_sha_1.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from scram import SCRAM_base
+from __future__ import absolute_import
+from .scram import SCRAM_base
 from hashlib import sha1
 
 class SCRAM_SHA_1(SCRAM_base):
diff --git a/qpid/saslmech/scram_sha_256.py b/qpid/saslmech/scram_sha_256.py
index cc89489..47d8b71 100644
--- a/qpid/saslmech/scram_sha_256.py
+++ b/qpid/saslmech/scram_sha_256.py
@@ -17,7 +17,8 @@
 # under the License.
 #
 
-from scram import SCRAM_base
+from __future__ import absolute_import
+from .scram import SCRAM_base
 import hashlib
 
 class SCRAM_SHA_256(SCRAM_base):
diff --git a/qpid/selector.py b/qpid/selector.py
index f0f66c8..72eca72 100644
--- a/qpid/selector.py
+++ b/qpid/selector.py
@@ -16,8 +16,9 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import time, errno, os, atexit, traceback
-from compat import select, SelectError, set, selectable_waiter, format_exc
+from .compat import select, SelectError, set, selectable_waiter, format_exc
 from threading import Thread, Lock
 from logging import getLogger
 from qpid.messaging import InternalError
diff --git a/qpid/session.py b/qpid/session.py
index d04f369..266113b 100644
--- a/qpid/session.py
+++ b/qpid/session.py
@@ -17,15 +17,16 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from threading import Condition, RLock, Lock, currentThread
-from generator import command_invoker
-from datatypes import RangedSet, Struct, Future
-from codec010 import StringCodec
-from queue import Queue
-from datatypes import Message, serial
-from ops import Command, MessageTransfer
-from util import wait, notify
-from exceptions import *
+from .generator import command_invoker
+from .datatypes import RangedSet, Struct, Future
+from .codec010 import StringCodec
+from .queue import Queue
+from .datatypes import Message, serial
+from .ops import Command, MessageTransfer
+from .util import wait, notify
+from .exceptions import *
 from logging import getLogger
 
 log = getLogger("qpid.io.cmd")
diff --git a/qpid/spec08.py b/qpid/spec08.py
index cc86d26..343312e 100644
--- a/qpid/spec08.py
+++ b/qpid/spec08.py
@@ -29,9 +29,10 @@ class so that the generated code can be reused in a variety of
 situations.
 """
 
+from __future__ import absolute_import
 from __future__ import print_function
 import re, types, mllib, qpid
-from util import fill
+from .util import fill
 
 class SpecContainer:
 
diff --git a/qpid/specs_config.py b/qpid/specs_config.py
index d991e8b..23694c5 100644
--- a/qpid/specs_config.py
+++ b/qpid/specs_config.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import os
 
 AMQP_SPEC_DIR=os.path.join(os.path.dirname(os.path.abspath(__file__)), "specs")
diff --git a/qpid/testlib.py b/qpid/testlib.py
index 0a4ad48..d3d48e8 100644
--- a/qpid/testlib.py
+++ b/qpid/testlib.py
@@ -21,13 +21,17 @@
 # Support library for qpid python tests.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import string
 import random
 
 import unittest, traceback, socket
 import qpid.client, qmf.console
-import Queue
+try:
+    import Queue
+except ImportError:
+    import queue as Queue
 from qpid.content import Content
 from qpid.message import Message
 from qpid.harness import Skipped
diff --git a/qpid/tests/__init__.py b/qpid/tests/__init__.py
index a9bbf85..37b8fe4 100644
--- a/qpid/tests/__init__.py
+++ b/qpid/tests/__init__.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 class Test:
 
diff --git a/qpid/tests/codec.py b/qpid/tests/codec.py
index e18b01b..e0ac26d 100644
--- a/qpid/tests/codec.py
+++ b/qpid/tests/codec.py
@@ -18,6 +18,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import unittest
 from qpid.codec import Codec
diff --git a/qpid/tests/codec010.py b/qpid/tests/codec010.py
index 787ebc1..cf0ab50 100644
--- a/qpid/tests/codec010.py
+++ b/qpid/tests/codec010.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import time
 
 from unittest import TestCase
diff --git a/qpid/tests/connection.py b/qpid/tests/connection.py
index 744a8be..fe51367 100644
--- a/qpid/tests/connection.py
+++ b/qpid/tests/connection.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import time
 from threading import *
 from unittest import TestCase
diff --git a/qpid/tests/datatypes.py b/qpid/tests/datatypes.py
index e28a380..86e5470 100644
--- a/qpid/tests/datatypes.py
+++ b/qpid/tests/datatypes.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from unittest import TestCase
 from qpid.datatypes import *
 from qpid.ops import DeliveryProperties, FragmentProperties, MessageProperties
diff --git a/qpid/tests/framing.py b/qpid/tests/framing.py
index c421513..2d987f8 100644
--- a/qpid/tests/framing.py
+++ b/qpid/tests/framing.py
@@ -20,6 +20,7 @@
 # setup, usage, teardown, errors(sync), errors(async), stress, soak,
 # boundary-conditions, config
 
+from __future__ import absolute_import
 from qpid.tests import Test
 from qpid.framing import *
 
diff --git a/qpid/tests/messaging/__init__.py b/qpid/tests/messaging/__init__.py
index 45d7eb8..29d9bab 100644
--- a/qpid/tests/messaging/__init__.py
+++ b/qpid/tests/messaging/__init__.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import time
 from math import ceil
 from qpid.harness import Skipped
@@ -233,4 +234,4 @@ class CompatURL(URL):
       s += ":%s" % self.port
     return s
 
-import address, endpoints, message, selector
+from . import address, endpoints, message, selector
diff --git a/qpid/tests/messaging/address.py b/qpid/tests/messaging/address.py
index a947ee7..c1860ab 100644
--- a/qpid/tests/messaging/address.py
+++ b/qpid/tests/messaging/address.py
@@ -18,6 +18,7 @@
 #
 
 
+from __future__ import absolute_import
 from qpid.tests import Test
 from qpid.messaging.address import lex, parse, ParseError, EOF, ID, NUMBER, \
     SYM, WSPACE, LEXER
diff --git a/qpid/tests/messaging/endpoints.py b/qpid/tests/messaging/endpoints.py
index 64b0a08..1320ac2 100644
--- a/qpid/tests/messaging/endpoints.py
+++ b/qpid/tests/messaging/endpoints.py
@@ -20,6 +20,7 @@
 # setup, usage, teardown, errors(sync), errors(async), stress, soak,
 # boundary-conditions, config
 
+from __future__ import absolute_import
 import errno, os, socket, sys, time
 from qpid import compat
 from qpid.compat import set
diff --git a/qpid/tests/messaging/implementation.py b/qpid/tests/messaging/implementation.py
index 740dd27..e8a039f 100644
--- a/qpid/tests/messaging/implementation.py
+++ b/qpid/tests/messaging/implementation.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from __future__ import print_function
 import os
 if 'QPID_USE_SWIG_CLIENT' in os.environ and os.environ['QPID_USE_SWIG_CLIENT']:
diff --git a/qpid/tests/messaging/message.py b/qpid/tests/messaging/message.py
index 76bb103..ee5b56e 100644
--- a/qpid/tests/messaging/message.py
+++ b/qpid/tests/messaging/message.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.messaging.address import parse
 from qpid.tests.messaging import Base
diff --git a/qpid/tests/messaging/selector.py b/qpid/tests/messaging/selector.py
index 013c413..4023627 100644
--- a/qpid/tests/messaging/selector.py
+++ b/qpid/tests/messaging/selector.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 import sys, os
 from logging import getLogger
diff --git a/qpid/tests/mimetype.py b/qpid/tests/mimetype.py
index 2276031..441bc53 100644
--- a/qpid/tests/mimetype.py
+++ b/qpid/tests/mimetype.py
@@ -17,9 +17,10 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests import Test
 from qpid.mimetype import lex, parse, ParseError, EOF, WSPACE
-from parser import ParserBase
+from qpid.tests.parser import ParserBase
 
 class MimeTypeTests(ParserBase, Test):
 
diff --git a/qpid/tests/parser.py b/qpid/tests/parser.py
index d6e1067..3ff4548 100644
--- a/qpid/tests/parser.py
+++ b/qpid/tests/parser.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.parser import ParseError
 
 class ParserBase:
diff --git a/qpid/tests/queue.py b/qpid/tests/queue.py
index e12354e..b9d8f56 100644
--- a/qpid/tests/queue.py
+++ b/qpid/tests/queue.py
@@ -18,6 +18,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import threading, time
 from unittest import TestCase
 from qpid.queue import Queue, Empty, Closed
diff --git a/qpid/tests/saslmech/finder.py b/qpid/tests/saslmech/finder.py
index 3ad5e72..bdeb438 100644
--- a/qpid/tests/saslmech/finder.py
+++ b/qpid/tests/saslmech/finder.py
@@ -17,10 +17,11 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from unittest import TestCase
 from qpid.saslmech.finder import get_sasl_mechanism
-from my_sasl import MY_SASL
-from my_sasl2 import MY_SASL2
+from .my_sasl import MY_SASL
+from .my_sasl2 import MY_SASL2
 
 class SaslFinderTests (TestCase):
   """Tests the ability to chose the a sasl mechanism from those available to be loaded"""
diff --git a/qpid/tests/saslmech/my_sasl.py b/qpid/tests/saslmech/my_sasl.py
index c15fe44..c7a3e47 100644
--- a/qpid/tests/saslmech/my_sasl.py
+++ b/qpid/tests/saslmech/my_sasl.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.saslmech.sasl import Sasl
 
 class MY_SASL(Sasl): pass
diff --git a/qpid/tests/saslmech/my_sasl2.py b/qpid/tests/saslmech/my_sasl2.py
index e0b3dfa..da1429b 100644
--- a/qpid/tests/saslmech/my_sasl2.py
+++ b/qpid/tests/saslmech/my_sasl2.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.saslmech.sasl import Sasl
 
 class MY_SASL2(Sasl):
diff --git a/qpid/tests/spec010.py b/qpid/tests/spec010.py
index 9729efe..cce8ca3 100644
--- a/qpid/tests/spec010.py
+++ b/qpid/tests/spec010.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import os, tempfile, shutil, stat
 from unittest import TestCase
 from qpid.codec010 import Codec, StringCodec
diff --git a/qpid/tests/util.py b/qpid/tests/util.py
index 4e90121..5fcb181 100644
--- a/qpid/tests/util.py
+++ b/qpid/tests/util.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from unittest import TestCase
 from qpid.util import get_client_properties_with_defaults
 
diff --git a/qpid/util.py b/qpid/util.py
index 285d8b5..2e0984c 100644
--- a/qpid/util.py
+++ b/qpid/util.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 import os, socket, time, textwrap, re, sys
 
 try:
diff --git a/qpid_tests/broker_0_10/__init__.py b/qpid_tests/broker_0_10/__init__.py
index 312dc22..4e50931 100644
--- a/qpid_tests/broker_0_10/__init__.py
+++ b/qpid_tests/broker_0_10/__init__.py
@@ -19,21 +19,22 @@
 # under the License.
 #
 
-from alternate_exchange import *
-from broker import *
-from dtx import *
-from example import *
-from exchange import *
-from management import *
-from message import *
-from query import *
-from queue import *
-from tx import *
-from lvq import *
-from priority import *
-from threshold import *
-from extensions import *
-from msg_groups import *
-from new_api import *
-from stats import *
-from qmf_events import *
+from __future__ import absolute_import
+from .alternate_exchange import *
+from .broker import *
+from .dtx import *
+from .example import *
+from .exchange import *
+from .management import *
+from .message import *
+from .query import *
+from .queue import *
+from .tx import *
+from .lvq import *
+from .priority import *
+from .threshold import *
+from .extensions import *
+from .msg_groups import *
+from .new_api import *
+from .stats import *
+from .qmf_events import *
diff --git a/qpid_tests/broker_0_10/alternate_exchange.py b/qpid_tests/broker_0_10/alternate_exchange.py
index 07ef7ea..0ed40c5 100644
--- a/qpid_tests/broker_0_10/alternate_exchange.py
+++ b/qpid_tests/broker_0_10/alternate_exchange.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import traceback
 from qpid.queue import Empty
 from qpid.datatypes import Message, RangedSet
diff --git a/qpid_tests/broker_0_10/broker.py b/qpid_tests/broker_0_10/broker.py
index 242b6f1..f906e4e 100644
--- a/qpid_tests/broker_0_10/broker.py
+++ b/qpid_tests/broker_0_10/broker.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Closed
 from qpid.queue import Empty
 from qpid.testlib import TestBase010
diff --git a/qpid_tests/broker_0_10/dtx.py b/qpid_tests/broker_0_10/dtx.py
index 4753998..2f757b8 100644
--- a/qpid_tests/broker_0_10/dtx.py
+++ b/qpid_tests/broker_0_10/dtx.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.datatypes import Message, RangedSet
diff --git a/qpid_tests/broker_0_10/example.py b/qpid_tests/broker_0_10/example.py
index 83d2081..2e3fa81 100644
--- a/qpid_tests/broker_0_10/example.py
+++ b/qpid_tests/broker_0_10/example.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.datatypes import Message, RangedSet
 from qpid.testlib import TestBase010
 
diff --git a/qpid_tests/broker_0_10/exchange.py b/qpid_tests/broker_0_10/exchange.py
index ee03ce3..0cd0a55 100644
--- a/qpid_tests/broker_0_10/exchange.py
+++ b/qpid_tests/broker_0_10/exchange.py
@@ -23,8 +23,13 @@ Tests for exchange behaviour.
 Test classes ending in 'RuleTests' are derived from rules in amqp.xml.
 """
 
+from __future__ import absolute_import
 from __future__ import print_function
-import Queue, logging, traceback
+import logging, traceback
+try:
+    import Queue
+except ImportError:
+    import queue as Queue
 from qpid.testlib import TestBase010
 from qpid.datatypes import Message
 from qpid.client import Closed
diff --git a/qpid_tests/broker_0_10/extensions.py b/qpid_tests/broker_0_10/extensions.py
index 944a869..f967f5e 100644
--- a/qpid_tests/broker_0_10/extensions.py
+++ b/qpid_tests/broker_0_10/extensions.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_10/lvq.py b/qpid_tests/broker_0_10/lvq.py
index f5edc90..34ea63f 100644
--- a/qpid_tests/broker_0_10/lvq.py
+++ b/qpid_tests/broker_0_10/lvq.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import Base
diff --git a/qpid_tests/broker_0_10/management.py b/qpid_tests/broker_0_10/management.py
index d146ddf..c1d4cf5 100644
--- a/qpid_tests/broker_0_10/management.py
+++ b/qpid_tests/broker_0_10/management.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.datatypes import Message, RangedSet
 from qpid.testlib import TestBase010
 from qpid.management import managementChannel, managementClient
diff --git a/qpid_tests/broker_0_10/message.py b/qpid_tests/broker_0_10/message.py
index ef38864..9b9a051 100644
--- a/qpid_tests/broker_0_10/message.py
+++ b/qpid_tests/broker_0_10/message.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.testlib import TestBase010
diff --git a/qpid_tests/broker_0_10/msg_groups.py b/qpid_tests/broker_0_10/msg_groups.py
index ec015e1..124625a 100644
--- a/qpid_tests/broker_0_10/msg_groups.py
+++ b/qpid_tests/broker_0_10/msg_groups.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.messaging import *
 from qpid.tests.messaging import Base
 import qmf.console
diff --git a/qpid_tests/broker_0_10/new_api.py b/qpid_tests/broker_0_10/new_api.py
index 2dd91a4..301b0ad 100644
--- a/qpid_tests/broker_0_10/new_api.py
+++ b/qpid_tests/broker_0_10/new_api.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import Base
diff --git a/qpid_tests/broker_0_10/persistence.py b/qpid_tests/broker_0_10/persistence.py
index 42698ae..a204ded 100644
--- a/qpid_tests/broker_0_10/persistence.py
+++ b/qpid_tests/broker_0_10/persistence.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.datatypes import Message, RangedSet
 #from qpid.testlib import testrunner, TestBase010
 from qpid.testlib import TestBase010
diff --git a/qpid_tests/broker_0_10/priority.py b/qpid_tests/broker_0_10/priority.py
index 47aae6d..8311a3a 100644
--- a/qpid_tests/broker_0_10/priority.py
+++ b/qpid_tests/broker_0_10/priority.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import Base
 from qpid.compat import set
diff --git a/qpid_tests/broker_0_10/qmf_events.py b/qpid_tests/broker_0_10/qmf_events.py
index 7ab7b0a..cfc7129 100644
--- a/qpid_tests/broker_0_10/qmf_events.py
+++ b/qpid_tests/broker_0_10/qmf_events.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.messaging import *
 from qpid.tests.messaging import Base
 from qpidtoollibs.broker import EventHelper
diff --git a/qpid_tests/broker_0_10/query.py b/qpid_tests/broker_0_10/query.py
index fd74182..45cf44b 100644
--- a/qpid_tests/broker_0_10/query.py
+++ b/qpid_tests/broker_0_10/query.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_10/queue.py b/qpid_tests/broker_0_10/queue.py
index 6dbc842..a3de6cb 100644
--- a/qpid_tests/broker_0_10/queue.py
+++ b/qpid_tests/broker_0_10/queue.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.testlib import TestBase010
diff --git a/qpid_tests/broker_0_10/stats.py b/qpid_tests/broker_0_10/stats.py
index 9f7078d..bf48371 100644
--- a/qpid_tests/broker_0_10/stats.py
+++ b/qpid_tests/broker_0_10/stats.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from __future__ import print_function
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import Base
diff --git a/qpid_tests/broker_0_10/threshold.py b/qpid_tests/broker_0_10/threshold.py
index fa172c6..7d9ad7c 100644
--- a/qpid_tests/broker_0_10/threshold.py
+++ b/qpid_tests/broker_0_10/threshold.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.messaging import *
 from qpid.tests.messaging import Base
 import math
diff --git a/qpid_tests/broker_0_10/tx.py b/qpid_tests/broker_0_10/tx.py
index 956e25b..ac1b250 100644
--- a/qpid_tests/broker_0_10/tx.py
+++ b/qpid_tests/broker_0_10/tx.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.datatypes import Message, RangedSet
diff --git a/qpid_tests/broker_0_8/__init__.py b/qpid_tests/broker_0_8/__init__.py
index 526f245..0acd7b4 100644
--- a/qpid_tests/broker_0_8/__init__.py
+++ b/qpid_tests/broker_0_8/__init__.py
@@ -19,4 +19,5 @@
 # under the License.
 #
 
-import basic, broker, example, exchange, queue, testlib, tx
+from __future__ import absolute_import
+from . import basic, broker, example, exchange, queue, testlib, tx
diff --git a/qpid_tests/broker_0_8/basic.py b/qpid_tests/broker_0_8/basic.py
index 04b364c..4638a9f 100644
--- a/qpid_tests/broker_0_8/basic.py
+++ b/qpid_tests/broker_0_8/basic.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_8/broker.py b/qpid_tests/broker_0_8/broker.py
index b281c72..7538c89 100644
--- a/qpid_tests/broker_0_8/broker.py
+++ b/qpid_tests/broker_0_8/broker.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_8/example.py b/qpid_tests/broker_0_8/example.py
index 17e9a45..55c672d 100644
--- a/qpid_tests/broker_0_8/example.py
+++ b/qpid_tests/broker_0_8/example.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.content import Content
 from qpid.testlib import TestBase
 
diff --git a/qpid_tests/broker_0_8/exchange.py b/qpid_tests/broker_0_8/exchange.py
index 3c7b493..bd496b0 100644
--- a/qpid_tests/broker_0_8/exchange.py
+++ b/qpid_tests/broker_0_8/exchange.py
@@ -23,7 +23,12 @@ Tests for exchange behaviour.
 Test classes ending in 'RuleTests' are derived from rules in amqp.xml.
 """
 
-import Queue, logging
+from __future__ import absolute_import
+try:
+    import Queue
+except ImportError:
+    import queue as Queue
+import logging
 from qpid.testlib import TestBase
 from qpid.content import Content
 from qpid.client import Closed
diff --git a/qpid_tests/broker_0_8/queue.py b/qpid_tests/broker_0_8/queue.py
index a354d06..f5e17e2 100644
--- a/qpid_tests/broker_0_8/queue.py
+++ b/qpid_tests/broker_0_8/queue.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_8/testlib.py b/qpid_tests/broker_0_8/testlib.py
index b1ceeb2..592eeaf 100644
--- a/qpid_tests/broker_0_8/testlib.py
+++ b/qpid_tests/broker_0_8/testlib.py
@@ -21,10 +21,14 @@
 # Tests for the testlib itself.
 # 
 
+from __future__ import absolute_import
 from __future__ import print_function
 from qpid.content import Content
 from qpid.testlib import TestBase
-from Queue import Empty
+try:
+    from Queue import Empty
+except ImportError:
+    from queue import Empty
 
 import sys
 from traceback import *
diff --git a/qpid_tests/broker_0_8/tx.py b/qpid_tests/broker_0_8/tx.py
index 39251ca..e9c7ceb 100644
--- a/qpid_tests/broker_0_8/tx.py
+++ b/qpid_tests/broker_0_8/tx.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_9/__init__.py b/qpid_tests/broker_0_9/__init__.py
index 72e69a5..2ddefcf 100644
--- a/qpid_tests/broker_0_9/__init__.py
+++ b/qpid_tests/broker_0_9/__init__.py
@@ -19,4 +19,5 @@
 # under the License.
 #
 
-import query, queue, messageheader, echo
+from __future__ import absolute_import
+from . import query, queue, messageheader, echo
diff --git a/qpid_tests/broker_0_9/echo.py b/qpid_tests/broker_0_9/echo.py
index 8cd9fab..b8b5535 100644
--- a/qpid_tests/broker_0_9/echo.py
+++ b/qpid_tests/broker_0_9/echo.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.testlib import TestBase
 from qpid.content import Content
 from qpid.harness import Skipped
diff --git a/qpid_tests/broker_0_9/messageheader.py b/qpid_tests/broker_0_9/messageheader.py
index 3d64adf..b6284dd 100644
--- a/qpid_tests/broker_0_9/messageheader.py
+++ b/qpid_tests/broker_0_9/messageheader.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.testlib import TestBase
 
 class MessageHeaderTests(TestBase):
diff --git a/qpid_tests/broker_0_9/query.py b/qpid_tests/broker_0_9/query.py
index cb66d07..ae6c8de 100644
--- a/qpid_tests/broker_0_9/query.py
+++ b/qpid_tests/broker_0_9/query.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.content import Content
diff --git a/qpid_tests/broker_0_9/queue.py b/qpid_tests/broker_0_9/queue.py
index 6ce8323..79981ae 100644
--- a/qpid_tests/broker_0_9/queue.py
+++ b/qpid_tests/broker_0_9/queue.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import time
 from qpid.client import Client, Closed
 from qpid.queue import Empty
diff --git a/qpid_tests/broker_1_0/general.py b/qpid_tests/broker_1_0/general.py
index 9433e86..3f0dbe7 100644
--- a/qpid_tests/broker_1_0/general.py
+++ b/qpid_tests/broker_1_0/general.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import VersionTest
 
diff --git a/qpid_tests/broker_1_0/legacy_exchanges.py b/qpid_tests/broker_1_0/legacy_exchanges.py
index eefa49e..ad196da 100644
--- a/qpid_tests/broker_1_0/legacy_exchanges.py
+++ b/qpid_tests/broker_1_0/legacy_exchanges.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import VersionTest
 
diff --git a/qpid_tests/broker_1_0/selector.py b/qpid_tests/broker_1_0/selector.py
index 323baaa..e979d79 100644
--- a/qpid_tests/broker_1_0/selector.py
+++ b/qpid_tests/broker_1_0/selector.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import VersionTest
 
diff --git a/qpid_tests/broker_1_0/translation.py b/qpid_tests/broker_1_0/translation.py
index a6394fb..b54209c 100644
--- a/qpid_tests/broker_1_0/translation.py
+++ b/qpid_tests/broker_1_0/translation.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+from __future__ import absolute_import
 from qpid.tests.messaging.implementation import *
 from qpid.tests.messaging import VersionTest
 
diff --git a/qpid_tests/broker_1_0/tx.py b/qpid_tests/broker_1_0/tx.py
index eb84f4c..5c05dae 100644
--- a/qpid_tests/broker_1_0/tx.py
+++ b/qpid_tests/broker_1_0/tx.py
@@ -16,6 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 from qpid.client import Client, Closed
 from qpid.queue import Empty
 from qpid.datatypes import Message, RangedSet
diff --git a/qpid_tests/client/client-api-example-tests.py b/qpid_tests/client/client-api-example-tests.py
index 43e0aad..9fb1540 100755
--- a/qpid_tests/client/client-api-example-tests.py
+++ b/qpid_tests/client/client-api-example-tests.py
@@ -28,6 +28,7 @@
 
 """
 
+from __future__ import absolute_import
 import os
 import shlex
 import subprocess
diff --git a/setup.py b/setup.py
index eef6735..87b3000 100755
--- a/setup.py
+++ b/setup.py
@@ -17,6 +17,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
+from __future__ import absolute_import
 import os, re, sys, string, platform
 from distutils.core import setup, Command
 from distutils.command.build import build as _build


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 02/06: QPID-8631: `rfc822.unquote` -> `email.utils.unquote`

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit 36eec7986b3d1f9145a05ffe569d81e10bc96542
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Apr 8 18:02:37 2023 +0200

    QPID-8631: `rfc822.unquote` -> `email.utils.unquote`
---
 qpid/mimetype.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/qpid/mimetype.py b/qpid/mimetype.py
index f512996..1c428b5 100644
--- a/qpid/mimetype.py
+++ b/qpid/mimetype.py
@@ -16,7 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-import re, rfc822
+import re, email.utils
 from lexer import Lexicon, LexError
 from parser import Parser, ParseError
 
@@ -96,7 +96,7 @@ class MimeTypeParser(Parser):
     if self.matches(TOKEN):
       return self.eat().value
     elif self.matches(STRING):
-      return rfc822.unquote(self.eat().value)
+      return email.utils.unquote(self.eat().value)
     else:
       raise ParseError(self.next(), TOKEN, STRING)
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org


[qpid-python] 05/06: QPID-8631: fallback import for `cPickle` or `pickle`

Posted by jd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-python.git

commit 84abc181d2e44760c15178a584aac924b29f0bbc
Author: Jiri Daněk <jd...@redhat.com>
AuthorDate: Sat Apr 8 17:49:28 2023 +0200

    QPID-8631: fallback import for `cPickle` or `pickle`
---
 qpid/ops.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/qpid/ops.py b/qpid/ops.py
index acaadb1..8f29945 100644
--- a/qpid/ops.py
+++ b/qpid/ops.py
@@ -17,7 +17,11 @@
 # under the License.
 #
 from __future__ import print_function
-import os, mllib, cPickle as pickle, sys
+import os, mllib, sys
+try:
+  import cPickle as pickle
+except ImportError:
+  import pickle
 from util import fill
 
 class Primitive(object):


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org