@@ -61,7 +61,6 @@ def __call__(self, obj, level):
61
61
62
62
class Serializable (object ): # pylint: disable=too-few-public-methods
63
63
_MARKDOWN_RESULT_STRING_CLASSES = (
64
- CryptoDataParamsBase ,
65
64
ipaddress .IPv4Network ,
66
65
ipaddress .IPv6Network ,
67
66
urllib3 .util .url .Url ,
@@ -143,7 +142,7 @@ def _json_traverse(obj, result_func):
143
142
])
144
143
elif hasattr (obj , '__dict__' ):
145
144
result = Serializable ._json_traverse (obj .__dict__ , result_func )
146
- elif isinstance (obj , (list , tuple )):
145
+ elif isinstance (obj , (list , tuple , frozenset , set )):
147
146
result = [Serializable ._json_traverse (item , result_func ) for item in obj ]
148
147
else :
149
148
result = result_func (obj )
@@ -227,7 +226,7 @@ def _markdown_is_directly_printable(obj):
227
226
return not isinstance (obj , enum .Enum ) and isinstance (obj , six .string_types + six .integer_types + (float , ))
228
227
229
228
@classmethod
230
- def _markdown_result (cls , obj , level = 0 ): # pylint: disable=too-many-branches
229
+ def _markdown_result (cls , obj , level = 0 ): # pylint: disable=too-many-branches,too-many-return-statements
231
230
if obj is None :
232
231
result = cls .post_text_encoder ('n/a' , level )
233
232
elif isinstance (obj , bool ):
@@ -245,17 +244,19 @@ def _markdown_result(cls, obj, level=0): # pylint: disable=too-many-branches
245
244
return cls .post_text_encoder (obj .value , level )
246
245
247
246
return cls .post_text_encoder (obj .name , level )
248
- elif attr .has (type (obj )):
249
- result = cls ._markdown_result_complex (obj , level )
250
247
elif isinstance (obj , cls ._MARKDOWN_RESULT_STRING_CLASSES ):
251
248
return False , str (obj )
252
249
elif isinstance (obj , datetime .timedelta ):
253
250
return False , str (obj .seconds )
251
+ elif isinstance (obj , CryptoDataParamsBase ) and hasattr (obj , '__str__' ):
252
+ return False , str (obj )
253
+ elif attr .has (type (obj )):
254
+ result = cls ._markdown_result_complex (obj , level )
254
255
elif hasattr (obj , '_asdict' ):
255
256
result = cls ._markdown_result (obj ._asdict (), level )
256
257
elif hasattr (obj , '__dict__' ) or isinstance (obj , dict ):
257
258
result = cls ._markdown_result_complex (obj , level )
258
- elif isinstance (obj , (list , tuple , set , ArrayBase )):
259
+ elif isinstance (obj , (list , tuple , frozenset , set , ArrayBase )):
259
260
result = cls ._markdown_result_list (obj , level )
260
261
elif isinstance (obj , (bytes , bytearray )):
261
262
result = cls .post_text_encoder (bytes_to_hex_string (obj , separator = ':' , lowercase = False ), level )
0 commit comments