def __init__()

in chz/tiepin.py [0:0]


    def __init__(self, fn: typing.Callable, strip_self: bool = False):
        self.fn = fn
        self._sig = inspect.signature(fn)

        self.pos = []
        self.kwonly = {}
        self.varpos = None
        self.varkw = None

        for param in self._sig.parameters.values():
            if param.kind in {param.POSITIONAL_OR_KEYWORD, param.POSITIONAL_ONLY}:
                self.pos.append(param)
            elif param.kind is param.KEYWORD_ONLY:
                self.kwonly[param.name] = param
            elif param.kind is param.VAR_POSITIONAL and param.name != "__chz_args":
                self.varpos = param
            elif param.kind is param.VAR_KEYWORD:
                self.varkw = param

        if strip_self:
            if self.pos[0].name != "self":
                raise ValueError(f"Cannot strip self from signature of {self.fn}")
            self.pos = self.pos[1:]

        self.ret = self._sig.return_annotation
        if isinstance(self.ret, str):
            self.ret = eval_in_context(self.ret, self.fn)