Docstrings and version bump
This commit is contained in:
parent
2fe369fdf8
commit
0e585cbf64
28
speedtest.py
28
speedtest.py
|
@ -36,7 +36,7 @@ except ImportError:
|
||||||
gzip = None
|
gzip = None
|
||||||
GZIP_BASE = object
|
GZIP_BASE = object
|
||||||
|
|
||||||
__version__ = '1.0.7'
|
__version__ = '2.0.0a'
|
||||||
|
|
||||||
|
|
||||||
class FakeShutdownEvent(object):
|
class FakeShutdownEvent(object):
|
||||||
|
@ -333,6 +333,8 @@ def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
|
||||||
is used. If *source_address* is set it must be a tuple of (host, port)
|
is used. If *source_address* is set it must be a tuple of (host, port)
|
||||||
for the socket to bind as a source address before making the connection.
|
for the socket to bind as a source address before making the connection.
|
||||||
An host of '' or port 0 tells the OS to use the default.
|
An host of '' or port 0 tells the OS to use the default.
|
||||||
|
|
||||||
|
Largely vendored from Python 2.7, modified to work with Python 2.4
|
||||||
"""
|
"""
|
||||||
|
|
||||||
host, port = address
|
host, port = address
|
||||||
|
@ -361,6 +363,9 @@ def create_connection(address, timeout=_GLOBAL_DEFAULT_TIMEOUT,
|
||||||
|
|
||||||
|
|
||||||
class SpeedtestHTTPConnection(HTTPConnection):
|
class SpeedtestHTTPConnection(HTTPConnection):
|
||||||
|
"""Custom HTTPConnection to support source_address across
|
||||||
|
Python 2.4 - Python 3
|
||||||
|
"""
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
source_address = kwargs.pop('source_address', None)
|
source_address = kwargs.pop('source_address', None)
|
||||||
context = kwargs.pop('context', None)
|
context = kwargs.pop('context', None)
|
||||||
|
@ -391,6 +396,9 @@ class SpeedtestHTTPConnection(HTTPConnection):
|
||||||
if HTTPSConnection:
|
if HTTPSConnection:
|
||||||
class SpeedtestHTTPSConnection(HTTPSConnection,
|
class SpeedtestHTTPSConnection(HTTPSConnection,
|
||||||
SpeedtestHTTPConnection):
|
SpeedtestHTTPConnection):
|
||||||
|
"""Custom HTTPSConnection to support source_address across
|
||||||
|
Python 2.4 - Python 3
|
||||||
|
"""
|
||||||
def connect(self):
|
def connect(self):
|
||||||
"Connect to a host on a given (SSL) port."
|
"Connect to a host on a given (SSL) port."
|
||||||
|
|
||||||
|
@ -404,6 +412,12 @@ if HTTPSConnection:
|
||||||
|
|
||||||
|
|
||||||
def _build_connection(connection, source_address, timeout, context=None):
|
def _build_connection(connection, source_address, timeout, context=None):
|
||||||
|
"""Cross Python 2.4 - Python 3 callable to build an ``HTTPConnection`` or
|
||||||
|
``HTTPSConnection`` with the args we need
|
||||||
|
|
||||||
|
Called from ``http(s)_open`` methods of ``SpeedtestHTTPHandler`` or
|
||||||
|
``SpeedtestHTTPSHandler``
|
||||||
|
"""
|
||||||
def inner(host, **kwargs):
|
def inner(host, **kwargs):
|
||||||
kwargs.update({
|
kwargs.update({
|
||||||
'source_address': source_address,
|
'source_address': source_address,
|
||||||
|
@ -416,6 +430,9 @@ def _build_connection(connection, source_address, timeout, context=None):
|
||||||
|
|
||||||
|
|
||||||
class SpeedtestHTTPHandler(AbstractHTTPHandler):
|
class SpeedtestHTTPHandler(AbstractHTTPHandler):
|
||||||
|
"""Custom ``HTTPHandler`` that can build a ``HTTPConnection`` with the
|
||||||
|
args we need for ``source_address`` and ``timeout``
|
||||||
|
"""
|
||||||
def __init__(self, debuglevel=0, source_address=None, timeout=10):
|
def __init__(self, debuglevel=0, source_address=None, timeout=10):
|
||||||
AbstractHTTPHandler.__init__(self, debuglevel)
|
AbstractHTTPHandler.__init__(self, debuglevel)
|
||||||
self.source_address = source_address
|
self.source_address = source_address
|
||||||
|
@ -435,6 +452,9 @@ class SpeedtestHTTPHandler(AbstractHTTPHandler):
|
||||||
|
|
||||||
|
|
||||||
class SpeedtestHTTPSHandler(AbstractHTTPHandler):
|
class SpeedtestHTTPSHandler(AbstractHTTPHandler):
|
||||||
|
"""Custom ``HTTPSHandler`` that can build a ``HTTPSConnection`` with the
|
||||||
|
args we need for ``source_address`` and ``timeout``
|
||||||
|
"""
|
||||||
def __init__(self, debuglevel=0, context=None, source_address=None,
|
def __init__(self, debuglevel=0, context=None, source_address=None,
|
||||||
timeout=10):
|
timeout=10):
|
||||||
AbstractHTTPHandler.__init__(self, debuglevel)
|
AbstractHTTPHandler.__init__(self, debuglevel)
|
||||||
|
@ -457,6 +477,12 @@ class SpeedtestHTTPSHandler(AbstractHTTPHandler):
|
||||||
|
|
||||||
|
|
||||||
def build_opener(source_address=None, timeout=10):
|
def build_opener(source_address=None, timeout=10):
|
||||||
|
"""Function similar to ``urllib2.build_opener`` that will build
|
||||||
|
an ``OpenerDirector`` with the explicit handlers we want,
|
||||||
|
``source_address`` for binding, ``timeout`` and our custom
|
||||||
|
`User-Agent`
|
||||||
|
"""
|
||||||
|
|
||||||
if source_address:
|
if source_address:
|
||||||
source_address_tuple = (source_address, 0)
|
source_address_tuple = (source_address, 0)
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue