aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY.rst2
-rw-r--r--MANIFEST.in4
-rw-r--r--tox.ini4
-rw-r--r--uritemplate/template.py47
4 files changed, 36 insertions, 21 deletions
diff --git a/HISTORY.rst b/HISTORY.rst
index 83be429..bf23379 100644
--- a/HISTORY.rst
+++ b/HISTORY.rst
@@ -8,6 +8,8 @@ Changelog
- If there is no value or default given, simply return an empty string
+- Fix sdist
+
0.1.0 - 2013-05-14
------------------
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..c36f0c7
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,4 @@
+include README.rst
+include HISTORY.rst
+include LICENSE
+include AUTHORS.rst
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..1234a0e
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,4 @@
+[tox]
+envlist = py26,py27,py32,py33
+[testenv]
+commands = python test_uritemplate.py
diff --git a/uritemplate/template.py b/uritemplate/template.py
index 3c4f9cd..fb62adb 100644
--- a/uritemplate/template.py
+++ b/uritemplate/template.py
@@ -211,7 +211,7 @@ class URIVariable(object):
if value is None or (len(value) == 0 and value != ""):
return None
- tuples = is_list_of_tuples(value)
+ tuples, items = is_list_of_tuples(value)
safe = self.safe
if isinstance(value, (list, tuple)) and not tuples:
@@ -224,7 +224,7 @@ class URIVariable(object):
return '%s=%s' % (name, value)
if isinstance(value, (dict, collections.MutableMapping)) or tuples:
- items = value if tuples else sorted(value.items())
+ items = items or sorted(value.items())
if explode:
return self.join_str.join(
'%s=%s' % (
@@ -256,9 +256,9 @@ class URIVariable(object):
if value is None or (len(value) == 0 and value != ''):
return None
- tuples = is_list_of_tuples(value)
+ tuples, items = is_list_of_tuples(value)
- if isinstance(value, (list, tuple)) and not tuples:
+ if list_test(value) and not tuples:
if not explode:
join_str = ','
@@ -267,8 +267,8 @@ class URIVariable(object):
)
return expanded if expanded else None
- if isinstance(value, (dict, collections.MutableMapping)) or tuples:
- items = value if tuples else sorted(value.items())
+ if dict_test(value) or tuples:
+ items = items or sorted(value.items())
format_str = '%s=%s'
if not explode:
format_str = '%s,%s'
@@ -295,9 +295,9 @@ class URIVariable(object):
if self.operator == '?':
join_str = '&'
- tuples = is_list_of_tuples(value)
+ tuples, items = is_list_of_tuples(value)
- if isinstance(value, (list, tuple)) and not tuples:
+ if list_test(value) and not tuples:
if explode:
expanded = join_str.join(
'%s=%s' % (
@@ -309,8 +309,8 @@ class URIVariable(object):
value = ','.join(quote(v, safe) for v in value)
return '%s=%s' % (name, value)
- if isinstance(value, (dict, collections.MutableMapping)) or tuples:
- items = value if tuples else sorted(value.items())
+ if dict_test(value) or tuples:
+ items = items or sorted(value.items())
if explode:
return join_str.join(
@@ -336,17 +336,14 @@ class URIVariable(object):
if value is None:
return None
- tuples = is_list_of_tuples(value)
+ tuples, items = is_list_of_tuples(value)
- if isinstance(value, (list, tuple)) and not tuples:
+ if list_test(value) and not tuples:
return ','.join(quote(v, self.safe) for v in value)
- if isinstance(value, (dict, collections.MutableMapping)) or tuples:
- items = value if tuples else sorted(value.items())
- if explode:
- format_str = '%s=%s'
- else:
- format_str = '%s,%s'
+ if dict_test(value) or tuples:
+ items = items or sorted(value.items())
+ format_str = '%s=%s' if explode else '%s,%s'
return ','.join(
format_str % (
@@ -399,11 +396,19 @@ class URIVariable(object):
def is_list_of_tuples(value):
if not isinstance(value, (list, tuple)):
- return False
+ return False, None
try:
dict(value)
except:
- return False
+ return False, None
else:
- return True
+ return True, value
+
+
+def list_test(value):
+ return isinstance(value, (list, tuple))
+
+
+def dict_test(value):
+ return isinstance(value, (dict, collections.MutableMapping))