From e1f82b01ceac8533f52866ae6cb464a7ae5eb033 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 7 Dec 2012 16:12:48 -0500 Subject: [PATCH] Add sample() method to ArrayType and DictType Update ArrayType and DictType so they have sample() methods for the sphinxext code to use when documenting nested types. --- wsme/tests/test_types.py | 12 ++++++++++++ wsme/types.py | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/wsme/tests/test_types.py b/wsme/tests/test_types.py index cbfb45d..0784aa5 100644 --- a/wsme/tests/test_types.py +++ b/wsme/tests/test_types.py @@ -355,3 +355,15 @@ class TestTypes(unittest.TestCase): def test_array_eq(self): l = [types.ArrayType(str)] assert types.ArrayType(str) in l + + def test_array_sample(self): + s = types.ArrayType(str).sample() + assert isinstance(s, list) + assert s + assert s[0] == '' + + def test_dict_sample(self): + s = types.DictType(str, str).sample() + assert isinstance(s, dict) + assert s + assert s == {'': ''} diff --git a/wsme/types.py b/wsme/types.py index c88acf9..8758569 100644 --- a/wsme/types.py +++ b/wsme/types.py @@ -34,6 +34,9 @@ class ArrayType(object): return isinstance(other, ArrayType) \ and self.item_type == other.item_type + def sample(self): + return [getattr(self.item_type, 'sample', self.item_type)()] + @property def item_type(self): if isinstance(self._item_type, weakref.ref): @@ -67,6 +70,11 @@ class DictType(object): def __hash__(self): return hash((self.key_type, self.value_type)) + def sample(self): + key = getattr(self.key_type, 'sample', self.key_type)() + value = getattr(self.value_type, 'sample', self.value_type)() + return {key: value} + @property def value_type(self): if isinstance(self._value_type, weakref.ref):