def mutable(obj):
base_cls = type(obj)<EOL>class Proxy(base_cls):<EOL><INDENT>def __getattribute__(self, name):<EOL><INDENT>try:<EOL><INDENT>return super().__getattribute__(name)<EOL><DEDENT>except AttributeError:<EOL><INDENT>return getattr(obj, name)<EOL><DEDENT><DEDENT><DEDENT>update_wrapper(Proxy, base_cls, updated = ())<EOL>return Proxy()<EOL>
return a mutable proxy for the `obj`.

all modify on the proxy will not apply on origin object.