From f5b6d0efdb24078834c56a2a390cca1cccad422d Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 14:06:43 +0200 Subject: [PATCH 1/7] Fix overload aliasing --- sphinx/ext/autodoc/__init__.py | 29 ++++++++------ .../target/autodoc_type_aliases.py | 21 +++++++++- .../test_ext_autodoc_configs.py | 38 ++++++++++++++++--- 3 files changed, 69 insertions(+), 19 deletions(-) diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index fa961f4e109..c44c44662a9 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -12,7 +12,7 @@ import re import sys from inspect import Parameter, Signature -from typing import TYPE_CHECKING, Any, NewType, TypeVar +from typing import TYPE_CHECKING, Any, NewType, TypeVar, get_overloads from docutils.statemachine import StringList @@ -1472,6 +1472,7 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ objtype = 'function' member_order = 30 + overload_impl_sig: Signature | None = None @classmethod def can_document_member( @@ -1497,10 +1498,16 @@ def format_args(self, **kwargs: Any) -> str: sig = inspect.signature( self.object, type_aliases=self.config.autodoc_type_aliases ) + if self.overload_impl_sig is not None: + sig = self.merge_default_value(self.overload_impl_sig, sig) args = stringify_signature(sig, **kwargs) except TypeError as exc: + overload = '' if self.overload_impl_sig is None else 'overload ' logger.warning( - __('Failed to get a function signature for %s: %s'), self.fullname, exc + __('Failed to get a %sfunction signature for %s: %s'), + overload, + self.fullname, + exc, ) return '' except ValueError: @@ -1558,15 +1565,13 @@ def format_signature(self, **kwargs: Any) -> str: actual = inspect.signature( self.object, type_aliases=self.config.autodoc_type_aliases ) - __globals__ = safe_getattr(self.object, '__globals__', {}) - for overload in self.analyzer.overloads['.'.join(self.objpath)]: - overload = self.merge_default_value(actual, overload) - overload = evaluate_signature( - overload, __globals__, self.config.autodoc_type_aliases - ) - - sig = stringify_signature(overload, **kwargs) - sigs.append(sig) + for overload_func in get_overloads(self.object): + documenter = FunctionDocumenter(self.directive, '') + documenter.object = overload_func + documenter.objpath = [''] + # pass actual implementation signature to merge default values later + documenter.overload_impl_sig = actual + sigs.append(documenter.format_signature(**kwargs)) return '\n'.join(sigs) @@ -1575,7 +1580,7 @@ def merge_default_value(self, actual: Signature, overload: Signature) -> Signatu parameters = list(overload.parameters.values()) for i, param in enumerate(parameters): actual_param = actual.parameters.get(param.name) - if actual_param and param.default == '...': + if actual_param and param.default in {'...', ...}: parameters[i] = param.replace(default=actual_param.default) return overload.replace(parameters=parameters) diff --git a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py index 846c48a432c..775475e426d 100644 --- a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py +++ b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py @@ -4,7 +4,8 @@ from typing import TYPE_CHECKING, overload if TYPE_CHECKING: - from typing import Optional + import fractions as frac + from typing import Optional, Union myint = int @@ -48,3 +49,21 @@ class Foo: def __init__(self): self.attr2: myint = None #: docstring + + +@overload +def prod(x: tuple[float, myint]) -> float: ... + + +@overload +def prod(x: tuple[frac.Fraction, myint]) -> frac.Fraction: ... + + +def prod(x): + """docstring""" + return x[0] * x[1] + + +def print_value(x: Union[frac.Fraction, myint]) -> None: # NoQA: UP007 + """docstring""" + print('value:', x) diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py index 73a3f171285..98968af9c95 100644 --- a/tests/test_extensions/test_ext_autodoc_configs.py +++ b/tests/test_extensions/test_ext_autodoc_configs.py @@ -1374,6 +1374,19 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', + '.. py:function:: print_value(x: ~fractions.Fraction | int) -> None', + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', + '.. py:function:: prod(x: tuple[float, int]) -> float', + ' prod(x: tuple[~fractions.Fraction, int]) -> ~fractions.Fraction', + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', '.. py:function:: read(r: ~io.BytesIO) -> ~io.StringIO', ' :module: target.autodoc_type_aliases', '', @@ -1411,7 +1424,7 @@ def test_autodoc_type_aliases(app): # define aliases app.config.autodoc_type_aliases = { - 'myint': 'myint', + 'myint': 'my.module.myint', 'io.StringIO': 'my.module.StringIO', } actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) @@ -1440,20 +1453,33 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', - '.. py:function:: mult(x: myint, y: myint) -> myint', + '.. py:function:: mult(x: my.module.myint, y: my.module.myint) -> my.module.myint', ' mult(x: float, y: float) -> float', ' :module: target.autodoc_type_aliases', '', ' docstring', '', '', + ".. py:function:: print_value(x: ~fractions.Fraction | TypeAliasForwardRef('my.module.myint')) -> None", + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', + ".. py:function:: prod(x: tuple[float, TypeAliasForwardRef('my.module.myint')]) -> float", + " prod(x: tuple[~fractions.Fraction, TypeAliasForwardRef('my.module.myint')]) -> ~fractions.Fraction", + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', '.. py:function:: read(r: ~io.BytesIO) -> my.module.StringIO', ' :module: target.autodoc_type_aliases', '', ' docstring', '', '', - '.. py:function:: sum(x: myint, y: myint) -> myint', + '.. py:function:: sum(x: my.module.myint, y: my.module.myint) -> my.module.myint', ' :module: target.autodoc_type_aliases', '', ' docstring', @@ -1461,14 +1487,14 @@ def test_autodoc_type_aliases(app): '', '.. py:data:: variable', ' :module: target.autodoc_type_aliases', - ' :type: myint', + ' :type: my.module.myint', '', ' docstring', '', '', '.. py:data:: variable2', ' :module: target.autodoc_type_aliases', - ' :type: myint', + ' :type: my.module.myint', ' :value: None', '', ' docstring', @@ -1476,7 +1502,7 @@ def test_autodoc_type_aliases(app): '', '.. py:data:: variable3', ' :module: target.autodoc_type_aliases', - ' :type: myint | None', + " :type: TypeAliasForwardRef('my.module.myint') | None", '', ' docstring', '', From 386bfeda936e6ae6ebbb54a0561d96d31b6d6c8f Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 19:17:04 +0200 Subject: [PATCH 2/7] avoid testing autodoc-type-alias on attributes/data --- .../target/autodoc_type_aliases.py | 15 +++---- .../test_ext_autodoc_configs.py | 41 ++++++++++--------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py index 775475e426d..5a50b1f982c 100644 --- a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py +++ b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py @@ -8,6 +8,7 @@ from typing import Optional, Union myint = int +myfrac = float #: docstring variable: myint @@ -23,17 +24,17 @@ def read(r: io.BytesIO) -> io.StringIO: """docstring""" -def sum(x: myint, y: myint) -> myint: +def sum(x: myfrac, y: myfrac) -> myfrac: """docstring""" return x + y @overload -def mult(x: myint, y: myint) -> myint: ... +def mult(x: int, y: int) -> int: ... @overload -def mult(x: float, y: float) -> float: ... +def mult(x: myfrac, y: myfrac) -> myfrac: ... def mult(x, y): @@ -45,18 +46,18 @@ class Foo: """docstring""" #: docstring - attr1: myint + attr1: Union[frac.Fraction, myint] # NoQA: UP007 def __init__(self): self.attr2: myint = None #: docstring @overload -def prod(x: tuple[float, myint]) -> float: ... +def prod(x: tuple[float, myfrac]) -> float: ... @overload -def prod(x: tuple[frac.Fraction, myint]) -> frac.Fraction: ... +def prod(x: tuple[frac.Fraction, myfrac]) -> frac.Fraction: ... def prod(x): @@ -64,6 +65,6 @@ def prod(x): return x[0] * x[1] -def print_value(x: Union[frac.Fraction, myint]) -> None: # NoQA: UP007 +def print_value(x: Union[frac.Fraction, myfrac]) -> None: # NoQA: UP007 """docstring""" print('value:', x) diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py index 98968af9c95..3f6d540193c 100644 --- a/tests/test_extensions/test_ext_autodoc_configs.py +++ b/tests/test_extensions/test_ext_autodoc_configs.py @@ -1355,7 +1355,7 @@ def test_autodoc_type_aliases(app): '', ' .. py:attribute:: Foo.attr1', ' :module: target.autodoc_type_aliases', - ' :type: int', + ' :type: ~fractions.Fraction | int', '', ' docstring', '', @@ -1374,14 +1374,14 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', - '.. py:function:: print_value(x: ~fractions.Fraction | int) -> None', + '.. py:function:: print_value(x: ~fractions.Fraction | float) -> None', ' :module: target.autodoc_type_aliases', '', ' docstring', '', '', - '.. py:function:: prod(x: tuple[float, int]) -> float', - ' prod(x: tuple[~fractions.Fraction, int]) -> ~fractions.Fraction', + '.. py:function:: prod(x: tuple[float, float]) -> float', + ' prod(x: tuple[~fractions.Fraction, float]) -> ~fractions.Fraction', ' :module: target.autodoc_type_aliases', '', ' docstring', @@ -1393,7 +1393,7 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', - '.. py:function:: sum(x: int, y: int) -> int', + '.. py:function:: sum(x: float, y: float) -> float', ' :module: target.autodoc_type_aliases', '', ' docstring', @@ -1424,7 +1424,8 @@ def test_autodoc_type_aliases(app): # define aliases app.config.autodoc_type_aliases = { - 'myint': 'my.module.myint', + 'myint': 'myint', + 'myfrac': 'my.module.myfrac', 'io.StringIO': 'my.module.StringIO', } actual = do_autodoc(app, 'module', 'target.autodoc_type_aliases', options) @@ -1441,7 +1442,7 @@ def test_autodoc_type_aliases(app): '', ' .. py:attribute:: Foo.attr1', ' :module: target.autodoc_type_aliases', - ' :type: myint', + " :type: ~fractions.Fraction | TypeAliasForwardRef('myint')", '', ' docstring', '', @@ -1453,21 +1454,21 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', - '.. py:function:: mult(x: my.module.myint, y: my.module.myint) -> my.module.myint', - ' mult(x: float, y: float) -> float', + '.. py:function:: mult(x: int, y: int) -> int', + ' mult(x: my.module.myfrac, y: my.module.myfrac) -> my.module.myfrac', ' :module: target.autodoc_type_aliases', '', ' docstring', '', '', - ".. py:function:: print_value(x: ~fractions.Fraction | TypeAliasForwardRef('my.module.myint')) -> None", + ".. py:function:: print_value(x: ~fractions.Fraction | TypeAliasForwardRef('my.module.myfrac')) -> None", ' :module: target.autodoc_type_aliases', '', ' docstring', '', '', - ".. py:function:: prod(x: tuple[float, TypeAliasForwardRef('my.module.myint')]) -> float", - " prod(x: tuple[~fractions.Fraction, TypeAliasForwardRef('my.module.myint')]) -> ~fractions.Fraction", + ".. py:function:: prod(x: tuple[float, TypeAliasForwardRef('my.module.myfrac')]) -> float", + " prod(x: tuple[~fractions.Fraction, TypeAliasForwardRef('my.module.myfrac')]) -> ~fractions.Fraction", ' :module: target.autodoc_type_aliases', '', ' docstring', @@ -1479,7 +1480,7 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', - '.. py:function:: sum(x: my.module.myint, y: my.module.myint) -> my.module.myint', + '.. py:function:: sum(x: my.module.myfrac, y: my.module.myfrac) -> my.module.myfrac', ' :module: target.autodoc_type_aliases', '', ' docstring', @@ -1487,14 +1488,14 @@ def test_autodoc_type_aliases(app): '', '.. py:data:: variable', ' :module: target.autodoc_type_aliases', - ' :type: my.module.myint', + ' :type: myint', '', ' docstring', '', '', '.. py:data:: variable2', ' :module: target.autodoc_type_aliases', - ' :type: my.module.myint', + ' :type: myint', ' :value: None', '', ' docstring', @@ -1502,7 +1503,7 @@ def test_autodoc_type_aliases(app): '', '.. py:data:: variable3', ' :module: target.autodoc_type_aliases', - " :type: TypeAliasForwardRef('my.module.myint') | None", + ' :type: myint | None', '', ' docstring', '', @@ -1515,7 +1516,7 @@ def test_autodoc_type_aliases(app): srcdir='autodoc_typehints_description_and_type_aliases', confoverrides={ 'autodoc_typehints': 'description', - 'autodoc_type_aliases': {'myint': 'myint'}, + 'autodoc_type_aliases': {'myfrac': 'my.module.myfrac'}, }, ) def test_autodoc_typehints_description_and_type_aliases(app): @@ -1531,12 +1532,12 @@ def test_autodoc_typehints_description_and_type_aliases(app): ' docstring\n' '\n' ' Parameters:\n' - ' * **x** (*myint*)\n' + ' * **x** (*my.module.myfrac*)\n' '\n' - ' * **y** (*myint*)\n' + ' * **y** (*my.module.myfrac*)\n' '\n' ' Return type:\n' - ' myint\n' + ' my.module.myfrac\n' ) From d7df3de40047697333a6233db0353e2f9940445c Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 19:25:57 +0200 Subject: [PATCH 3/7] show overload annotations when set to description --- sphinx/ext/autodoc/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index c44c44662a9..583c94f5897 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -1565,13 +1565,14 @@ def format_signature(self, **kwargs: Any) -> str: actual = inspect.signature( self.object, type_aliases=self.config.autodoc_type_aliases ) + overload_kwargs = kwargs | {'show_annotation': True} for overload_func in get_overloads(self.object): - documenter = FunctionDocumenter(self.directive, '') + documenter = type(self)(self.directive, '') documenter.object = overload_func documenter.objpath = [''] # pass actual implementation signature to merge default values later documenter.overload_impl_sig = actual - sigs.append(documenter.format_signature(**kwargs)) + sigs.append(documenter.format_signature(**overload_kwargs)) return '\n'.join(sigs) From 9f45a5c673af314e520a2a26b24277d06338f72a Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 20:51:00 +0200 Subject: [PATCH 4/7] copy solution to method documenter --- sphinx/ext/autodoc/__init__.py | 34 ++++++++----------- .../target/autodoc_type_aliases.py | 20 +++++++++++ .../test_ext_autodoc_configs.py | 28 +++++++++++++++ 3 files changed, 62 insertions(+), 20 deletions(-) diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index 583c94f5897..74c1d1a15fb 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -1502,12 +1502,8 @@ def format_args(self, **kwargs: Any) -> str: sig = self.merge_default_value(self.overload_impl_sig, sig) args = stringify_signature(sig, **kwargs) except TypeError as exc: - overload = '' if self.overload_impl_sig is None else 'overload ' logger.warning( - __('Failed to get a %sfunction signature for %s: %s'), - overload, - self.fullname, - exc, + __('Failed to get a function signature for %s: %s'), self.fullname, exc ) return '' except ValueError: @@ -2395,6 +2391,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type: directivetype = 'method' member_order = 50 priority = 1 # must be more than FunctionDocumenter + overload_impl_sig: Signature | None = None @classmethod def can_document_member( @@ -2454,6 +2451,8 @@ def format_args(self, **kwargs: Any) -> str: bound_method=True, type_aliases=self.config.autodoc_type_aliases, ) + if self.overload_impl_sig is not None: + sig = self.merge_default_value(self.overload_impl_sig, sig) args = stringify_signature(sig, **kwargs) except TypeError as exc: logger.warning( @@ -2542,20 +2541,15 @@ def format_signature(self, **kwargs: Any) -> str: type_aliases=self.config.autodoc_type_aliases, ) - __globals__ = safe_getattr(self.object, '__globals__', {}) - for overload in self.analyzer.overloads['.'.join(self.objpath)]: - overload = self.merge_default_value(actual, overload) - overload = evaluate_signature( - overload, __globals__, self.config.autodoc_type_aliases - ) - - if not inspect.isstaticmethod( - self.object, cls=self.parent, name=self.object_name - ): - parameters = list(overload.parameters.values()) - overload = overload.replace(parameters=parameters[1:]) - sig = stringify_signature(overload, **kwargs) - sigs.append(sig) + overload_kwargs = kwargs | {'show_annotation': True} + for overload_func in get_overloads(self.object): + documenter = type(self)(self.directive, '') + documenter.object = overload_func + documenter.objpath = [''] + documenter.parent = self.parent + # pass actual implementation signature to merge default values later + documenter.overload_impl_sig = actual + sigs.append(documenter.format_signature(**overload_kwargs)) return '\n'.join(sigs) @@ -2564,7 +2558,7 @@ def merge_default_value(self, actual: Signature, overload: Signature) -> Signatu parameters = list(overload.parameters.values()) for i, param in enumerate(parameters): actual_param = actual.parameters.get(param.name) - if actual_param and param.default == '...': + if actual_param and param.default in {'...', Ellipsis}: parameters[i] = param.replace(default=actual_param.default) return overload.replace(parameters=parameters) diff --git a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py index 5a50b1f982c..554c87beeb5 100644 --- a/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py +++ b/tests/roots/test-ext-autodoc/target/autodoc_type_aliases.py @@ -51,6 +51,26 @@ class Foo: def __init__(self): self.attr2: myint = None #: docstring + def method1(self, x: Union[frac.Fraction, myfrac]) -> Union[frac.Fraction, myfrac]: # NoQA: UP007 + """docstring""" + return self.attr1 * x + + @overload + def method2(self, x: frac.Fraction) -> frac.Fraction: ... + + @overload + def method2(self, x: myfrac) -> myfrac: ... + + @overload + def method2( + self, + x: Union[frac.Fraction, myfrac], # NoQA: UP007 + ) -> Union[frac.Fraction, myfrac]: ... # NoQA: UP007 + + def method2(self, x): + """docstring""" + return self.attr2 * x + @overload def prod(x: tuple[float, myfrac]) -> float: ... diff --git a/tests/test_extensions/test_ext_autodoc_configs.py b/tests/test_extensions/test_ext_autodoc_configs.py index 3f6d540193c..f36ef1dec19 100644 --- a/tests/test_extensions/test_ext_autodoc_configs.py +++ b/tests/test_extensions/test_ext_autodoc_configs.py @@ -1367,6 +1367,20 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', + ' .. py:method:: Foo.method1(x: ~fractions.Fraction | float) -> ~fractions.Fraction | float', + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', + ' .. py:method:: Foo.method2(x: ~fractions.Fraction) -> ~fractions.Fraction', + ' Foo.method2(x: float) -> float', + ' Foo.method2(x: ~fractions.Fraction | float) -> ~fractions.Fraction | float', + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', '.. py:function:: mult(x: int, y: int) -> int', ' mult(x: float, y: float) -> float', ' :module: target.autodoc_type_aliases', @@ -1454,6 +1468,20 @@ def test_autodoc_type_aliases(app): ' docstring', '', '', + " .. py:method:: Foo.method1(x: ~fractions.Fraction | TypeAliasForwardRef('my.module.myfrac')) -> ~fractions.Fraction | TypeAliasForwardRef('my.module.myfrac')", + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', + ' .. py:method:: Foo.method2(x: ~fractions.Fraction) -> ~fractions.Fraction', + ' Foo.method2(x: my.module.myfrac) -> my.module.myfrac', + " Foo.method2(x: ~fractions.Fraction | TypeAliasForwardRef('my.module.myfrac')) -> ~fractions.Fraction | TypeAliasForwardRef('my.module.myfrac')", + ' :module: target.autodoc_type_aliases', + '', + ' docstring', + '', + '', '.. py:function:: mult(x: int, y: int) -> int', ' mult(x: my.module.myfrac, y: my.module.myfrac) -> my.module.myfrac', ' :module: target.autodoc_type_aliases', From 8eff88dbf36b390903fa90dbebf040aa4a95f28b Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 21:03:41 +0200 Subject: [PATCH 5/7] #13097: autodoc: :confval: is now supported by overload signatures of functions and methods. --- CHANGES.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 9f7b8f91eba..48289f7c61f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -115,6 +115,9 @@ Features added Bugs fixed ---------- +* #13097: autodoc: :confval:`autodoc_type_aliases` is now supported by overload + signatures of functions and methods. + Patch by Barak Katzir. * #12463: autosummary: Respect an empty module ``__all__``. Patch by Valentin Pratz * #13060: HTML Search: use ``Map`` to store per-file term scores. From d0b5a06dc880d09b620509153e7aee1e40f3d0ec Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Thu, 13 Feb 2025 21:07:13 +0200 Subject: [PATCH 6/7] #13098: autodoc: overloaded function or method can now be customized in the 'autodoc-before-process-signature' and 'autodoc-process-signature' events. --- CHANGES.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 48289f7c61f..35d2e2e5655 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -33,6 +33,9 @@ Deprecated Features added -------------- +* #13098: autodoc: overloaded function or method can now be customized in the + 'autodoc-before-process-signature' and 'autodoc-process-signature' events. + Patch by Barak Katzir. * #13173: Add a new ``duplicate_declaration`` warning type, with ``duplicate_declaration.c`` and ``duplicate_declaration.cpp`` subtypes. Patch by Julien Lecomte and Adam Turner. From 01cf8b1fdac1abc6d0181f4127afbbd6b6b84cc9 Mon Sep 17 00:00:00 2001 From: Barak A Katzir Date: Fri, 14 Feb 2025 00:05:01 +0200 Subject: [PATCH 7/7] use non random numbers in CHANGES --- AUTHORS.rst | 1 + CHANGES.rst | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index f57795d4fa7..182854d7039 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -27,6 +27,7 @@ Contributors * Andi Albrecht -- agogo theme * Antonio Valentino -- qthelp builder, docstring inheritance * Antti Kaihola -- doctest extension (skipif option) +* Barak Katzir -- autodoc improvements * Barry Warsaw -- setup command improvements * Ben Egan -- Napoleon improvements & viewcode improvements * Benjamin Peterson -- unittests diff --git a/CHANGES.rst b/CHANGES.rst index 35d2e2e5655..6153910e2e1 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -33,7 +33,7 @@ Deprecated Features added -------------- -* #13098: autodoc: overloaded function or method can now be customized in the +* #10351, #10359: autodoc: overloaded function or method can now be customized in the 'autodoc-before-process-signature' and 'autodoc-process-signature' events. Patch by Barak Katzir. * #13173: Add a new ``duplicate_declaration`` warning type, @@ -118,8 +118,8 @@ Features added Bugs fixed ---------- -* #13097: autodoc: :confval:`autodoc_type_aliases` is now supported by overload - signatures of functions and methods. +* #9813: autodoc: partial bugfix, :confval:`autodoc_type_aliases` is now supported + by overload signatures of functions and methods. Patch by Barak Katzir. * #12463: autosummary: Respect an empty module ``__all__``. Patch by Valentin Pratz