def most_exposes(python_type):
_exposes = set()<EOL>try:<EOL><INDENT>do_not_expose = set(python_type.__dir__(object) +['<STR_LIT>', '<STR_LIT>', '<STR_LIT>']) <EOL>empty = python_type.__new__(python_type) <EOL><DEDENT>except AttributeError: <EOL><INDENT>try:<EOL><INDENT>_exposes = python_type.__slots__<EOL><DEDENT>except AttributeError:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>except TypeError: <EOL><INDENT>for _workaround in storable_workarounds:<EOL><INDENT>try:<EOL><INDENT>_exposes = _workaround(python_type)<EOL><DEDENT>except (SystemExit, KeyboardInterrupt):<EOL><INDENT>raise<EOL><DEDENT>except:<EOL><INDENT>pass<EOL><DEDENT>else:<EOL><INDENT>break<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>all_members = empty.__dir__() <EOL>for attr in all_members:<EOL><INDENT>if attr in do_not_expose:<EOL><INDENT>continue<EOL><DEDENT>try: <EOL><INDENT>getattr(empty, attr)<EOL><DEDENT>except AttributeError as e: <EOL><INDENT>if e.args:<EOL><INDENT>msg = e.args[<NUM_LIT:0>]<EOL>if msg == attr or msg.endswith("<STR_LIT>".format(attr)):<EOL><INDENT>_exposes.add(attr)<EOL><DEDENT><DEDENT><DEDENT>except (SystemExit, KeyboardInterrupt):<EOL><INDENT>raise<EOL><DEDENT>except:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>for attr in ('<STR_LIT>',):<EOL><INDENT>if attr in all_members:<EOL><INDENT>_exposes.add(attr)<EOL><DEDENT><DEDENT><DEDENT>return list(_exposes)<EOL>
Core engine for the automatic generation of storable instances.

Finds the attributes exposed by the objects of a given type.

Mostly Python3-only.
Does not handle types which `__new__` method requires extra arguments either.

Arguments:

    python_type (type): object type.

Returns:

    list: attributes exposed.