<s> def u_ ( s ) : <EOL> if isinstance ( s , unicode ) : <EOL> return s <EOL> if not isinstance ( s , str ) : <EOL> s = str ( s ) <EOL> return unicode ( s , '<STR_LIT:utf-8>' ) <EOL> def generate_key_for_cached_func ( key_prefix , func , * args , ** kwargs ) : <EOL> """<STR_LIT>""" <EOL> if key_prefix is None : <EOL> key_prefix = [ ] <EOL> else : <EOL> key_prefix = [ key_prefix ] <EOL> module_name = func . __module__ <EOL> func_name = func . __name__ <EOL> kwargs = kwargs . items ( ) <EOL> if kwargs : <EOL> kwargs . sort ( key = lambda t : t [ <NUM_LIT:0> ] ) <EOL> kwargs = map ( lambda t : ( u_ ( t [ <NUM_LIT:0> ] ) , u_ ( t [ <NUM_LIT:1> ] ) ) , kwargs ) <EOL> kwargs = map ( lambda t : u'<STR_LIT:=>' . join ( t ) , kwargs ) <EOL> args = map ( lambda arg : u_ ( arg ) , args ) <EOL> return u'<STR_LIT:U+0020>' . join ( key_prefix + [ module_name , func_name ] + args + kwargs ) </s>
