Cython 3.2.3__py3-none-any.whl → 3.2.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- Cython/Compiler/Code.py +10 -0
- Cython/Compiler/ExprNodes.py +2 -2
- Cython/Compiler/FlowControl.py +3 -2
- Cython/Compiler/Nodes.py +6 -4
- Cython/Compiler/Options.py +1 -1
- Cython/Compiler/ParseTreeTransforms.py +3 -1
- Cython/Compiler/Parsing.py +11 -11
- Cython/Compiler/Symtab.py +0 -6
- Cython/Includes/libcpp/exception.pxd +41 -1
- Cython/Shadow.py +2 -2
- Cython/Tests/TestShadow.py +1 -7
- Cython/Utility/Builtins.c +3 -3
- Cython/Utility/StringTools.c +2 -2
- cython-3.2.4.dist-info/METADATA +158 -0
- {cython-3.2.3.dist-info → cython-3.2.4.dist-info}/RECORD +18 -18
- cython-3.2.3.dist-info/METADATA +0 -96
- {cython-3.2.3.dist-info → cython-3.2.4.dist-info}/WHEEL +0 -0
- {cython-3.2.3.dist-info → cython-3.2.4.dist-info}/entry_points.txt +0 -0
- {cython-3.2.3.dist-info → cython-3.2.4.dist-info}/top_level.txt +0 -0
Cython/Compiler/Code.py
CHANGED
|
@@ -2422,7 +2422,17 @@ class GlobalState:
|
|
|
2422
2422
|
writer.putln(f"PyObject **table = {array_cname};")
|
|
2423
2423
|
writer.putln(f"for (Py_ssize_t i=0; i<{constant_count}; ++i) {{")
|
|
2424
2424
|
writer.putln("#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING")
|
|
2425
|
+
# We don't want to set the refcount on shared constants (e.g. cached integers)
|
|
2426
|
+
# because setting the refcount isn't thread-safe. The chances are that most of the constants
|
|
2427
|
+
# that this applies to are already immortal though so that isn't a great loss.
|
|
2428
|
+
writer.putln("#if PY_VERSION_HEX < 0x030E0000")
|
|
2429
|
+
writer.putln("if (_Py_IsOwnedByCurrentThread(table[i]) && Py_REFCNT(table[i]) == 1)")
|
|
2430
|
+
writer.putln("#else")
|
|
2431
|
+
writer.putln("if (PyUnstable_Object_IsUniquelyReferenced(table[i]))")
|
|
2432
|
+
writer.putln("#endif")
|
|
2433
|
+
writer.putln("{")
|
|
2425
2434
|
writer.putln("Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL);")
|
|
2435
|
+
writer.putln("}")
|
|
2426
2436
|
writer.putln("#else")
|
|
2427
2437
|
writer.putln("Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT);")
|
|
2428
2438
|
writer.putln("#endif")
|
Cython/Compiler/ExprNodes.py
CHANGED
|
@@ -10491,8 +10491,8 @@ class PyCFunctionNode(ExprNode, ModuleNameMixin):
|
|
|
10491
10491
|
defaults = '__Pyx_CyFunction_Defaults(struct %s, %s)' % (
|
|
10492
10492
|
self.defaults_entry.type.objstruct_cname, self.result())
|
|
10493
10493
|
for arg, entry in self.defaults:
|
|
10494
|
-
arg.
|
|
10495
|
-
|
|
10494
|
+
if arg.is_dynamic:
|
|
10495
|
+
arg.generate_assignment_code(code, cyfunc_struct_target=f'{defaults}->{entry.cname}')
|
|
10496
10496
|
|
|
10497
10497
|
if self.defaults_tuple:
|
|
10498
10498
|
code.putln('__Pyx_CyFunction_SetDefaultsTuple(%s, %s);' % (
|
Cython/Compiler/FlowControl.py
CHANGED
|
@@ -337,7 +337,8 @@ class NameAssignment:
|
|
|
337
337
|
self.is_arg = False
|
|
338
338
|
self.is_deletion = False
|
|
339
339
|
self.inferred_type = None
|
|
340
|
-
# For generator expression targets
|
|
340
|
+
# For generator expression targets in comprehensions (and possibly other things),
|
|
341
|
+
# the rhs can have a different scope than the lhs.
|
|
341
342
|
self.rhs_scope = rhs_scope
|
|
342
343
|
|
|
343
344
|
def __repr__(self):
|
|
@@ -804,7 +805,7 @@ class ControlFlowAnalysis(CythonTransform):
|
|
|
804
805
|
entry = self.env.lookup(lhs.name)
|
|
805
806
|
if entry is None: # TODO: This shouldn't happen...
|
|
806
807
|
return
|
|
807
|
-
self.flow.mark_assignment(lhs, rhs, entry, rhs_scope=rhs_scope)
|
|
808
|
+
self.flow.mark_assignment(lhs, rhs, entry, rhs_scope=(rhs_scope or self.env))
|
|
808
809
|
elif lhs.is_sequence_constructor:
|
|
809
810
|
for i, arg in enumerate(lhs.args):
|
|
810
811
|
if arg.is_starred:
|
Cython/Compiler/Nodes.py
CHANGED
|
@@ -1078,12 +1078,14 @@ class CArgDeclNode(Node):
|
|
|
1078
1078
|
if self.default:
|
|
1079
1079
|
self.default.annotate(code)
|
|
1080
1080
|
|
|
1081
|
-
def generate_assignment_code(self, code,
|
|
1081
|
+
def generate_assignment_code(self, code, overloaded_assignment=False,
|
|
1082
|
+
cyfunc_struct_target=None):
|
|
1082
1083
|
default = self.default
|
|
1083
|
-
if default is None or default.is_literal:
|
|
1084
|
+
if default is None or (default.is_literal and cyfunc_struct_target is None):
|
|
1084
1085
|
return
|
|
1085
|
-
if
|
|
1086
|
-
|
|
1086
|
+
# Note that even if self.is_dynamic, default may be a literal if it's been
|
|
1087
|
+
# optimized into a literal after analyse_expressions
|
|
1088
|
+
target = cyfunc_struct_target or self.calculate_default_value_code(code)
|
|
1087
1089
|
default.generate_evaluation_code(code)
|
|
1088
1090
|
default.make_owned_reference(code)
|
|
1089
1091
|
result = default.result() if overloaded_assignment else default.result_as(self.type)
|
Cython/Compiler/Options.py
CHANGED
|
@@ -357,7 +357,7 @@ directive_types = {
|
|
|
357
357
|
'auto_pickle': bool,
|
|
358
358
|
'locals': dict,
|
|
359
359
|
'final' : bool, # final cdef classes and methods
|
|
360
|
-
'collection_type': one_of('sequence'),
|
|
360
|
+
'collection_type': one_of('sequence', 'mapping'),
|
|
361
361
|
'nogil' : DEFER_ANALYSIS_OF_ARGUMENTS,
|
|
362
362
|
'gil' : DEFER_ANALYSIS_OF_ARGUMENTS,
|
|
363
363
|
'critical_section' : DEFER_ANALYSIS_OF_ARGUMENTS,
|
|
@@ -1397,6 +1397,8 @@ class InterpretCompilerDirectives(CythonTransform):
|
|
|
1397
1397
|
elif isinstance(old_value, list):
|
|
1398
1398
|
old_value.extend(value)
|
|
1399
1399
|
else:
|
|
1400
|
+
if name == "collection_type" and value != optdict[name]:
|
|
1401
|
+
error(node.pos, "Multiple values of collection_type are not supported")
|
|
1400
1402
|
optdict[name] = value
|
|
1401
1403
|
else:
|
|
1402
1404
|
optdict[name] = value
|
|
@@ -2323,7 +2325,7 @@ if VALUE is not None:
|
|
|
2323
2325
|
|
|
2324
2326
|
members = ', '.join(f'self.{v}' for v in all_members_names) + (',' if len(all_members_names) == 1 else '')
|
|
2325
2327
|
# Even better, we could check PyType_IS_GC.
|
|
2326
|
-
any_notnone_members = ' or '.join([f'self.{e.name} is not None' for e in all_members if e.type.is_pyobject] or ['False'])
|
|
2328
|
+
any_notnone_members = ' or '.join([f'self.{e.name} is not None' for e in all_members if e.type.is_pyobject] or ['False'])
|
|
2327
2329
|
|
|
2328
2330
|
pickle_code = f"""
|
|
2329
2331
|
def __reduce_cython__(self):
|
Cython/Compiler/Parsing.py
CHANGED
|
@@ -550,7 +550,7 @@ def p_trailer(s: PyrexScanner, node1):
|
|
|
550
550
|
# star_expr )
|
|
551
551
|
|
|
552
552
|
@cython.cfunc
|
|
553
|
-
def p_call_parse_args(s: PyrexScanner, allow_genexp: cython.bint = True):
|
|
553
|
+
def p_call_parse_args(s: PyrexScanner, allow_genexp: cython.bint = True) -> tuple:
|
|
554
554
|
# s.sy == '('
|
|
555
555
|
s.next()
|
|
556
556
|
positional_args = []
|
|
@@ -699,7 +699,7 @@ def p_subscript_list(s: PyrexScanner) -> tuple:
|
|
|
699
699
|
#subscript: '.' '.' '.' | test | [test] ':' [test] [':' [test]]
|
|
700
700
|
|
|
701
701
|
@cython.cfunc
|
|
702
|
-
def p_subscript(s: PyrexScanner):
|
|
702
|
+
def p_subscript(s: PyrexScanner) -> list:
|
|
703
703
|
# Parse a subscript and return a list of
|
|
704
704
|
# 1, 2 or 3 ExprNodes, depending on how
|
|
705
705
|
# many slice elements were encountered.
|
|
@@ -731,7 +731,7 @@ def expect_ellipsis(s: PyrexScanner):
|
|
|
731
731
|
|
|
732
732
|
|
|
733
733
|
@cython.cfunc
|
|
734
|
-
def make_slice_nodes(pos, subscripts):
|
|
734
|
+
def make_slice_nodes(pos, subscripts) -> list:
|
|
735
735
|
# Convert a list of subscripts as returned
|
|
736
736
|
# by p_subscript_list into a list of ExprNodes,
|
|
737
737
|
# creating SliceNodes for elements with 2 or
|
|
@@ -1041,7 +1041,7 @@ def p_string_literal_shared_read(
|
|
|
1041
1041
|
return result
|
|
1042
1042
|
|
|
1043
1043
|
@cython.cfunc
|
|
1044
|
-
def _validate_kind_string(pos, systring: str):
|
|
1044
|
+
def _validate_kind_string(pos, systring: str) -> str:
|
|
1045
1045
|
kind_string = systring.rstrip('"\'').lower()
|
|
1046
1046
|
if len(kind_string) <= 1 or (len(kind_string) == 2 and kind_string in "rbrurfrtr"):
|
|
1047
1047
|
return kind_string
|
|
@@ -1137,7 +1137,7 @@ def p_string_literal(s: PyrexScanner, kind_override=None) -> tuple:
|
|
|
1137
1137
|
|
|
1138
1138
|
|
|
1139
1139
|
@cython.cfunc
|
|
1140
|
-
def p_read_ft_string_expression(s: PyrexScanner):
|
|
1140
|
+
def p_read_ft_string_expression(s: PyrexScanner) -> str:
|
|
1141
1141
|
strings = []
|
|
1142
1142
|
while True:
|
|
1143
1143
|
s.next()
|
|
@@ -1154,7 +1154,7 @@ def p_read_ft_string_expression(s: PyrexScanner):
|
|
|
1154
1154
|
@cython.cfunc
|
|
1155
1155
|
def p_ft_string_replacement_field(s: PyrexScanner,
|
|
1156
1156
|
is_raw: cython.bint, is_single_quoted: cython.bint,
|
|
1157
|
-
tf_string_kind: cython.Py_UCS4):
|
|
1157
|
+
tf_string_kind: cython.Py_UCS4) -> list:
|
|
1158
1158
|
result = []
|
|
1159
1159
|
conversion_char = format_spec = expr = None
|
|
1160
1160
|
t_string_expression = None
|
|
@@ -1264,7 +1264,7 @@ def p_ft_string_replacement_field(s: PyrexScanner,
|
|
|
1264
1264
|
def p_ft_string_middles(s: PyrexScanner,
|
|
1265
1265
|
is_raw: cython.bint, is_single_quoted: cython.bint,
|
|
1266
1266
|
is_format_string: cython.bint,
|
|
1267
|
-
tf_string_kind: cython.Py_UCS4):
|
|
1267
|
+
tf_string_kind: cython.Py_UCS4) -> list:
|
|
1268
1268
|
middles: list = []
|
|
1269
1269
|
builder = StringEncoding.UnicodeLiteralBuilder()
|
|
1270
1270
|
pos = s.position()
|
|
@@ -1302,7 +1302,7 @@ def p_ft_string_middles(s: PyrexScanner,
|
|
|
1302
1302
|
return middles
|
|
1303
1303
|
|
|
1304
1304
|
@cython.cfunc
|
|
1305
|
-
def p_ft_string_literal(s: PyrexScanner):
|
|
1305
|
+
def p_ft_string_literal(s: PyrexScanner) -> tuple:
|
|
1306
1306
|
# s.sy == BEGIN_FT_STRING
|
|
1307
1307
|
kind_string = _validate_kind_string(s.position(), s.systring)
|
|
1308
1308
|
tf_string_kind: cython.Py_UCS4 = 't' if 't' in kind_string else 'f'
|
|
@@ -1988,7 +1988,7 @@ def p_from_import_statement(s: PyrexScanner, first_statement: cython.bint = 0):
|
|
|
1988
1988
|
|
|
1989
1989
|
|
|
1990
1990
|
@cython.cfunc
|
|
1991
|
-
def p_imported_name(s: PyrexScanner):
|
|
1991
|
+
def p_imported_name(s: PyrexScanner) -> tuple:
|
|
1992
1992
|
pos = s.position()
|
|
1993
1993
|
name = p_ident(s)
|
|
1994
1994
|
as_name = p_as_name(s)
|
|
@@ -2684,7 +2684,7 @@ def p_suite_with_docstring(s: PyrexScanner, ctx, with_doc_only: cython.bint = Fa
|
|
|
2684
2684
|
|
|
2685
2685
|
|
|
2686
2686
|
@cython.cfunc
|
|
2687
|
-
def p_positional_and_keyword_args(s: PyrexScanner, end_sy_set, templates = None):
|
|
2687
|
+
def p_positional_and_keyword_args(s: PyrexScanner, end_sy_set, templates = None) -> tuple:
|
|
2688
2688
|
"""
|
|
2689
2689
|
Parses positional and keyword arguments. end_sy_set
|
|
2690
2690
|
should contain any s.sy that terminate the argument list.
|
|
@@ -4713,7 +4713,7 @@ def p_class_pattern(s: PyrexScanner):
|
|
|
4713
4713
|
|
|
4714
4714
|
|
|
4715
4715
|
@cython.cfunc
|
|
4716
|
-
def p_keyword_pattern(s: PyrexScanner):
|
|
4716
|
+
def p_keyword_pattern(s: PyrexScanner) -> tuple:
|
|
4717
4717
|
if s.sy != "IDENT":
|
|
4718
4718
|
s.error("Expected identifier")
|
|
4719
4719
|
arg = p_name(s, s.systring)
|
Cython/Compiler/Symtab.py
CHANGED
|
@@ -1901,12 +1901,6 @@ class ModuleScope(Scope):
|
|
|
1901
1901
|
if self.directives.get('final'):
|
|
1902
1902
|
entry.type.is_final_type = True
|
|
1903
1903
|
collection_type = self.directives.get('collection_type')
|
|
1904
|
-
if collection_type:
|
|
1905
|
-
from .UtilityCode import NonManglingModuleScope
|
|
1906
|
-
if not isinstance(self, NonManglingModuleScope):
|
|
1907
|
-
# TODO - DW would like to make it public, but I'm making it internal-only
|
|
1908
|
-
# for now to avoid adding new features without consensus
|
|
1909
|
-
error(pos, "'collection_type' is not a public cython directive")
|
|
1910
1904
|
if collection_type == 'sequence':
|
|
1911
1905
|
entry.type.has_sequence_flag = True
|
|
1912
1906
|
|
|
@@ -6,7 +6,47 @@ cdef extern from "<exception>" namespace "std" nogil:
|
|
|
6
6
|
|
|
7
7
|
exception_ptr make_exception_ptr[E](E e) noexcept
|
|
8
8
|
void rethrow_exception(exception_ptr) except +
|
|
9
|
-
|
|
9
|
+
exception_ptr current_exception() noexcept
|
|
10
|
+
|
|
11
|
+
cdef cppclass exception:
|
|
12
|
+
const char* what() noexcept
|
|
13
|
+
|
|
14
|
+
cdef extern from "<stdexcept>" namespace "std" nogil:
|
|
15
|
+
# Omitting the constructors of derived exception classes for now.
|
|
16
|
+
# They can't be stack-allocated easily in Cython because they don't have
|
|
17
|
+
# a nullary constructor. They also can't be thrown in Cython.
|
|
18
|
+
# So they're most useful just as class names when implementing
|
|
19
|
+
# exception handlers.
|
|
20
|
+
cdef cppclass logic_error(exception):
|
|
21
|
+
pass
|
|
22
|
+
cdef cppclass invalid_argument(logic_error):
|
|
23
|
+
pass
|
|
24
|
+
cdef cppclass domain_error(logic_error):
|
|
25
|
+
pass
|
|
26
|
+
cdef cppclass length_error(logic_error):
|
|
27
|
+
pass
|
|
28
|
+
cdef cppclass out_of_range(logic_error):
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
cdef cppclass runtime_error(exception):
|
|
32
|
+
pass
|
|
33
|
+
cdef cppclass range_error(runtime_error):
|
|
34
|
+
pass
|
|
35
|
+
cdef cppclass overflow_error(runtime_error):
|
|
36
|
+
pass
|
|
37
|
+
|
|
38
|
+
cdef cppclass bad_typeid(exception):
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
cdef cppclass bad_cast(exception):
|
|
42
|
+
pass
|
|
43
|
+
|
|
44
|
+
cdef cppclass bad_alloc(exception):
|
|
45
|
+
pass
|
|
46
|
+
|
|
47
|
+
cdef cppclass bad_exception(exception):
|
|
48
|
+
pass
|
|
49
|
+
|
|
10
50
|
|
|
11
51
|
cdef extern from *:
|
|
12
52
|
"""
|
Cython/Shadow.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# cython.* namespace for pure mode.
|
|
2
2
|
|
|
3
3
|
# Possible version formats: "3.1.0", "3.1.0a1", "3.1.0a1.dev0"
|
|
4
|
-
__version__ = "3.2.
|
|
4
|
+
__version__ = "3.2.4"
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
# BEGIN shameless copy from Cython/minivect/minitypes.py
|
|
@@ -103,7 +103,7 @@ class _Optimization:
|
|
|
103
103
|
cclass = ccall = cfunc = _EmptyDecoratorAndManager()
|
|
104
104
|
|
|
105
105
|
annotation_typing = returns = wraparound = boundscheck = initializedcheck = \
|
|
106
|
-
nonecheck = embedsignature = cdivision = cdivision_warnings = \
|
|
106
|
+
nonecheck = embedsignature = cdivision = cdivision_warnings = collection_type = \
|
|
107
107
|
always_allow_keywords = profile = linetrace = infer_types = \
|
|
108
108
|
unraisable_tracebacks = freelist = auto_pickle = cpow = trashcan = \
|
|
109
109
|
auto_cpdef = c_api_binop_methods = \
|
Cython/Tests/TestShadow.py
CHANGED
|
@@ -8,9 +8,7 @@ class TestShadow(unittest.TestCase):
|
|
|
8
8
|
missing_directives = []
|
|
9
9
|
extra_directives = []
|
|
10
10
|
for full_directive in Options.directive_types.keys():
|
|
11
|
-
|
|
12
|
-
split_directive = full_directive.split('.')
|
|
13
|
-
directive, rest = split_directive[0], split_directive[1:]
|
|
11
|
+
directive, *rest = full_directive.split('.')
|
|
14
12
|
|
|
15
13
|
scope = Options.directive_scopes.get(full_directive)
|
|
16
14
|
if scope and len(scope) == 1 and scope[0] == "module":
|
|
@@ -18,10 +16,6 @@ class TestShadow(unittest.TestCase):
|
|
|
18
16
|
if hasattr(Shadow, directive):
|
|
19
17
|
extra_directives.append(full_directive)
|
|
20
18
|
continue
|
|
21
|
-
if full_directive == "collection_type":
|
|
22
|
-
# collection_type is current restricted to utility code only
|
|
23
|
-
# so doesn't need to be in Shadow
|
|
24
|
-
continue
|
|
25
19
|
if full_directive == "staticmethod":
|
|
26
20
|
# staticmethod is a weird special-case and not really intended to be
|
|
27
21
|
# used from the cython module
|
Cython/Utility/Builtins.c
CHANGED
|
@@ -631,13 +631,13 @@ static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *ke
|
|
|
631
631
|
|
|
632
632
|
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) {
|
|
633
633
|
PyObject* value;
|
|
634
|
-
#if CYTHON_COMPILING_IN_LIMITED_API &&
|
|
634
|
+
#if __PYX_LIMITED_VERSION_HEX >= 0x030F0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4)
|
|
635
|
+
PyDict_SetDefaultRef(d, key, default_value, &value);
|
|
636
|
+
#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000
|
|
635
637
|
PyObject *args[] = {d, key, default_value};
|
|
636
638
|
value = PyObject_VectorcallMethod(PYIDENT("setdefault"), args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
|
|
637
639
|
#elif CYTHON_COMPILING_IN_LIMITED_API
|
|
638
640
|
value = PyObject_CallMethodObjArgs(d, PYIDENT("setdefault"), key, default_value, NULL);
|
|
639
|
-
#elif PY_VERSION_HEX >= 0x030d0000
|
|
640
|
-
PyDict_SetDefaultRef(d, key, default_value, &value);
|
|
641
641
|
#else
|
|
642
642
|
value = PyDict_SetDefault(d, key, default_value);
|
|
643
643
|
if (unlikely(!value)) return NULL;
|
Cython/Utility/StringTools.c
CHANGED
|
@@ -59,7 +59,7 @@ static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int al
|
|
|
59
59
|
//@requires: TypeConversion.c::GCCDiagnostics
|
|
60
60
|
|
|
61
61
|
static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) {
|
|
62
|
-
PyObject *module, *decompress, *compressed_bytes, *decompressed;
|
|
62
|
+
PyObject *module = NULL, *decompress, *compressed_bytes, *decompressed;
|
|
63
63
|
|
|
64
64
|
const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib";
|
|
65
65
|
|
|
@@ -69,7 +69,7 @@ static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int al
|
|
|
69
69
|
#if __PYX_LIMITED_VERSION_HEX >= 0x030e0000
|
|
70
70
|
if (algo == 3) {
|
|
71
71
|
PyObject *fromlist = Py_BuildValue("[O]", methodname);
|
|
72
|
-
if (unlikely(!fromlist))
|
|
72
|
+
if (unlikely(!fromlist)) goto bad;
|
|
73
73
|
module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0);
|
|
74
74
|
Py_DECREF(fromlist);
|
|
75
75
|
} else
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: Cython
|
|
3
|
+
Version: 3.2.4
|
|
4
|
+
Summary: The Cython compiler for writing C extensions in the Python language.
|
|
5
|
+
Home-page: https://cython.org/
|
|
6
|
+
Author: Robert Bradshaw, Stefan Behnel, David Woods, Greg Ewing, et al.
|
|
7
|
+
Author-email: cython-devel@python.org
|
|
8
|
+
License: Apache-2.0
|
|
9
|
+
Project-URL: Documentation, https://cython.readthedocs.io/
|
|
10
|
+
Project-URL: Donate, https://cython.readthedocs.io/en/latest/src/donating.html
|
|
11
|
+
Project-URL: Source Code, https://github.com/cython/cython
|
|
12
|
+
Project-URL: Bug Tracker, https://github.com/cython/cython/issues/
|
|
13
|
+
Project-URL: User Group, https://groups.google.com/g/cython-users
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
28
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
29
|
+
Classifier: Programming Language :: Python :: Implementation :: Stackless
|
|
30
|
+
Classifier: Programming Language :: C
|
|
31
|
+
Classifier: Programming Language :: C++
|
|
32
|
+
Classifier: Programming Language :: Cython
|
|
33
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
34
|
+
Classifier: Topic :: Software Development :: Compilers
|
|
35
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
36
|
+
Classifier: Typing :: Typed
|
|
37
|
+
Requires-Python: >=3.8
|
|
38
|
+
Description-Content-Type: text/x-rst
|
|
39
|
+
|
|
40
|
+
The Cython language makes writing C extensions for the Python language as
|
|
41
|
+
easy as Python itself. Cython is a source code translator based on Pyrex_,
|
|
42
|
+
but supports more cutting edge functionality and optimizations.
|
|
43
|
+
|
|
44
|
+
The Cython language is a superset of the Python language (almost all Python
|
|
45
|
+
code is also valid Cython code), but Cython additionally supports optional
|
|
46
|
+
static typing to natively call C functions, operate with C++ classes and
|
|
47
|
+
declare fast C types on variables and class attributes. This allows the
|
|
48
|
+
compiler to generate very efficient C code from Cython code.
|
|
49
|
+
|
|
50
|
+
This makes Cython the ideal language for writing glue code for external
|
|
51
|
+
C/C++ libraries, and for fast C modules that speed up the execution of
|
|
52
|
+
Python code.
|
|
53
|
+
|
|
54
|
+
The newest Cython release can always be downloaded from https://cython.org/.
|
|
55
|
+
Unpack the tarball or zip file, enter the directory, and then run::
|
|
56
|
+
|
|
57
|
+
pip install .
|
|
58
|
+
|
|
59
|
+
Note that for one-time builds, e.g. for CI/testing, on platforms that are not
|
|
60
|
+
covered by one of the wheel packages provided on PyPI *and* the pure Python wheel
|
|
61
|
+
that we provide is not used, it is substantially faster than a full source build
|
|
62
|
+
to install an uncompiled (slower) version of Cython with::
|
|
63
|
+
|
|
64
|
+
NO_CYTHON_COMPILE=true pip install .
|
|
65
|
+
|
|
66
|
+
.. _Pyrex: https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
|
|
67
|
+
|
|
68
|
+
3.2.4 (2026-01-04)
|
|
69
|
+
==================
|
|
70
|
+
|
|
71
|
+
Features added
|
|
72
|
+
--------------
|
|
73
|
+
|
|
74
|
+
* In preparation of Cython 3.3, a new decorator ``@collection_type(tname)`` can be used
|
|
75
|
+
to advertise an extension type as being a ``'sequence'`` or ``'mapping'``. This currently
|
|
76
|
+
only has the effect of setting the ``Py_TPFLAGS_SEQUENCE`` flag on the type or not, but
|
|
77
|
+
is provided for convenience to allow using the new decorator already in Cython 3.2 code.
|
|
78
|
+
|
|
79
|
+
* Several C++ exception declarations were added to ``libcpp.exceptions``.
|
|
80
|
+
(Github issue https://github.com/cython/cython/issues/7389)
|
|
81
|
+
|
|
82
|
+
Bugs fixed
|
|
83
|
+
----------
|
|
84
|
+
|
|
85
|
+
* Pseudo-literal default values of function arguments like ``arg=str()`` could generate
|
|
86
|
+
invalid C code when internally converted into a real literal.
|
|
87
|
+
(Github issue https://github.com/cython/cython/issues/6192)
|
|
88
|
+
|
|
89
|
+
* The pickle serialisation of extension types using the ``auto_pickle`` feature was
|
|
90
|
+
larger than necessary since 3.2.0 for types without Python object attributes.
|
|
91
|
+
It is now back to the state before 3.2.0 again.
|
|
92
|
+
(Github issue https://github.com/cython/cython/issues/7443)
|
|
93
|
+
|
|
94
|
+
* Constants are now only made immortal on freethreading Python if they are not shared.
|
|
95
|
+
(Github issue https://github.com/cython/cython/issues/7439)
|
|
96
|
+
|
|
97
|
+
* ``PyDict_SetDefaultRef()`` is now used when available to avoid temporary borrowed references.
|
|
98
|
+
(Github issue https://github.com/cython/cython/issues/7347)
|
|
99
|
+
|
|
100
|
+
* Includes all fixes as of Cython 3.1.8.
|
|
101
|
+
|
|
102
|
+
3.1.8 (2026-01-03):
|
|
103
|
+
|
|
104
|
+
* Assignment expressions used in comprehensions could look at the wrong scope,
|
|
105
|
+
thus using different variables and different data.
|
|
106
|
+
(Github issue https://github.com/cython/cython/issues/6547)
|
|
107
|
+
|
|
108
|
+
* Some internal C symbols were not declared as ``static``, preventing static linking
|
|
109
|
+
of multiple modules.
|
|
110
|
+
Patch by Yury Popov. (Github issue https://github.com/cython/cython/issues/7310)
|
|
111
|
+
|
|
112
|
+
* Accidentally using ``except +`` in C mode did not raise a compile error but generated
|
|
113
|
+
invalid C code leading to obscure error messages.
|
|
114
|
+
Patch by user202729. (Github issue https://github.com/cython/cython/issues/6560)
|
|
115
|
+
|
|
116
|
+
3.1.7 (2025-11-12):
|
|
117
|
+
|
|
118
|
+
* Unicode characters formatted from C integers with padding, as in ``f"{value:XXc}"``,
|
|
119
|
+
could result in invalid Python string objects since Cython 3.1.0.
|
|
120
|
+
Also, lone surrogates failed to format in this way.
|
|
121
|
+
(Github issue https://github.com/cython/cython/issues/7298)
|
|
122
|
+
|
|
123
|
+
* Assigning nested structs from a list of structs (item by item) could crash Cython.
|
|
124
|
+
(Github issue https://github.com/cython/cython/issues/7308)
|
|
125
|
+
|
|
126
|
+
* Cython incorrectly called ``PyList_GetItemRef()`` in PyPy and GraalPython before Py3.13.
|
|
127
|
+
(Github issue https://github.com/cython/cython/issues/7269)
|
|
128
|
+
|
|
129
|
+
* Trying to instantiate internal types used by Cython is now prohibited.
|
|
130
|
+
(Github issue https://github.com/cython/cython/issues/7263)
|
|
131
|
+
|
|
132
|
+
3.1.6 (2025-10-23):
|
|
133
|
+
|
|
134
|
+
* Unicode characters formatted from C integers with ``f"{value:c}"`` could result in
|
|
135
|
+
invalid Python string objects since Cython 3.1.0.
|
|
136
|
+
(Github issue https://github.com/cython/cython/issues/7240)
|
|
137
|
+
|
|
138
|
+
* ``cythonize`` (program and function) now uses ``concurrent.futures.ProcessPoolExecutor``
|
|
139
|
+
instead of ``multiprocessing.Pool`` to fix a hang on build failures in parallel builds.
|
|
140
|
+
A possible work-around is to disable parallel builds.
|
|
141
|
+
Patch by Sviatoslav Sydorenko. (Github issue https://github.com/cython/cython/issues/7183)
|
|
142
|
+
|
|
143
|
+
3.1.5 (2025-10-20):
|
|
144
|
+
|
|
145
|
+
* Conversion from C++ strings longer than ``PY_SSIZE_T_MAX`` did not validate the length.
|
|
146
|
+
|
|
147
|
+
* Some non-Limited API code was incorrectly used in generated header files.
|
|
148
|
+
(Github issue https://github.com/cython/cython/issues/7157)
|
|
149
|
+
|
|
150
|
+
* Optimised unpacking of Python integers in expressions uses a slightly safer scheme.
|
|
151
|
+
(Github issue https://github.com/cython/cython/issues/7134)
|
|
152
|
+
|
|
153
|
+
* Empty return statements were not always reported when tracing.
|
|
154
|
+
(Github issue https://github.com/cython/cython/issues/7022)
|
|
155
|
+
|
|
156
|
+
* Value conversion errors when tracing C return statements no longer fail the trace
|
|
157
|
+
but fall back to reporting ``None`` returns instead.
|
|
158
|
+
(Github issue https://github.com/cython/cython/issues/6503)
|
|
@@ -2,7 +2,7 @@ cython.py,sha256=OTJCP0F_fecQWMsGOPJDuFU7brM1ScJAATH6ek98ho4,632
|
|
|
2
2
|
Cython/CodeWriter.py,sha256=k1SAPvsjXum7dhX9IjZ3wXuDUOzzFKYEbNZSxMKEwos,24276
|
|
3
3
|
Cython/Coverage.py,sha256=WGY5BW1nBcJ86f4Lrs6ZZIuFKCdngsEizs4Kor0iRsc,18783
|
|
4
4
|
Cython/Debugging.py,sha256=vFtJhn7QstMf5gnYru2qHIz5ZjPg1KSlZVGHr-pBCwM,552
|
|
5
|
-
Cython/Shadow.py,sha256=
|
|
5
|
+
Cython/Shadow.py,sha256=jz6jdcQf_U0c1hhGe-uyvG2MXY-uw_01IXPr6pGac64,19650
|
|
6
6
|
Cython/Shadow.pyi,sha256=BaaRtWtFlBVM14LOD9ql-9Uw1UDZV3AOT2AWULk1WUw,18597
|
|
7
7
|
Cython/StringIOTree.py,sha256=8u4R5jhUzqYvSX1w5_RrvxbgUvaMqW8jhQgXcCNKIkE,5570
|
|
8
8
|
Cython/TestUtils.py,sha256=rph07UD41dNbdOjqQx_vNu2c0b3Ib1UeMxNYao_vxJU,15584
|
|
@@ -34,15 +34,15 @@ Cython/Compiler/Buffer.py,sha256=NMqvFYIofuS93840lWrNcvDXlBhuXgKLoEuMs0PffLk,269
|
|
|
34
34
|
Cython/Compiler/Builtin.py,sha256=sfW7MGgRm39TG2QoTF0GPhIVVy_8gW-eylGFaLRiy8I,42433
|
|
35
35
|
Cython/Compiler/CmdLine.py,sha256=6u--_tFCXMEjDQaqYXbH4AXed5jXcOhBWGefngFB_Aw,13339
|
|
36
36
|
Cython/Compiler/Code.pxd,sha256=-bYyHehjGEiFoe8bqT-2djaHann3jnU86gVgymoIpL0,3918
|
|
37
|
-
Cython/Compiler/Code.py,sha256=
|
|
37
|
+
Cython/Compiler/Code.py,sha256=YzRbI3MUjNHLDep1KB3ib1AA-EOuenOnQJ7QJqkKwvU,145056
|
|
38
38
|
Cython/Compiler/CodeGeneration.py,sha256=aEW8IwXvwEOsde0-RxvAi_cb8_qdaDGxH_nS_VFwKWc,1068
|
|
39
39
|
Cython/Compiler/CythonScope.py,sha256=b_RU0YKr4UYzfrhAJE9xNdYAHi1H44hczsbBA9tiq6E,7325
|
|
40
40
|
Cython/Compiler/Dataclass.py,sha256=NhP7E63rJzLpE98ZVrYCbNt-W0aYLh9r29e6yT0KnCQ,36595
|
|
41
41
|
Cython/Compiler/DebugFlags.py,sha256=-ht7qWQyoJO6H5o0XJgwVjj5gWayuol-H2HoLqiCXsE,713
|
|
42
42
|
Cython/Compiler/Errors.py,sha256=_qycMnE9-dH-uh--Wv20jFXlXkRl8UGIAsAdlIig9xM,9160
|
|
43
|
-
Cython/Compiler/ExprNodes.py,sha256
|
|
43
|
+
Cython/Compiler/ExprNodes.py,sha256=-GxXrFDaf_oX_GWAUE9AUkd_7Pilulb3YfeVOx7BthU,635422
|
|
44
44
|
Cython/Compiler/FlowControl.pxd,sha256=0wDFfkjWddMSOjs76KQSePJBMS1CQk5RjESRHXRkYww,2499
|
|
45
|
-
Cython/Compiler/FlowControl.py,sha256=
|
|
45
|
+
Cython/Compiler/FlowControl.py,sha256=MInme8kZXFVISMeKxmKHblHCNvHyzjwH5QL_jztFWmM,50891
|
|
46
46
|
Cython/Compiler/FusedNode.py,sha256=gXGXpM6XPZtVT7fGr5g19Id0flqQf4OrcR5_zn1VP4Y,41407
|
|
47
47
|
Cython/Compiler/Future.py,sha256=NFtSWCJYqPlEqWZ5Ob_bv_pDfW6iS7pPYWeGH1OGA5g,629
|
|
48
48
|
Cython/Compiler/Interpreter.py,sha256=2C-tJZkVM_8PM48PF1QGJHy_ohTjkWKTc-xdaRTG6RQ,1831
|
|
@@ -53,20 +53,20 @@ Cython/Compiler/MatchCaseNodes.py,sha256=yVGVAsc1yrda1jHTAI7mZ2-SL67tNdcfOn-ugdC
|
|
|
53
53
|
Cython/Compiler/MemoryView.py,sha256=pyy1oidHhmYAprfxjhX7fweDXzrxMkEbSICKFm2vd4o,31485
|
|
54
54
|
Cython/Compiler/ModuleNode.py,sha256=KfHvXpp8G8S1i_1-xMwqzflqnDWMJRRSuvu0pZhGNWY,195154
|
|
55
55
|
Cython/Compiler/Naming.py,sha256=xneFFCsB68xZhghXAxA2GnRrooWMumxss20B1I0avqk,11159
|
|
56
|
-
Cython/Compiler/Nodes.py,sha256=
|
|
56
|
+
Cython/Compiler/Nodes.py,sha256=cQLsyXcyrwme2B9KrX-kPO6gJgvLz2lnxkMO79HLUGI,455112
|
|
57
57
|
Cython/Compiler/Optimize.py,sha256=CX-UEAmTqAc4JsMxpRsKPx_7yaaEzwewcxHc7c2Roq0,228209
|
|
58
|
-
Cython/Compiler/Options.py,sha256=
|
|
58
|
+
Cython/Compiler/Options.py,sha256=GkzO1lGVqwgHE0PzPEERwmsTUv5UYCxyJMK3iHJv8SQ,32073
|
|
59
59
|
Cython/Compiler/ParseTreeTransforms.pxd,sha256=mkdSaFvc5we32bs0RNFwbODQMsTHIU0jIlpZuFtHnaU,2268
|
|
60
|
-
Cython/Compiler/ParseTreeTransforms.py,sha256=
|
|
60
|
+
Cython/Compiler/ParseTreeTransforms.py,sha256=_iOgpLJF_cQ42FkTrkPHeORwSmBgxYujelB8eVqWA9o,186877
|
|
61
61
|
Cython/Compiler/Parsing.pxd,sha256=A5Ckd1TecRLV_NDx4IzhquYdMsM0BGcDWh7LyXOjKIg,351
|
|
62
|
-
Cython/Compiler/Parsing.py,sha256=
|
|
62
|
+
Cython/Compiler/Parsing.py,sha256=6uZTj0cQLobkVyb-91mO_tUlqxytq-4M4x-6utZAJiw,156985
|
|
63
63
|
Cython/Compiler/Pipeline.py,sha256=JyYMnRekoKRBe9yOvAuW39Gy-pTitJm5jD_qfO9BAeU,16230
|
|
64
64
|
Cython/Compiler/PyrexTypes.py,sha256=2qtM3pHiMwMdL6yR6iG6xwqR2JA3tL5S7JWmvORIEpY,222972
|
|
65
65
|
Cython/Compiler/Pythran.py,sha256=wiRE1buAxQ0NFbxg7DHyyd03I6qgLp-KP_fokAvSii4,7888
|
|
66
66
|
Cython/Compiler/Scanning.pxd,sha256=vcNaZoZdifzj5H_cbFa1eACNNCKko9iwWaOHuWQDfWs,1358
|
|
67
67
|
Cython/Compiler/Scanning.py,sha256=kZI5h8k3ZoLA_nqCAx3nY2QZljuFi3QwpjZ9N9d6GGc,25212
|
|
68
68
|
Cython/Compiler/StringEncoding.py,sha256=0o6B-tFxKhUdQ79eJfHZhdLun69qdkVUeznffpBAxtI,8487
|
|
69
|
-
Cython/Compiler/Symtab.py,sha256=
|
|
69
|
+
Cython/Compiler/Symtab.py,sha256=gGJU2_0b_kDiWDT5W7ml-3VeLK4oLbtTciLRwiAnHz8,137382
|
|
70
70
|
Cython/Compiler/TreeFragment.py,sha256=1AscujwN_mCFeO137PGy1ghCnJ17L9uYoJfqc-7h9VY,9514
|
|
71
71
|
Cython/Compiler/TreePath.py,sha256=Vht_mzZpptXKJw2t_TM-PBYHtZIXXvZFWxjNkhPr9yg,7960
|
|
72
72
|
Cython/Compiler/TypeInference.py,sha256=fmetS6rcT_ELhkCWMOukgOF5QarS-z0EyhvGudwvZuM,22446
|
|
@@ -189,7 +189,7 @@ Cython/Includes/libcpp/cmath.pxd,sha256=-_jnjIWY47jybkNnGrMk8ewZeGaWU0ezMWAZm9UC
|
|
|
189
189
|
Cython/Includes/libcpp/complex.pxd,sha256=JtuQuknvS6GQ0FfyJGQ914DXvzNEaF1-z9D0jST6gXM,2995
|
|
190
190
|
Cython/Includes/libcpp/condition_variable.pxd,sha256=G3i6e6j4KQtO-dOUWUVc7-BcYT1HRKQCCn9zUp4B3mA,18168
|
|
191
191
|
Cython/Includes/libcpp/deque.pxd,sha256=SwgYrnqq6OMQMSOEFTZpnpRsii7pIAT-06bLxMS5w7M,6718
|
|
192
|
-
Cython/Includes/libcpp/exception.pxd,sha256=
|
|
192
|
+
Cython/Includes/libcpp/exception.pxd,sha256=n8o8qSyrquGmkoW4JrCzyW0X1IcurW5YNLbvtlpi3vA,4254
|
|
193
193
|
Cython/Includes/libcpp/execution.pxd,sha256=I2KizUy9DGm_0edrd2BFdHPwyeip2ZcDxqdwb0t7taI,515
|
|
194
194
|
Cython/Includes/libcpp/forward_list.pxd,sha256=o2ThwKyJWZrNT4ZMB1aYmf-2wqYiqSCDdfVswpo8S8I,2429
|
|
195
195
|
Cython/Includes/libcpp/functional.pxd,sha256=kMul7WB1J0X2-611AMtXq6sP9jYYk3YO8zZoDKFaeDU,722
|
|
@@ -261,7 +261,7 @@ Cython/Tempita/_tempita.py,sha256=lj6mlSNyuJ3hHIsODq7lWbzLyL5Gak6ZVr0tc2vA2qI,37
|
|
|
261
261
|
Cython/Tests/TestCodeWriter.py,sha256=_LonlPtsfkTLZBEQXMk8rOyJVvq417uzf01ha5alwGE,3783
|
|
262
262
|
Cython/Tests/TestCythonUtils.py,sha256=VnOT9GxbE3uxEOVYms8UKFRy2w0IUEinQay8BZ6VQ8k,6691
|
|
263
263
|
Cython/Tests/TestJediTyper.py,sha256=hroG-mBTs3HzIXCnZTDJuXDSUbVGrorIQGShONTqpxU,6780
|
|
264
|
-
Cython/Tests/TestShadow.py,sha256=
|
|
264
|
+
Cython/Tests/TestShadow.py,sha256=EF4kC4iC0Ng_2DUj2H9p5oDd5DQa9RVXY-d9iHYPSMk,4748
|
|
265
265
|
Cython/Tests/TestStringIOTree.py,sha256=vTuu3z32WTcmJaf0fBq62NMghYtaPL2rRnfdl2WM--4,1946
|
|
266
266
|
Cython/Tests/TestTestUtils.py,sha256=w4SVcZ8G9Brr_2XGkoQl1EkWR8_sI9LPDAw2cCRQ13U,2901
|
|
267
267
|
Cython/Tests/__init__.py,sha256=jOqtmPLCvMCq0xVMwGekuLpBmVgq0xtPFmUePySdOjs,13
|
|
@@ -269,7 +269,7 @@ Cython/Tests/xmlrunner.py,sha256=1X79TBIYWOcZIzoylOSu9zULxVIR4xvq-RZ7f8Fn600,146
|
|
|
269
269
|
Cython/Utility/AsyncGen.c,sha256=MG4LN14ozyq3JruA1Ad8I9ZnjlASxO2kwfvHTcAHXuU,33376
|
|
270
270
|
Cython/Utility/Buffer.c,sha256=TcJ4eSxi1NxD51NH2GEK-dXgXdmVFIQcHSq22azfB2U,28258
|
|
271
271
|
Cython/Utility/BufferFormatFromTypeInfo.pxd,sha256=KoGGKw7rW8Utav9xrwVZpsLX-vlpFe3Xv0hmp45PimM,97
|
|
272
|
-
Cython/Utility/Builtins.c,sha256=
|
|
272
|
+
Cython/Utility/Builtins.c,sha256=Ctej-HIvVSiZqTNPvh1hEEojRcGDP6LwzVJOOiPrgXA,26814
|
|
273
273
|
Cython/Utility/CConvert.pyx,sha256=UFlPDRT9anal0RpY03hXsejEcwp-RXJSnLy6LbbnmPQ,4471
|
|
274
274
|
Cython/Utility/CMath.c,sha256=rP6O5u23EybDGimRCHfy8WTpyxhPu5G1F6ksEmrgKnQ,3044
|
|
275
275
|
Cython/Utility/CommonStructures.c,sha256=cXOrFQv0DP8QX2CF4u_2O2lFW41WC3nTNwSKRVt3B7M,7926
|
|
@@ -296,7 +296,7 @@ Cython/Utility/Optimize.c,sha256=AHaZlr8XCp6E2QOBNlUAEIhRUolKp0UyRJxh6jilqjk,599
|
|
|
296
296
|
Cython/Utility/Overflow.c,sha256=9C-WIzd4k4uSD7IrLVIJz8fEMK1jFt9UR4WRjDlarYk,15689
|
|
297
297
|
Cython/Utility/Printing.c,sha256=h3F9eyCXSs284Y8DZRivKtoAOcx5jIYPeNFOSD59foc,2898
|
|
298
298
|
Cython/Utility/Profile.c,sha256=JPglBHCdnTtyGj0JKzPtfN0djAIe6P5FVAqBQt43RZo,41218
|
|
299
|
-
Cython/Utility/StringTools.c,sha256=
|
|
299
|
+
Cython/Utility/StringTools.c,sha256=N7tFfz0pGcQdYhMAoUR41gSwX-BcfpQiDJrBCS-I1wM,50852
|
|
300
300
|
Cython/Utility/Synchronization.c,sha256=B3sJpm2UwNGkjWIeMDF8AqCgtttASNIPRXHvA7kXLKE,18675
|
|
301
301
|
Cython/Utility/TString.c,sha256=8cAAcx70pSeYH9Xw98OPmYBUV1LtgwmIFr54Swvuqa0,14001
|
|
302
302
|
Cython/Utility/TestCyUtilityLoader.pyx,sha256=91lWWJub7l_6xNn3ncrvQZZ94RpkQzEx2NtAaFpvrxY,152
|
|
@@ -310,8 +310,8 @@ Cython/Utility/arrayarray.h,sha256=hjXya3s-GoN4mKZTKUlyqPfT3tzf0GiansnSkUcWhk0,4
|
|
|
310
310
|
pyximport/__init__.py,sha256=9hOyKolFtOerPiVEyktKrT1VtzbGexq9UmORzo52iHI,79
|
|
311
311
|
pyximport/pyxbuild.py,sha256=AsL1tyLxG61Mj7Ah-DxtDBuaXF94W2Tb6KTos7r0w8I,5702
|
|
312
312
|
pyximport/pyximport.py,sha256=BnXVwq1cwo1EYRjPU0J-RUDcwzGjUlzKWZOOMDNcu-s,18510
|
|
313
|
-
cython-3.2.
|
|
314
|
-
cython-3.2.
|
|
315
|
-
cython-3.2.
|
|
316
|
-
cython-3.2.
|
|
317
|
-
cython-3.2.
|
|
313
|
+
cython-3.2.4.dist-info/METADATA,sha256=4cWxoE3O1NfAYxd-LZo-g_v1WPg5NfLGpXm53cs5v9Y,7282
|
|
314
|
+
cython-3.2.4.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
315
|
+
cython-3.2.4.dist-info/entry_points.txt,sha256=VU8NX8gnQyFbyqiWMzfh9BHvYMuoQRS3Nbm3kKcKQeY,139
|
|
316
|
+
cython-3.2.4.dist-info/top_level.txt,sha256=jLV8tZV98iCbIfiJR4DVzTX5Ru1Y_pYMZ59wkMCe6SY,24
|
|
317
|
+
cython-3.2.4.dist-info/RECORD,,
|
cython-3.2.3.dist-info/METADATA
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: Cython
|
|
3
|
-
Version: 3.2.3
|
|
4
|
-
Summary: The Cython compiler for writing C extensions in the Python language.
|
|
5
|
-
Home-page: https://cython.org/
|
|
6
|
-
Author: Robert Bradshaw, Stefan Behnel, David Woods, Greg Ewing, et al.
|
|
7
|
-
Author-email: cython-devel@python.org
|
|
8
|
-
License: Apache-2.0
|
|
9
|
-
Project-URL: Documentation, https://cython.readthedocs.io/
|
|
10
|
-
Project-URL: Donate, https://cython.readthedocs.io/en/latest/src/donating.html
|
|
11
|
-
Project-URL: Source Code, https://github.com/cython/cython
|
|
12
|
-
Project-URL: Bug Tracker, https://github.com/cython/cython/issues/
|
|
13
|
-
Project-URL: User Group, https://groups.google.com/g/cython-users
|
|
14
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
15
|
-
Classifier: Intended Audience :: Developers
|
|
16
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
|
-
Classifier: Operating System :: OS Independent
|
|
18
|
-
Classifier: Programming Language :: Python
|
|
19
|
-
Classifier: Programming Language :: Python :: 3
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
23
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
25
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
26
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
28
|
-
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
29
|
-
Classifier: Programming Language :: Python :: Implementation :: Stackless
|
|
30
|
-
Classifier: Programming Language :: C
|
|
31
|
-
Classifier: Programming Language :: C++
|
|
32
|
-
Classifier: Programming Language :: Cython
|
|
33
|
-
Classifier: Topic :: Software Development :: Code Generators
|
|
34
|
-
Classifier: Topic :: Software Development :: Compilers
|
|
35
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
36
|
-
Classifier: Typing :: Typed
|
|
37
|
-
Requires-Python: >=3.8
|
|
38
|
-
Description-Content-Type: text/x-rst
|
|
39
|
-
|
|
40
|
-
The Cython language makes writing C extensions for the Python language as
|
|
41
|
-
easy as Python itself. Cython is a source code translator based on Pyrex_,
|
|
42
|
-
but supports more cutting edge functionality and optimizations.
|
|
43
|
-
|
|
44
|
-
The Cython language is a superset of the Python language (almost all Python
|
|
45
|
-
code is also valid Cython code), but Cython additionally supports optional
|
|
46
|
-
static typing to natively call C functions, operate with C++ classes and
|
|
47
|
-
declare fast C types on variables and class attributes. This allows the
|
|
48
|
-
compiler to generate very efficient C code from Cython code.
|
|
49
|
-
|
|
50
|
-
This makes Cython the ideal language for writing glue code for external
|
|
51
|
-
C/C++ libraries, and for fast C modules that speed up the execution of
|
|
52
|
-
Python code.
|
|
53
|
-
|
|
54
|
-
The newest Cython release can always be downloaded from https://cython.org/.
|
|
55
|
-
Unpack the tarball or zip file, enter the directory, and then run::
|
|
56
|
-
|
|
57
|
-
pip install .
|
|
58
|
-
|
|
59
|
-
Note that for one-time builds, e.g. for CI/testing, on platforms that are not
|
|
60
|
-
covered by one of the wheel packages provided on PyPI *and* the pure Python wheel
|
|
61
|
-
that we provide is not used, it is substantially faster than a full source build
|
|
62
|
-
to install an uncompiled (slower) version of Cython with::
|
|
63
|
-
|
|
64
|
-
NO_CYTHON_COMPILE=true pip install .
|
|
65
|
-
|
|
66
|
-
.. _Pyrex: https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
|
|
67
|
-
|
|
68
|
-
3.2.3 (2025-12-14)
|
|
69
|
-
==================
|
|
70
|
-
|
|
71
|
-
Features added
|
|
72
|
-
--------------
|
|
73
|
-
|
|
74
|
-
* The C-API declarations were updated to include the new ``PyList_*()`` functions.
|
|
75
|
-
(Github issue https://github.com/cython/cython/issues/7291)
|
|
76
|
-
|
|
77
|
-
* The ``Py_mod_gil`` module setting can now be changed with a C macro, overriding
|
|
78
|
-
the ``freethreading_compatible`` directive setting.
|
|
79
|
-
(Github issue https://github.com/cython/cython/issues/7404)
|
|
80
|
-
|
|
81
|
-
Bugs fixed
|
|
82
|
-
----------
|
|
83
|
-
|
|
84
|
-
* t-strings lost the last element when compiled for the Limited API.
|
|
85
|
-
(Github issue https://github.com/cython/cython/issues/7381)
|
|
86
|
-
|
|
87
|
-
* The ``array.data`` property of the ``cpython.array`` declarations generated a
|
|
88
|
-
useless exception check that degraded its use in ``nogil`` code.
|
|
89
|
-
(Github issue https://github.com/cython/cython/issues/7408)
|
|
90
|
-
|
|
91
|
-
* Parallel builds with the ``cythonize`` command could request more processes
|
|
92
|
-
than allowed by the platform, thus failing the build.
|
|
93
|
-
(Github issue https://github.com/cython/cython/issues/7384)
|
|
94
|
-
|
|
95
|
-
* A minor thread sanitizer issue was resolved.
|
|
96
|
-
(Github issue https://github.com/cython/cython/issues/7383)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|