Skip to content

Commit 6153f59

Browse files
committed
Add annotations to DoctypeTransformer
1 parent cb811f4 commit 6153f59

1 file changed

Lines changed: 119 additions & 20 deletions

File tree

src/docstub/_docstrings.py

Lines changed: 119 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -295,35 +295,29 @@ def doctype_to_annotation(self, doctype):
295295
self._collected_imports = None
296296
self._unknown_qualnames = None
297297

298-
def __default__(self, data, children, meta):
299-
"""Unpack children of rule nodes by default.
300-
298+
def annotation_with_meta(self, tree):
299+
"""
301300
Parameters
302301
----------
303-
data : lark.Token
304-
The rule-token of the current node.
305-
children : list[lark.Token]
306-
The children of the current node.
307-
meta : lark.tree.Meta
308-
Meta information for the current node.
302+
tree : lark.Tree
309303
310304
Returns
311305
-------
312-
out : lark.Token or list[lark.Token]
313-
Either a token or list of tokens.
306+
out : str
314307
"""
315-
if isinstance(children, list) and len(children) == 1:
316-
out = children[0]
317-
out.type = data.upper() # Turn rule into "token"
318-
else:
319-
out = children
320-
return out
321-
322-
def annotation_with_meta(self, tree):
323308
out = " | ".join(tree.children)
324309
return out
325310

326311
def qualname(self, tree):
312+
"""
313+
Parameters
314+
----------
315+
tree : lark.Tree
316+
317+
Returns
318+
-------
319+
out : lark.Token
320+
"""
327321
children = tree.children
328322
_qualname = ".".join(children)
329323

@@ -346,21 +340,57 @@ def qualname(self, tree):
346340
return _qualname
347341

348342
def rst_role(self, tree):
343+
"""
344+
Parameters
345+
----------
346+
tree : lark.Tree
347+
348+
Returns
349+
-------
350+
out : lark.Token
351+
"""
349352
qualname = _find_one_token(tree, name="QUALNAME")
350353
return qualname
351354

352355
def or_expression(self, tree):
356+
"""
357+
Parameters
358+
----------
359+
tree : lark.Tree
360+
361+
Returns
362+
-------
363+
out : str
364+
"""
353365
out = " | ".join(tree.children)
354366
return out
355367

356368
def subscription_expression(self, tree):
369+
"""
370+
Parameters
371+
----------
372+
tree : lark.Tree
373+
374+
Returns
375+
-------
376+
out : str
377+
"""
357378
_container, *_content = tree.children
358379
_content = ", ".join(_content)
359380
assert _content
360381
out = f"{_container}[{_content}]"
361382
return out
362383

363384
def literal_expression(self, tree):
385+
"""
386+
Parameters
387+
----------
388+
tree : lark.Tree
389+
390+
Returns
391+
-------
392+
out : str
393+
"""
364394
out = ", ".join(tree.children)
365395
out = f"Literal[{out}]"
366396
if self.types_db is not None:
@@ -370,13 +400,31 @@ def literal_expression(self, tree):
370400
return out
371401

372402
def array_expression(self, tree):
403+
"""
404+
Parameters
405+
----------
406+
tree : lark.Tree
407+
408+
Returns
409+
-------
410+
out : str
411+
"""
373412
name = _find_one_token(tree, name="ARRAY_NAME")
374413
children = [child for child in tree.children if child != name]
375414
if children:
376415
name = f"{name}[{', '.join(children)}]"
377-
return name
416+
return str(name)
378417

379418
def array_name(self, tree):
419+
"""
420+
Parameters
421+
----------
422+
tree : lark.Tree
423+
424+
Returns
425+
-------
426+
out : lark.Token
427+
"""
380428
# Treat `array_name` as `qualname`, but mark it as an array name,
381429
# so we know which one to treat as the container in `array_expression`
382430
# This currently relies on a hack that only allows specific names
@@ -386,17 +434,68 @@ def array_name(self, tree):
386434
return qualname
387435

388436
def shape(self, tree):
437+
"""
438+
Parameters
439+
----------
440+
tree : lark.Tree
441+
442+
Returns
443+
-------
444+
out : lark.visitors._DiscardType
445+
"""
389446
logger.debug("dropping shape information")
390447
return lark.Discard
391448

392449
def optional(self, tree):
450+
"""
451+
Parameters
452+
----------
453+
tree : lark.Tree
454+
455+
Returns
456+
-------
457+
out : lark.visitors._DiscardType
458+
"""
393459
logger.debug("dropping optional / default info")
394460
return lark.Discard
395461

396462
def extra_info(self, tree):
463+
"""
464+
Parameters
465+
----------
466+
tree : lark.Tree
467+
468+
Returns
469+
-------
470+
out : lark.visitors._DiscardType
471+
"""
397472
logger.debug("dropping extra info")
398473
return lark.Discard
399474

475+
def __default__(self, data, children, meta):
476+
"""Unpack children of rule nodes by default.
477+
478+
Parameters
479+
----------
480+
data : lark.Token
481+
The rule-token of the current node.
482+
children : list[lark.Token]
483+
The children of the current node.
484+
meta : lark.tree.Meta
485+
Meta information for the current node.
486+
487+
Returns
488+
-------
489+
out : lark.Token or list[lark.Token]
490+
Either a token or list of tokens.
491+
"""
492+
if isinstance(children, list) and len(children) == 1:
493+
out = children[0]
494+
out.type = data.upper() # Turn rule into "token"
495+
else:
496+
out = children
497+
return out
498+
400499
def _match_import(self, qualname, *, meta):
401500
"""Match `qualname` to known imports or alias to "Incomplete".
402501

0 commit comments

Comments
 (0)