|
2 | 2 | import os
|
3 | 3 | import sys
|
4 | 4 | import unittest
|
| 5 | +from collections.abc import Sequence |
5 | 6 | from typing import List
|
6 | 7 |
|
7 | 8 | from bpython import inspection
|
@@ -179,6 +180,44 @@ def fun_annotations(number: int, lst: List[int] = []) -> List[int]:
|
179 | 180 | self.assertEqual(props.argspec.args, ["number", "lst"])
|
180 | 181 | self.assertEqual(props.argspec.defaults[0], [])
|
181 | 182 |
|
| 183 | + @unittest.expectedFailure |
| 184 | + def test_issue_966_class_method(self): |
| 185 | + class Issue966(Sequence): |
| 186 | + @classmethod |
| 187 | + def cmethod(cls, number: int, lst: List[int] = []): |
| 188 | + """ |
| 189 | + Return a list of numbers |
| 190 | +
|
| 191 | + Example: |
| 192 | + ======== |
| 193 | + C.cmethod(1337, [1, 2]) # => [1, 2, 1337] |
| 194 | + """ |
| 195 | + return lst + [number] |
| 196 | + |
| 197 | + @classmethod |
| 198 | + def bmethod(cls, number, lst): |
| 199 | + """ |
| 200 | + Return a list of numbers |
| 201 | +
|
| 202 | + Example: |
| 203 | + ======== |
| 204 | + C.cmethod(1337, [1, 2]) # => [1, 2, 1337] |
| 205 | + """ |
| 206 | + return lst + [number] |
| 207 | + |
| 208 | + props = inspection.getfuncprops( |
| 209 | + "bmethod", inspection.getattr_safe(Issue966, "bmethod") |
| 210 | + ) |
| 211 | + self.assertEqual(props.func, "bmethod") |
| 212 | + self.assertEqual(props.argspec.args, ["number", "lst"]) |
| 213 | + |
| 214 | + props = inspection.getfuncprops( |
| 215 | + "cmethod", inspection.getattr_safe(Issue966, "cmethod") |
| 216 | + ) |
| 217 | + self.assertEqual(props.func, "cmethod") |
| 218 | + self.assertEqual(props.argspec.args, ["number", "lst"]) |
| 219 | + self.assertEqual(props.argspec.defaults[0], []) |
| 220 | + |
182 | 221 |
|
183 | 222 | class A:
|
184 | 223 | a = "a"
|
|
0 commit comments