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:13 UTC

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

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