Skip to content

Commit 24bdde3

Browse files
committed
fix: always render *args and **kwargs in signature
1 parent b261d41 commit 24bdde3

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

quartodoc/renderers/md_renderer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ def render(self, el: dc.Parameter):
311311
elif has_default:
312312
res = f"{glob}{el.name}={el.default}"
313313
else:
314-
res = el.name
314+
res = f"{glob}{el.name}"
315315

316316
return sanitize(res)
317317

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
def no_annotations(a, b=1, *args, c, d=2, **kwargs):
2+
"""A function with a signature"""
3+
4+
5+
def yes_annotations(
6+
a: int, b: int = 1, *args: list[str], c: int, d: int, **kwargs: dict[str, str]
7+
):
8+
"""A function with a signature"""

quartodoc/tests/test_renderers.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import pytest
2+
3+
from quartodoc.renderers import MdRenderer
4+
from quartodoc import get_object
5+
6+
# TODO: tests in test_basic.py also use the renderer, so we should move them here.
7+
8+
9+
@pytest.fixture
10+
def renderer():
11+
return MdRenderer()
12+
13+
14+
def test_render_param_kwargs(renderer):
15+
f = get_object("quartodoc.tests.example_signature.no_annotations")
16+
res = renderer.render(f.parameters)
17+
18+
assert res == "a, b=1, *args, *, c, d=2, **kwargs"
19+
20+
21+
def test_render_param_kwargs_annotated():
22+
renderer = MdRenderer(show_signature_annotations=True)
23+
f = get_object("quartodoc.tests.example_signature.yes_annotations")
24+
25+
res = renderer.render(f.parameters)
26+
27+
assert (
28+
res
29+
== "a: int, b: int = 1, *args: list\\[str\\], *, c: int, d: int, **kwargs: dict\\[str, str\\]"
30+
)

0 commit comments

Comments
 (0)