From bea812e43b7cfe4fb4e4cab88ef9a71f78fd895f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Sch=C3=A4fer?= <david.schaefer@ufz.de> Date: Thu, 28 Mar 2024 15:49:57 +0100 Subject: [PATCH] fix docurator for functions with empty parameter lists --- saqc/lib/docs.py | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/saqc/lib/docs.py b/saqc/lib/docs.py index 99f194e35..99f7848ac 100644 --- a/saqc/lib/docs.py +++ b/saqc/lib/docs.py @@ -4,9 +4,15 @@ from __future__ import annotations -from typing import Any, TypedDict +from typing import TypedDict -from docstring_parser import DocstringParam, DocstringReturns, compose, parse +from docstring_parser import ( + DocstringParam, + DocstringReturns, + DocstringStyle, + compose, + parse, +) class ParamDict(TypedDict): @@ -50,18 +56,17 @@ COMMON = { } -class FunctionParam(DocstringParam): - def __init__( - self, name: str, typehint: str, description: str, optional: bool = False - ): - super().__init__( - args=["param", name], - description=description, - arg_name=name, - type_name=typehint, - is_optional=optional, - default=None, - ) +def toParameter( + name: str, typehint: str, description: str, optional: bool = False +) -> DocstringParam: + return DocstringParam( + args=["param", name], + description=description, + arg_name=name, + type_name=typehint, + is_optional=optional, + default=None, + ) def docurator(func, defaults: dict[str, ParamDict] | None = None): @@ -76,7 +81,7 @@ def docurator(func, defaults: dict[str, ParamDict] | None = None): return_name="SaQC", ) - tree = parse(func.__doc__) + tree = parse(func.__doc__, style=DocstringStyle.NUMPYDOC) if tree.returns: raise ValueError( @@ -84,7 +89,7 @@ def docurator(func, defaults: dict[str, ParamDict] | None = None): ) # rewrite parameters - meta = [FunctionParam(**{**COMMON["field"], **defaults.get("field", {})})] + meta = [toParameter(**{**COMMON["field"], **defaults.get("field", {})})] for p in tree.params: if p.arg_name in COMMON: raise ValueError( @@ -94,7 +99,7 @@ def docurator(func, defaults: dict[str, ParamDict] | None = None): # additional parameters for p in ("target", "dfilter", "flag"): - meta.append(FunctionParam(**{**COMMON[p], **defaults.get(p, {})})) + meta.append(toParameter(**{**COMMON[p], **defaults.get(p, {})})) # return sections meta.append(docstring_return) @@ -107,4 +112,5 @@ def docurator(func, defaults: dict[str, ParamDict] | None = None): tree.meta = meta func.__doc__ = compose(tree) + return func -- GitLab