コード例 #1
0
    def decorator(decorated: F) -> F:
        # collecting docstring and docstring templates
        docstring_components: list[str | Callable] = []
        if decorated.__doc__:
            docstring_components.append(dedent(decorated.__doc__))

        for docstring in docstrings:
            if hasattr(docstring, "_docstring_components"):
                # error: Item "str" of "Union[str, Callable[..., Any]]" has no attribute
                # "_docstring_components"
                # error: Item "function" of "Union[str, Callable[..., Any]]" has no
                # attribute "_docstring_components"
                docstring_components.extend(
                    docstring._docstring_components  # type: ignore[union-attr]
                )
            elif isinstance(docstring, str) or docstring.__doc__:
                docstring_components.append(docstring)

        # formatting templates and concatenating docstring
        decorated.__doc__ = "".join(
            [
                component.format(**params)
                if isinstance(component, str)
                else dedent(component.__doc__ or "")
                for component in docstring_components
            ]
        )

        # error: "F" has no attribute "_docstring_components"
        decorated._docstring_components = (  # type: ignore[attr-defined]
            docstring_components
        )
        return decorated
コード例 #2
0
def set_function_name(f: F, name: str, cls) -> F:
    """
    Bind the name/qualname attributes of the function.
    """
    f.__name__ = name
    f.__qualname__ = f"{cls.__name__}.{name}"
    f.__module__ = cls.__module__
    return f
コード例 #3
0
    def decorator(decorated: F) -> F:
        # collecting docstring and docstring templates_old
        docstring_components: List[Union[str, Callable]] = []
        if decorated.__doc__:
            docstring_components.append(dedent(decorated.__doc__))

        for docstring in docstrings:
            if hasattr(docstring, "_docstring_components"):
                docstring_components.extend(
                    docstring._docstring_components  # type: ignore
                )
            elif isinstance(docstring, str) or docstring.__doc__:
                docstring_components.append(docstring)

        # formatting templates_old and concatenating docstring
        decorated.__doc__ = "".join([
            component.format(**params)
            if isinstance(component, str) else dedent(component.__doc__ or "")
            for component in docstring_components
        ])

        decorated._docstring_components = docstring_components  # type: ignore
        return decorated
コード例 #4
0
ファイル: _decorators.py プロジェクト: wendellwilson/pandas
    def decorate(func: F) -> F:
        @wraps(func)
        def wrapper(*args, **kwargs) -> Callable[..., Any]:
            return func(*args, **kwargs)

        kind = inspect.Parameter.POSITIONAL_OR_KEYWORD
        params = [
            inspect.Parameter("self", kind),
            inspect.Parameter(name, kind, default=None),
            inspect.Parameter("index", kind, default=None),
            inspect.Parameter("columns", kind, default=None),
            inspect.Parameter("axis", kind, default=None),
        ]

        for pname, default in extra_params:
            params.append(inspect.Parameter(pname, kind, default=default))

        sig = inspect.Signature(params)

        # https://github.com/python/typing/issues/598
        func.__signature__ = sig  # type: ignore
        return cast(F, wrapper)
コード例 #5
0
 def __call__(self, func: F) -> F:
     func.__doc__ = func.__doc__ if func.__doc__ else ""
     self.addendum = self.addendum if self.addendum else ""
     docitems = [func.__doc__, self.addendum]
     func.__doc__ = dedent(self.join.join(docitems))
     return func
コード例 #6
0
 def __call__(self, func: F) -> F:
     func.__doc__ = func.__doc__ and func.__doc__ % self.params
     return func