Skip to content
Snippets Groups Projects
Commit 82dbb5a3 authored by Gavin M. Roy's avatar Gavin M. Roy
Browse files

Common cross-python version import of queue

parent 6ed8c5b1
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -9,6 +9,12 @@ try:
except ImportError:
import urlparse as _urlparse
 
# Cross Python Version queue module export
try:
import Queue as queue
except ImportError:
import queue
from pamqp import PYTHON3
 
Parsed = collections.namedtuple('Parsed',
Loading
Loading
@@ -17,6 +23,13 @@ Parsed = collections.namedtuple('Parsed',
 
 
def maybe_utf8_encode(value):
"""Cross-python version method that will attempt to utf-8 encode a string.
:param mixed value: The value to maybe encode
:return: str
"""
if PYTHON3:
if is_string(value) and not isinstance(value, bytes):
return bytes(value, 'utf-8')
Loading
Loading
@@ -27,23 +40,47 @@ def maybe_utf8_encode(value):
 
 
def parse_qs(query_string):
"""Cross-python version method for parsing a query string.
:param str query_string: The query string to parse
:return: tuple
"""
return _urlparse.parse_qs(query_string)
 
 
def urlparse(url):
"""Parse a URL, returning a named tuple result.
:param str url: The URL to parse
:rtype: collections.namedtuple
"""
value = 'http%s' % url[4:] if url[:4] == 'amqp' else url
parsed = _urlparse.urlparse(value)
return Parsed(parsed.scheme.replace('http', 'amqp'), parsed.netloc,
parsed.path, parsed.params, parsed.query, parsed.fragment,
_urlparse.unquote(parsed.username), _urlparse.unquote(parsed.password), parsed.hostname,
parsed.port)
_urlparse.unquote(parsed.username),
_urlparse.unquote(parsed.password),
parsed.hostname, parsed.port)
 
 
def unquote(value):
"""Cross-python version method for unquoting a URI value.
:param str value: The value to unquote
:rtype: str
"""
return _urlparse.unquote(value)
 
 
def is_string(value):
"""Check to see if the value is a string in Python 2 and 3.
:param bytes|str|unicode value: The value to check
:rtype: bool
"""
checks = [isinstance(value, bytes), isinstance(value, str)]
if not PYTHON3:
checks.append(isinstance(value, unicode))
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment