Skip to content

Commit 115a168

Browse files
committed
REF: Format Optional as X | None
Ref: 6e8bdfd ENH: Improve formatting of Optional, Union and collection.abc types Ref: #395 Thanks @hhoppe
1 parent 78e771b commit 115a168

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

pdoc/__init__.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,17 +1294,17 @@ def _formatannotation(annot):
12941294
>>> _formatannotation(NewType('MyType', str))
12951295
'pdoc.MyType'
12961296
>>> _formatannotation(Optional[Tuple[Optional[int], None]])
1297-
'Optional[Tuple[Optional[int], None]]'
1297+
'Tuple[int | None, None] | None'
12981298
>>> _formatannotation(Optional[Union[int, float, None]])
1299-
'Optional[int | float]'
1299+
'int | float | None'
13001300
>>> _formatannotation(Union[int, float])
13011301
'int | float'
13021302
>>> from typing import Callable
13031303
>>> _formatannotation(Callable[[Optional[int]], float])
1304-
'Callable[[Optional[int]], float]'
1304+
'Callable[[int | None], float]'
13051305
>>> from collections.abc import Callable
13061306
>>> _formatannotation(Callable[[Optional[int]], float])
1307-
'Callable[[Optional[int]], float]'
1307+
'Callable[[int | None], float]'
13081308
"""
13091309
class force_repr(str):
13101310
__repr__ = str.__str__
@@ -1322,7 +1322,7 @@ def maybe_replace_reprs(a):
13221322
t = ' | '.join(inspect.formatannotation(maybe_replace_reprs(x))
13231323
for x in union_args)
13241324
if is_optional:
1325-
t = f'Optional[{t}]'
1325+
t += ' | None'
13261326
return force_repr(t)
13271327
# typing.NewType('T', foo) -> T
13281328
module = getattr(a, '__module__', '')

pdoc/test/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ def prop(self) -> typing.Optional[int]:
975975

976976
mod = DUMMY_PDOC_MODULE
977977
cls = pdoc.Class('Foobar', mod, Foobar)
978-
self.assertEqual(cls.doc['prop'].type_annotation(), 'Optional[int]')
978+
self.assertEqual(cls.doc['prop'].type_annotation(), 'int\N{NBSP}|\N{NBSP}None')
979979

980980
@ignore_warnings
981981
def test_Variable_type_annotation_py36plus(self):

0 commit comments

Comments
 (0)