mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
[3.11] gh-103449: Fix a bug in dataclass docstring generation (GH-103454) (#103599)
This commit is contained in:
parent
6e25228b2e
commit
ec29d0c091
3 changed files with 21 additions and 2 deletions
|
@ -1092,8 +1092,13 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen,
|
|||
|
||||
if not getattr(cls, '__doc__'):
|
||||
# Create a class doc-string.
|
||||
cls.__doc__ = (cls.__name__ +
|
||||
str(inspect.signature(cls)).replace(' -> None', ''))
|
||||
try:
|
||||
# In some cases fetching a signature is not possible.
|
||||
# But, we surely should not fail in this case.
|
||||
text_sig = str(inspect.signature(cls)).replace(' -> None', '')
|
||||
except (TypeError, ValueError):
|
||||
text_sig = ''
|
||||
cls.__doc__ = (cls.__name__ + text_sig)
|
||||
|
||||
if match_args:
|
||||
# I could probably compute this once
|
||||
|
|
|
@ -2224,6 +2224,19 @@ class TestDocString(unittest.TestCase):
|
|||
|
||||
self.assertDocStrEqual(C.__doc__, "C(x:collections.deque=<factory>)")
|
||||
|
||||
def test_docstring_with_no_signature(self):
|
||||
# See https://github.com/python/cpython/issues/103449
|
||||
class Meta(type):
|
||||
__call__ = dict
|
||||
class Base(metaclass=Meta):
|
||||
pass
|
||||
|
||||
@dataclass
|
||||
class C(Base):
|
||||
pass
|
||||
|
||||
self.assertDocStrEqual(C.__doc__, "C")
|
||||
|
||||
|
||||
class TestInit(unittest.TestCase):
|
||||
def test_base_has_init(self):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fix a bug in doc string generation in :func:`dataclasses.dataclass`.
|
Loading…
Add table
Add a link
Reference in a new issue