mirror of
https://github.com/python/cpython.git
synced 2024-11-23 18:04:37 +08:00
gh-107995: Fix doctest collection of functools.cached_property objects (#107996)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
28cab71f95
commit
9bb576cb07
@ -984,6 +984,7 @@ class cached_property:
|
||||
self.func = func
|
||||
self.attrname = None
|
||||
self.__doc__ = func.__doc__
|
||||
self.__module__ = func.__module__
|
||||
|
||||
def __set_name__(self, owner, name):
|
||||
if self.attrname is None:
|
||||
|
@ -111,6 +111,14 @@ class SampleClass:
|
||||
"""
|
||||
return cls.a_class_attribute
|
||||
|
||||
@functools.cached_property
|
||||
def a_cached_property(self):
|
||||
"""
|
||||
>>> print(SampleClass(29).get())
|
||||
29
|
||||
"""
|
||||
return "hello"
|
||||
|
||||
class NestedClass:
|
||||
"""
|
||||
>>> x = SampleClass.NestedClass(5)
|
||||
@ -515,6 +523,7 @@ methods, classmethods, staticmethods, properties, and nested classes.
|
||||
3 SampleClass.NestedClass
|
||||
1 SampleClass.NestedClass.__init__
|
||||
1 SampleClass.__init__
|
||||
1 SampleClass.a_cached_property
|
||||
2 SampleClass.a_classmethod
|
||||
1 SampleClass.a_classmethod_property
|
||||
1 SampleClass.a_property
|
||||
@ -571,6 +580,7 @@ functions, classes, and the `__test__` dictionary, if it exists:
|
||||
3 some_module.SampleClass.NestedClass
|
||||
1 some_module.SampleClass.NestedClass.__init__
|
||||
1 some_module.SampleClass.__init__
|
||||
1 some_module.SampleClass.a_cached_property
|
||||
2 some_module.SampleClass.a_classmethod
|
||||
1 some_module.SampleClass.a_classmethod_property
|
||||
1 some_module.SampleClass.a_property
|
||||
@ -613,6 +623,7 @@ By default, an object with no doctests doesn't create any tests:
|
||||
3 SampleClass.NestedClass
|
||||
1 SampleClass.NestedClass.__init__
|
||||
1 SampleClass.__init__
|
||||
1 SampleClass.a_cached_property
|
||||
2 SampleClass.a_classmethod
|
||||
1 SampleClass.a_classmethod_property
|
||||
1 SampleClass.a_property
|
||||
@ -634,6 +645,7 @@ displays.
|
||||
0 SampleClass.NestedClass.get
|
||||
0 SampleClass.NestedClass.square
|
||||
1 SampleClass.__init__
|
||||
1 SampleClass.a_cached_property
|
||||
2 SampleClass.a_classmethod
|
||||
1 SampleClass.a_classmethod_property
|
||||
1 SampleClass.a_property
|
||||
|
@ -3105,6 +3105,9 @@ class TestCachedProperty(unittest.TestCase):
|
||||
def test_doc(self):
|
||||
self.assertEqual(CachedCostItem.cost.__doc__, "The cost of the item.")
|
||||
|
||||
def test_module(self):
|
||||
self.assertEqual(CachedCostItem.cost.__module__, CachedCostItem.__module__)
|
||||
|
||||
def test_subclass_with___set__(self):
|
||||
"""Caching still works for a subclass defining __set__."""
|
||||
class readonly_cached_property(py_functools.cached_property):
|
||||
|
@ -1706,6 +1706,7 @@ Roman Skurikhin
|
||||
Ville Skyttä
|
||||
Michael Sloan
|
||||
Nick Sloan
|
||||
Tyler Smart
|
||||
Radek Smejkal
|
||||
Václav Šmilauer
|
||||
Casper W. Smet
|
||||
|
@ -0,0 +1,5 @@
|
||||
The ``__module__`` attribute on instances of :class:`functools.cached_property`
|
||||
is now set to the name of the module in which the cached_property is defined,
|
||||
rather than "functools". This means that doctests in ``cached_property``
|
||||
docstrings are now properly collected by the :mod:`doctest` module. Patch by
|
||||
Tyler Smart.
|
Loading…
Reference in New Issue
Block a user