cython

Форк
0
/
cyclic_gc.pyx 
160 строк · 5.5 Кб
1
# mode: run
2
# tag: cyclicgc
3

4

5
cimport cython
6

7
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
8
@cython.test_assert_path_exists('//CClassDefNode',
9
                                '//CClassDefNode[@scope]',
10
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
11
cdef class ExtTypeNoGC:
12
    """
13
    >>> obj = ExtTypeNoGC()
14
    >>> obj = ExtTypeNoGC()
15
    >>> obj = ExtTypeNoGC()
16
    >>> obj = ExtTypeNoGC()
17
    >>> obj = ExtTypeNoGC()
18
    >>> obj = ExtTypeNoGC()
19
    """
20

21

22
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
23
@cython.test_assert_path_exists('//CClassDefNode',
24
                                '//CClassDefNode[@scope]',
25
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
26
@cython.final
27
cdef class ExtTypeFinalNoGC:
28
    """
29
    >>> obj = ExtTypeFinalNoGC()
30
    >>> obj = ExtTypeFinalNoGC()
31
    >>> obj = ExtTypeFinalNoGC()
32
    >>> obj = ExtTypeFinalNoGC()
33
    >>> obj = ExtTypeFinalNoGC()
34
    >>> obj = ExtTypeFinalNoGC()
35
    """
36
    cdef bytes s
37

38

39
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
40
@cython.test_assert_path_exists('//CClassDefNode',
41
                                '//CClassDefNode[@scope]',
42
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
43
cdef class ExtSubTypeNoGC(ExtTypeNoGC):
44
    """
45
    >>> obj = ExtSubTypeNoGC()
46
    >>> obj = ExtSubTypeNoGC()
47
    >>> obj = ExtSubTypeNoGC()
48
    >>> obj = ExtSubTypeNoGC()
49
    >>> obj = ExtSubTypeNoGC()
50
    >>> obj = ExtSubTypeNoGC()
51
    """
52

53

54
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
55
@cython.test_assert_path_exists('//CClassDefNode',
56
                                '//CClassDefNode[@scope]',
57
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
58
cdef class ExtTypePyArgsNoGC:
59
    """
60
    >>> obj = ExtTypePyArgsNoGC()
61
    >>> obj = ExtTypePyArgsNoGC()
62
    >>> obj = ExtTypePyArgsNoGC()
63
    >>> obj = ExtTypePyArgsNoGC()
64
    >>> obj = ExtTypePyArgsNoGC()
65
    >>> obj = ExtTypePyArgsNoGC()
66
    """
67
    cdef bytes b
68
    cdef str s
69
    cdef unicode u
70
# eventually, this should work, too:
71
#    cdef ExtTypeFinalNoGC x
72

73

74
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
75
@cython.test_assert_path_exists('//CClassDefNode',
76
                                '//CClassDefNode[@scope]',
77
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
78
cdef class ExtSubTypePyArgsNoGC(ExtTypePyArgsNoGC):
79
    """
80
    >>> obj = ExtSubTypePyArgsNoGC()
81
    >>> obj = ExtSubTypePyArgsNoGC()
82
    >>> obj = ExtSubTypePyArgsNoGC()
83
    >>> obj = ExtSubTypePyArgsNoGC()
84
    >>> obj = ExtSubTypePyArgsNoGC()
85
    >>> obj = ExtSubTypePyArgsNoGC()
86
    """
87

88

89
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
90
@cython.test_assert_path_exists('//CClassDefNode',
91
                                '//CClassDefNode[@scope]',
92
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
93
cdef class ExtTypePyArgsWithGC:
94
    """
95
    >>> obj = ExtTypePyArgsWithGC()
96
    >>> obj = ExtTypePyArgsWithGC()
97
    >>> obj = ExtTypePyArgsWithGC()
98
    >>> obj = ExtTypePyArgsWithGC()
99
    >>> obj = ExtTypePyArgsWithGC()
100
    >>> obj = ExtTypePyArgsWithGC()
101
    >>> obj.create_cycle()
102
    """
103
    cdef bytes b
104
    cdef str s
105
    cdef unicode u
106
    cdef list l
107

108
    def create_cycle(self):
109
        self.l = [self]
110

111

112
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
113
@cython.test_assert_path_exists('//CClassDefNode',
114
                                '//CClassDefNode[@scope]',
115
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
116
cdef class ExtSubTypePyArgsWithGC(ExtTypePyArgsWithGC):
117
    """
118
    >>> obj = ExtSubTypePyArgsWithGC()
119
    >>> obj = ExtSubTypePyArgsWithGC()
120
    >>> obj = ExtSubTypePyArgsWithGC()
121
    >>> obj = ExtSubTypePyArgsWithGC()
122
    >>> obj = ExtSubTypePyArgsWithGC()
123
    >>> obj = ExtSubTypePyArgsWithGC()
124
    >>> obj.create_cycle()
125
    """
126

127

128
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
129
@cython.test_assert_path_exists('//CClassDefNode',
130
                                '//CClassDefNode[@scope]',
131
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
132
cdef class ExtSubTypePlusPyArgsWithGC(ExtSubTypePyArgsWithGC):
133
    """
134
    >>> obj = ExtSubTypePlusPyArgsWithGC()
135
    >>> obj = ExtSubTypePlusPyArgsWithGC()
136
    >>> obj = ExtSubTypePlusPyArgsWithGC()
137
    >>> obj = ExtSubTypePlusPyArgsWithGC()
138
    >>> obj = ExtSubTypePlusPyArgsWithGC()
139
    >>> obj = ExtSubTypePlusPyArgsWithGC()
140
    >>> obj.create_cycle()
141
    """
142
    cdef bytes b2
143
    cdef unicode u2
144

145

146
@cython.test_fail_if_path_exists('//CClassDefNode[@scope.has_cyclic_pyobject_attrs = False]')
147
@cython.test_assert_path_exists('//CClassDefNode',
148
                                '//CClassDefNode[@scope]',
149
                                '//CClassDefNode[@scope.has_cyclic_pyobject_attrs = True]')
150
cdef class ExtSubTypePlusGCPyArgsWithGC(ExtSubTypePlusPyArgsWithGC):
151
    """
152
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
153
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
154
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
155
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
156
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
157
    >>> obj = ExtSubTypePlusGCPyArgsWithGC()
158
    >>> obj.create_cycle()
159
    """
160
    cdef tuple t
161

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

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

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

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