diff --git a/doc/domains.rst b/doc/domains.rst index 7c23056d8d..7ff0d2f5f5 100644 --- a/doc/domains.rst +++ b/doc/domains.rst @@ -371,6 +371,13 @@ using the following syntax:: :type point: tuple(float, float) :type point: tuple[float, float] +Multiple types in a type field will be linked automatically if separated by +the word "or":: + + :type an_arg: int or None + :vartype a_var: str or int + :rtype: float or str + .. _python-roles: Cross-referencing Python objects diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 3d7e104678..d37e55fa3d 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -103,7 +103,7 @@ class PyXrefMixin(object): def make_xrefs(self, rolename, domain, target, innernode=nodes.emphasis, contnode=None): - delims = '(\s*[\[\]\(\),]\s*)' + delims = '(\s*[\[\]\(\),](?:\s*or\s)?\s*|\s+or\s+)' delims_re = re.compile(delims) sub_targets = re.split(delims, target)