def make_repr(obj, params=None, keywords=None, data=None, name=None,<EOL>reprs=None):
opts = []<EOL>if params is not None:<EOL><INDENT>opts.append('<STR_LIT:U+002CU+0020>'.join(<EOL>_repr_attr(obj, attr, data, reprs) for attr in params))<EOL><DEDENT>if keywords is not None:<EOL><INDENT>opts.append('<STR_LIT:U+002CU+0020>'.join(<EOL>'<STR_LIT>' % (attr, _repr_attr(obj, attr, data, reprs))<EOL>for attr in keywords))<EOL><DEDENT>if name is None:<EOL><INDENT>name = class_name(obj)<EOL><DEDENT>return '<STR_LIT>' % (name, '<STR_LIT:U+002CU+0020>'.join(opts))<EOL>
Generates a string of object initialization code style.  It is useful
    for custom __repr__ methods::

       class Example(object):

           def __init__(self, param, keyword=None):
               self.param = param
               self.keyword = keyword

           def __repr__(self):
               return make_repr(self, ['param'], ['keyword'])

    See the representation of example object::

       >>> Example('hello', keyword='world')
       Example('hello', keyword='world')