#NEWLINE# def _tag( value ) : #NEWLINE# #INDENT# if isinstance ( value , uuid . UUID ) : #NEWLINE# #INDENT# return { #NEWLINE# #INDENT# ' u' : value . hex , #NEWLINE# #UNINDENT# } #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( value , bytes ) : #NEWLINE# #INDENT# return { #NEWLINE# #INDENT# ' b' : b64encode ( value ) . decode ( 'ascii' ) , #NEWLINE# #UNINDENT# } #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if callable ( getattr ( value , '__json__' , None ) ) : #NEWLINE# #INDENT# return _tag ( value . __json__ ( ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( value , ( list , tuple ) ) : #NEWLINE# #INDENT# return [ _tag ( x ) for x in value ] #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( value , dict ) : #NEWLINE# #INDENT# return dict ( ( ( k , _tag ( v ) ) for ( k , v ) in value . items ( ) ) ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# #UNINDENT# return value