cython

Форк
0
/
cdef_multiple_inheritance_errors.srctree 
91 строка · 1.7 Кб
1
PYTHON setup.py build_ext --inplace
2
PYTHON -c "import runner"
3

4
######## setup.py ########
5

6
from Cython.Build.Dependencies import cythonize
7
from distutils.core import setup
8

9
setup(ext_modules=cythonize("*.pyx"))
10

11
######## notheaptype.pyx ########
12

13
cdef class Base:
14
    pass
15

16
Obj = type(object())
17

18
cdef class Foo(Base, Obj):
19
    pass
20

21
######## wrongbase.pyx ########
22

23
cdef class Base:
24
    pass
25

26
Str = type("")
27

28
cdef class X(Base, Str):
29
    pass
30

31
######## badmro.pyx ########
32

33
class Py(object):
34
    pass
35

36
cdef class X(object, Py):
37
    pass
38

39
######## nodict.pyx ########
40

41
cdef class Base:
42
    pass
43

44
class Py(object):
45
    pass
46

47
cdef class X(Base, Py):
48
    pass
49

50
######## oldstyle.pyx ########
51
# cython: language_level=2
52

53
cdef class Base:
54
    cdef dict __dict__
55

56
class OldStyle:
57
    pass
58

59
cdef class Foo(Base, OldStyle):
60
    pass
61

62
######## runner.py ########
63

64
import sys
65

66
try:
67
    import notheaptype
68
    assert False, "notheaptype"
69
except TypeError as msg:
70
    assert str(msg) == "base class 'object' is not a heap type"
71

72
try:
73
    import wrongbase
74
    assert False, "wrongbase"
75
except TypeError as msg:
76
    assert str(msg) == "best base 'str' must be equal to first base 'wrongbase.Base'"
77

78
try:
79
    import badmro
80
    assert False, "badmro"
81
except TypeError as msg:
82
    assert str(msg).startswith("Cannot create a consistent method resolution")
83

84
try:
85
    import nodict
86
    assert False, "nodict"
87
except TypeError as msg:
88
    assert str(msg) == "extension type 'nodict.X' has no __dict__ slot, but base type 'Py' has: either add 'cdef dict __dict__' to the extension type or add '__slots__ = [...]' to the base type"
89

90
# old-style classes are regular classes in Py3, so this should just work:
91
import oldstyle
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.