1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
From 80af5d40d3ca39e2701c44941c1003ae6a280799 Mon Sep 17 00:00:00 2001
From: Kernc <kerncece@gmail.com>
Date: Sat, 29 Oct 2022 18:55:46 +0200
Subject: [PATCH] CI: Bump min Python 3.7+ and update tests for Python 3.10
Fix https://github.com/pdoc3/pdoc/issues/400
Thanks @tjni
--- a/pdoc/__init__.py
+++ b/pdoc/__init__.py
@@ -1275,7 +1275,7 @@ def _formatannotation(annot):
`typing.Optional`, `nptyping.NDArray` and other types.
>>> _formatannotation(NewType('MyType', str))
- 'MyType'
+ 'pdoc.MyType'
>>> _formatannotation(Optional[Tuple[Optional[int], None]])
'Optional[Tuple[Optional[int], None]]'
"""
--- a/pdoc/documentation.md
+++ b/pdoc/documentation.md
@@ -353,7 +353,7 @@ modified templates into the `directories` list of the
Compatibility
-------------
-`pdoc` requires Python 3.6+.
+`pdoc` requires Python 3.7+.
The last version to support Python 2.x is [pdoc3 0.3.x].
[pdoc3 0.3.x]: https://pypi.org/project/pdoc3/0.3.13/
--- a/pdoc/test/__init__.py
+++ b/pdoc/test/__init__.py
@@ -126,7 +126,8 @@ class CliTest(unittest.TestCase):
def setUp(self):
pdoc.reset()
- @unittest.skipIf(sys.version_info < (3, 7), 'pdoc._formatannotation fails on Py3.6')
+ @unittest.skipIf(sys.version_info < (3, 10),
+ 'HACK: _formatannotation() changed return value in Py3.10')
def test_project_doctests(self):
doctests = doctest.testmod(pdoc)
assert not doctests.failed and doctests.attempted, doctests
@@ -185,8 +186,12 @@ def test_html(self):
'<object ',
' class="ident">_private',
' class="ident">_Private',
- 'non_callable_routine',
]
+ if sys.version_info >= (3, 10):
+ include_patterns.append('non_callable_routine')
+ else:
+ exclude_patterns.append('non_callable_routine')
+
package_files = {
'': self.PUBLIC_FILES,
'.subpkg2': [f for f in self.PUBLIC_FILES
@@ -356,8 +361,11 @@ def test_text(self):
'_Private',
'subprocess',
'Hidden',
- 'non_callable_routine',
]
+ if sys.version_info >= (3, 10):
+ include_patterns.append('non_callable_routine')
+ else:
+ exclude_patterns.append('non_callable_routine')
with self.subTest(package=EXAMPLE_MODULE):
with redirect_streams() as (stdout, _):
@@ -543,8 +551,9 @@ class C:
self.assertEqual(doc.doc['vars_dont'].docstring, '')
self.assertIn('integer', doc.doc['but_clss_have_doc'].docstring)
+ @unittest.skipIf(sys.version_info >= (3, 10), 'No builtin module "parser" in Py3.10')
def test_builtin_methoddescriptors(self):
- import parser
+ import parser # TODO: replace with another public binary builtin
with self.assertWarns(UserWarning):
c = pdoc.Class('STType', pdoc.Module(parser), parser.STType)
self.assertIsInstance(c.doc['compile'], pdoc.Function)
@@ -906,9 +915,13 @@ def bug130_str_annotation(a: "str"):
def bug253_newtype_annotation(a: CustomType):
return
+ expected = CustomType.__name__
+ if sys.version_info > (3, 10):
+ expected = f'{__name__}.{CustomType.__name__}'
+
self.assertEqual(
pdoc.Function('bug253', mod, bug253_newtype_annotation).params(annotate=True),
- ['a:\N{NBSP}CustomType'])
+ [f'a:\N{NBSP}{expected}'])
# typing.Callable bug
def f(a: typing.Callable):
--- a/setup.py
+++ b/setup.py
@@ -2,8 +2,8 @@
import sys
from setuptools import setup, find_packages
-if sys.version_info < (3, 6):
- sys.exit('ERROR: pdoc requires Python 3.6+')
+if sys.version_info < (3, 7):
+ sys.exit('ERROR: pdoc requires Python 3.7+')
def _discover_tests():
@@ -58,5 +58,5 @@ def _discover_tests():
'write_to': os.path.join('pdoc', '_version.py'),
},
test_suite="setup._discover_tests",
- python_requires='>= 3.6',
+ python_requires='>= 3.7',
)
|