typing: fix getfslineno
Closes https://github.com/pytest-dev/pytest/pull/6590.
This commit is contained in:
parent
61f2a26675
commit
dab90ef726
|
@ -8,6 +8,7 @@ import warnings
|
|||
from bisect import bisect_right
|
||||
from types import CodeType
|
||||
from types import FrameType
|
||||
from typing import Any
|
||||
from typing import Iterator
|
||||
from typing import List
|
||||
from typing import Optional
|
||||
|
@ -283,7 +284,7 @@ def compile_( # noqa: F811
|
|||
return s.compile(filename, mode, flags, _genframe=_genframe)
|
||||
|
||||
|
||||
def getfslineno(obj) -> Tuple[Optional[Union["Literal['']", py.path.local]], int]:
|
||||
def getfslineno(obj: Any) -> Tuple[Union[str, py.path.local], int]:
|
||||
""" Return source location (path, lineno) for the given object.
|
||||
If the source cannot be determined return ("", -1).
|
||||
|
||||
|
@ -306,18 +307,16 @@ def getfslineno(obj) -> Tuple[Optional[Union["Literal['']", py.path.local]], int
|
|||
except TypeError:
|
||||
return "", -1
|
||||
|
||||
fspath = fn and py.path.local(fn) or None
|
||||
fspath = fn and py.path.local(fn) or ""
|
||||
lineno = -1
|
||||
if fspath:
|
||||
try:
|
||||
_, lineno = findsource(obj)
|
||||
except IOError:
|
||||
pass
|
||||
return fspath, lineno
|
||||
else:
|
||||
fspath = code.path
|
||||
lineno = code.firstlineno
|
||||
assert isinstance(lineno, int)
|
||||
return fspath, lineno
|
||||
return code.path, code.firstlineno
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -308,9 +308,9 @@ def get_real_method(obj, holder):
|
|||
|
||||
def getfslineno(obj) -> Tuple[Union[str, py.path.local], int]:
|
||||
"""(**Deprecated**, use _pytest._code.source.getfslineno directly)"""
|
||||
from _pytest._code.source import getfslineno
|
||||
import _pytest._code.source
|
||||
|
||||
return getfslineno(obj)
|
||||
return _pytest._code.source.getfslineno(obj)
|
||||
|
||||
|
||||
def getimfunc(func):
|
||||
|
|
Loading…
Reference in New Issue