mirror of
https://github.com/python/cpython.git
synced 2025-11-08 17:41:42 +00:00
Previously, DocTest's lineno of functions and methods decorated with functools.cache(), functools.lru_cache() and functools.cached_property() was not properly returned (None was returned) because the computation relied on inspect.isfunction() which does not consider the decorated result as a function. We now use the more generic inspect.isroutine(), as elsewhere in doctest's logic. Also, added a special case for functools.cached_property().
107 lines
2 KiB
Python
107 lines
2 KiB
Python
# This module is used in `test_doctest`.
|
|
# It must not have a docstring.
|
|
|
|
def func_with_docstring():
|
|
"""Some unrelated info."""
|
|
|
|
|
|
def func_without_docstring():
|
|
pass
|
|
|
|
|
|
def func_with_doctest():
|
|
"""
|
|
This function really contains a test case.
|
|
|
|
>>> func_with_doctest.__name__
|
|
'func_with_doctest'
|
|
"""
|
|
return 3
|
|
|
|
|
|
class ClassWithDocstring:
|
|
"""Some unrelated class information."""
|
|
|
|
|
|
class ClassWithoutDocstring:
|
|
pass
|
|
|
|
|
|
class ClassWithDoctest:
|
|
"""This class really has a test case in it.
|
|
|
|
>>> ClassWithDoctest.__name__
|
|
'ClassWithDoctest'
|
|
"""
|
|
|
|
|
|
class MethodWrapper:
|
|
def method_with_docstring(self):
|
|
"""Method with a docstring."""
|
|
|
|
def method_without_docstring(self):
|
|
pass
|
|
|
|
def method_with_doctest(self):
|
|
"""
|
|
This has a doctest!
|
|
>>> MethodWrapper.method_with_doctest.__name__
|
|
'method_with_doctest'
|
|
"""
|
|
|
|
@classmethod
|
|
def classmethod_with_doctest(cls):
|
|
"""
|
|
This has a doctest!
|
|
>>> MethodWrapper.classmethod_with_doctest.__name__
|
|
'classmethod_with_doctest'
|
|
"""
|
|
|
|
@property
|
|
def property_with_doctest(self):
|
|
"""
|
|
This has a doctest!
|
|
>>> MethodWrapper.property_with_doctest.__name__
|
|
'property_with_doctest'
|
|
"""
|
|
|
|
# https://github.com/python/cpython/issues/99433
|
|
str_wrapper = object().__str__
|
|
|
|
|
|
# https://github.com/python/cpython/issues/115392
|
|
from test.test_doctest.decorator_mod import decorator
|
|
|
|
@decorator
|
|
@decorator
|
|
def func_with_docstring_wrapped():
|
|
"""Some unrelated info."""
|
|
|
|
|
|
# https://github.com/python/cpython/issues/136914
|
|
import functools
|
|
|
|
|
|
@functools.cache
|
|
def cached_func_with_doctest(value):
|
|
"""
|
|
>>> cached_func_with_doctest(1)
|
|
-1
|
|
"""
|
|
return -value
|
|
|
|
|
|
@functools.cache
|
|
def cached_func_without_docstring(value):
|
|
return value + 1
|
|
|
|
|
|
class ClassWithACachedProperty:
|
|
|
|
@functools.cached_property
|
|
def cached(self):
|
|
"""
|
|
>>> X().cached
|
|
-1
|
|
"""
|
|
return 0
|