Commit 2386a4cb authored by Stefan Behnel's avatar Stefan Behnel

Merge branch 'annotation_pyi_test' of https://github.com/smartsammler/cython into mypy

parents 5e6ca038 682aa7fc
from builtins import (int as py_int, float as py_float,
bool as py_bool, str as py_str)
from typing import (Union, Dict, Any, Sequence, Optional,
List, TypeVar, Type, Generic)
int = py_int
long = py_int
longlong = py_int
short = py_int
char = py_int
sint = py_int
slong = py_int
slonglong = py_int
sshort = py_int
schar = py_int
uint = py_int
ulong = py_int
ulonglong = py_int
ushort = py_int
uchar = py_int
size_t = py_int
Py_ssize_t = py_int
float = py_float
double = py_float
longdouble = py_float
bint = py_bool
void = Union[None]
basestring = py_str
gs: Dict[str, Any] # Should match the return type of globals()
_T = TypeVar('_T')
class _ArrayType(object, Generic[_T]):
is_array: bool
subtypes: Sequence[str]
dtype: _T
ndim: int
is_c_contig: bool
is_f_contig: bool
inner_contig: bool
broadcasting: Any
# broadcasting is not used, so it's not clear about its type
def __init__(self, dtype: _T, ndim: int, is_c_contig: bool = ...,
is_f_contig: bool = ..., inner_contig: bool = ...,
broadcasting: Any = ...) -> None: ...
def __repr__(self) -> str: ...
class CythonTypeObject(object):
...
class CythonType(CythonTypeObject):
...
class PointerType(CythonType, Generic[_T]):
def __init__(
self,
value: Optional[Union[ArrayType[_T],
PointerType[_T], List[_T], int]] = ...
) -> None: ...
def __getitem__(self, ix: int) -> _T: ...
def __setitem__(self, ix: int, value: _T) -> None: ...
def __eq__(self, value: object) -> bool: ...
def __repr__(self) -> str: ...
class ArrayType(PointerType[_T]):
def __init__(self) -> None: ...
class StructType(CythonType, Generic[_T]):
def __init__(
self,
value: List[Type[_T]] = ...
) -> None: ...
def index_type(
base_type: _T, item: Union[tuple, slice, int]) -> _ArrayType[_T]: ...
def pointer(basetype: _T) -> Type[PointerType[_T]]: ...
def array(basetype: _T, n: int) -> Type[ArrayType[_T]]: ...
def struct(basetype: _T) -> Type[StructType[_T]]: ...
class typedef(CythonType, Generic[_T]):
name: str
def __init__(self, type: _T, name: Optional[str] = ...) -> None: ...
def __call__(self, *arg: Any) -> _T: ...
def __repr__(self) -> str: ...
__getitem__ = index_type
class _FusedType(CythonType, Genergic[_T]):
def __init__(self, Union[py_int, py_long, py_float, py_complex, Any]) -> None: ...
def fused_type(basetype: _T) -> Type[FusedType[_T]]: ...
......@@ -257,7 +257,7 @@ def update_cpp11_extension(ext):
compiler_version = gcc_version.group(1)
if float(compiler_version) > 4.8:
ext.extra_compile_args.extend("-std=c++11")
return ext
return ext
return EXCLUDE_EXT
......@@ -612,7 +612,7 @@ class TestBuilder(object):
if pyver
]
if not min_py_ver or any(sys.version_info >= min_ver for min_ver in min_py_ver):
suite.addTest(PureDoctestTestCase(module, os.path.join(path, filename)))
suite.addTest(PureDoctestTestCase(module, os.path.join(path, filename), tags))
return suite
......@@ -1202,7 +1202,8 @@ def run_forked_test(result, run_func, test_name, fork=True):
except: pass
class PureDoctestTestCase(unittest.TestCase):
def __init__(self, module_name, module_path):
def __init__(self, module_name, module_path, tags):
self.tags = tags
self.module_name = module_name
self.module_path = module_path
unittest.TestCase.__init__(self, 'run')
......@@ -1235,6 +1236,24 @@ class PureDoctestTestCase(unittest.TestCase):
except Exception:
pass
try:
from mypy import api as mypy_api
nomypy = False
except ImportError:
nomypy = True
if 'mypy' in self.tags['tag'] and not nomypy:
mypy_result = mypy_api.run((
self.module_path,
'--ignore-missing-imports',
'--follow-imports', 'skip',
))
if mypy_result[2]:
import pdb; pdb.set_trace()
self.fail(mypy_result[0])
is_private_field = re.compile('^_[^_]').match
class _FakeClass(object):
......
# mode: run
# tag: annotation_typing, pure3.0
# tag: annotation_typing, pure3.0, mypy
import cython
......@@ -7,7 +7,7 @@ is_compiled = cython.compiled
MyUnion = cython.union(n=cython.int, x=cython.double)
MyStruct = cython.struct(is_integral=cython.bint, data=MyUnion)
MyStruct2 = cython.typedef(MyStruct[2])
MyStruct2 = cython.typedef(MyStruct[2]) # type: cython.StructType
@cython.ccall # cpdef => C return type
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment