cython

Форк
0
/
module_init_error.srctree 
86 строк · 1.8 Кб
1
PYTHON setup.py build_ext --inplace
2
PYTHON -c "import test_fail_in_init; test_fail_in_init.try_import()"
3
PYTHON -c "import test_fail_in_init_after_atexit; test_fail_in_init_after_atexit.try_import()"
4

5
######## setup.py ########
6

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

10
setup(
11
    ext_modules = cythonize("fail_in_*.pyx")
12
)
13

14
######## test_fail_in_init.py ########
15

16
import sys
17

18
def try_import():
19
    try:
20
        import fail_in_init
21
    except ValueError:
22
        pass
23
    else:
24
        raise RuntimeError("expected ValueError from import")
25

26
    if 'fail_in_init' in sys.modules:
27
        try:
28
            sys.modules['fail_in_init'].fail()
29
        except AttributeError:
30
            pass  # this is "ok enough"
31
        except ValueError:
32
            pass  # this is what we had expected
33
        else:
34
            raise RuntimeError("expected ValueError from call through sys.modules")
35

36
    try:
37
        import fail_in_set_name
38
    except ValueError:
39
        pass
40
    else:
41
        raise RuntimeError("expected ValueError from __set_name__")
42

43
######## fail_in_init.pyx ########
44

45
def fail():
46
    raise ValueError("kaputt")
47

48
fail()
49

50
######## test_fail_in_init_after_atexit.py ########
51

52
def try_import():
53
    try:
54
        import fail_in_init_after_atexit
55
    except ValueError:
56
        pass
57
    else:
58
        raise RuntimeError("expected ValueError from import")
59

60
######## fail_in_init_after_atexit.pyx ########
61

62
X = 5
63

64
def callback():
65
    try:
66
        print(X)
67
    except NameError:
68
        pass  # NameError is acceptable, a crash is not
69

70
import atexit
71
atexit.register(callback)
72

73
def fail():
74
    raise ValueError("holla!")
75

76
fail()
77

78
######## fail_in_set_name.pyx ########
79

80
class SetName:
81

82
    def __set_name__(self, owner, name):
83
        raise ValueError()
84

85
cdef class Klass:
86
    attr = SetName()
87

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

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

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

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