Skip to content

Commit d335efa

Browse files
authored
Merge pull request #58 from marc-portier/bug/53
fixing #53 -- better support for native types like int, float, ...
2 parents 61e7dad + afe23f8 commit d335efa

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

tests/test_uritemplate.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,5 +631,29 @@ def test_variables(self):
631631
URITemplate(self.uri).variable_names)
632632

633633

634+
class TestNativeTypeSupport(TestCase):
635+
context = {
636+
'zero': 0,
637+
'one': 1,
638+
'digits': list(range(10)),
639+
'a_float': 3.1415,
640+
}
641+
642+
def test_expand(self):
643+
self.assertEqual(expand('{zero}', self.context), "0")
644+
self.assertEqual(expand('{one}', self.context), "1")
645+
self.assertEqual(expand('{digits}', self.context),
646+
"0,1,2,3,4,5,6,7,8,9")
647+
self.assertEqual(expand('{?digits,one}', self.context),
648+
"?digits=0,1,2,3,4,5,6,7,8,9&one=1")
649+
self.assertEqual(expand('{/digits}', self.context),
650+
"/0,1,2,3,4,5,6,7,8,9")
651+
self.assertEqual(expand('{/digits*}', self.context),
652+
"/0/1/2/3/4/5/6/7/8/9")
653+
# explicit testing for issue #53
654+
self.assertEqual(expand('{/zero}', self.context), "/0")
655+
self.assertEqual(expand('{/zero,a_float}', self.context), "/0/3.1415")
656+
657+
634658
if __name__ == '__main__':
635659
main()

uritemplate/variable.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,12 @@ def _label_path_expansion(self, name, value, explode, prefix):
191191
join_str = self.join_str
192192
safe = self.safe
193193

194-
if value is None or (len(value) == 0 and value != ''):
194+
if (
195+
value is None or (
196+
not isinstance(value, (str, int, float, complex))
197+
and len(value) == 0
198+
)
199+
):
195200
return None
196201

197202
tuples, items = is_list_of_tuples(value)

0 commit comments

Comments
 (0)