/opt/imh-python/lib/python3.9/site-packages/automat
NameSizeModeActions
_test/-0755rm
__pycache__/-0755rm
py.typed00644editdlrm
_core.py66630644editdlrm
_discover.py51970644editdlrm
_introspection.py14410644editdlrm
_methodical.py174670644editdlrm
_runtimeproto.py16540644editdlrm
_typed.py242040644editdlrm
_visualize.py65120644editdlrm
__init__.py3560644editdlrm
Edit: /opt/imh-python/lib/python3.9/site-packages/automat/_introspection.py (1441B)
""" Python introspection helpers. """ from types import CodeType as code, FunctionType as function def copycode(template, changes): if hasattr(code, "replace"): return template.replace(**{"co_" + k: v for k, v in changes.items()}) names = [ "argcount", "nlocals", "stacksize", "flags", "code", "consts", "names", "varnames", "filename", "name", "firstlineno", "lnotab", "freevars", "cellvars", ] if hasattr(code, "co_kwonlyargcount"): names.insert(1, "kwonlyargcount") if hasattr(code, "co_posonlyargcount"): # PEP 570 added "positional only arguments" names.insert(1, "posonlyargcount") values = [changes.get(name, getattr(template, "co_" + name)) for name in names] return code(*values) def copyfunction(template, funcchanges, codechanges): names = [ "globals", "name", "defaults", "closure", ] values = [ funcchanges.get(name, getattr(template, "__" + name + "__")) for name in names ] return function(copycode(template.__code__, codechanges), *values) def preserveName(f): """ Preserve the name of the given function on the decorated function. """ def decorator(decorated): return copyfunction(decorated, dict(name=f.__name__), dict(name=f.__name__)) return decorator