Format unions with | consistently

This commit is contained in:
Dave Halter
2026-04-27 14:24:23 +02:00
parent 74fb7ff279
commit d4233732be
2 changed files with 12 additions and 14 deletions
+11 -13
View File
@@ -507,19 +507,17 @@ class DirectObjectAccess:
def _annotation_to_str(self, annotation):
# In Python 3.14+, Union types are displayed as X | Y instead of Union[X, Y]
# We normalize to Union[X, Y] for consistency
if sys.version_info >= (3, 8):
import typing
origin = typing.get_origin(annotation)
if origin is typing.Union:
# Get the args and format them as Union[...]
args = typing.get_args(annotation)
formatted_args = ', '.join(
self._annotation_to_str(arg) if hasattr(arg, '__origin__')
else getattr(arg, '__name__', str(arg))
for arg in args
)
return f'Union[{formatted_args}]'
# We normalize to that for consistency
import typing
origin = typing.get_origin(annotation)
if origin is typing.Union:
# Get the args and format them as Union[...]
args = typing.get_args(annotation)
return ' | '.join(
self._annotation_to_str(arg) if hasattr(arg, '__origin__')
else getattr(arg, '__name__', str(arg))
for arg in args
)
return inspect.formatannotation(annotation)
def get_signature_params(self):
+1 -1
View File
@@ -111,4 +111,4 @@ def test_compiled_signature_annotation_string():
s, = jedi.Interpreter('func()', [locals()]).get_signatures(1, 5)
assert s.params[0].description == 'param x: Type'
assert s.params[1].description == 'param y: Union[Type, int]'
assert s.params[1].description == 'param y: Type | int'