Cython 3.1.0__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.
Files changed (316) hide show
  1. Cython/Build/BuildExecutable.py +169 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +323 -0
  4. Cython/Build/Dependencies.py +1306 -0
  5. Cython/Build/Distutils.py +1 -0
  6. Cython/Build/Inline.py +463 -0
  7. Cython/Build/IpythonMagic.py +560 -0
  8. Cython/Build/SharedModule.py +76 -0
  9. Cython/Build/Tests/TestCyCache.py +194 -0
  10. Cython/Build/Tests/TestCythonizeArgsParser.py +481 -0
  11. Cython/Build/Tests/TestDependencies.py +133 -0
  12. Cython/Build/Tests/TestInline.py +177 -0
  13. Cython/Build/Tests/TestIpythonMagic.py +287 -0
  14. Cython/Build/Tests/TestRecythonize.py +212 -0
  15. Cython/Build/Tests/TestStripLiterals.py +155 -0
  16. Cython/Build/Tests/__init__.py +1 -0
  17. Cython/Build/__init__.py +8 -0
  18. Cython/CodeWriter.py +811 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +326 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +680 -0
  23. Cython/Compiler/Builtin.py +934 -0
  24. Cython/Compiler/CmdLine.py +259 -0
  25. Cython/Compiler/Code.pxd +148 -0
  26. Cython/Compiler/Code.py +3375 -0
  27. Cython/Compiler/CodeGeneration.py +33 -0
  28. Cython/Compiler/CythonScope.py +187 -0
  29. Cython/Compiler/Dataclass.py +868 -0
  30. Cython/Compiler/DebugFlags.py +24 -0
  31. Cython/Compiler/Errors.py +295 -0
  32. Cython/Compiler/ExprNodes.py +15267 -0
  33. Cython/Compiler/FlowControl.pxd +97 -0
  34. Cython/Compiler/FlowControl.py +1455 -0
  35. Cython/Compiler/FusedNode.py +1002 -0
  36. Cython/Compiler/Future.py +16 -0
  37. Cython/Compiler/Interpreter.py +57 -0
  38. Cython/Compiler/Lexicon.py +340 -0
  39. Cython/Compiler/LineTable.py +114 -0
  40. Cython/Compiler/Main.py +853 -0
  41. Cython/Compiler/MatchCaseNodes.py +259 -0
  42. Cython/Compiler/MemoryView.py +922 -0
  43. Cython/Compiler/ModuleNode.py +4024 -0
  44. Cython/Compiler/Naming.py +374 -0
  45. Cython/Compiler/Nodes.py +10826 -0
  46. Cython/Compiler/Optimize.py +5256 -0
  47. Cython/Compiler/Options.py +835 -0
  48. Cython/Compiler/ParseTreeTransforms.pxd +77 -0
  49. Cython/Compiler/ParseTreeTransforms.py +4509 -0
  50. Cython/Compiler/Parsing.pxd +9 -0
  51. Cython/Compiler/Parsing.py +4789 -0
  52. Cython/Compiler/Pipeline.py +439 -0
  53. Cython/Compiler/PyrexTypes.py +5762 -0
  54. Cython/Compiler/Pythran.py +232 -0
  55. Cython/Compiler/Scanning.pxd +40 -0
  56. Cython/Compiler/Scanning.py +577 -0
  57. Cython/Compiler/StringEncoding.py +347 -0
  58. Cython/Compiler/Symtab.py +3080 -0
  59. Cython/Compiler/Tests/TestBuffer.py +105 -0
  60. Cython/Compiler/Tests/TestBuiltin.py +72 -0
  61. Cython/Compiler/Tests/TestCmdLine.py +586 -0
  62. Cython/Compiler/Tests/TestCode.py +86 -0
  63. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  64. Cython/Compiler/Tests/TestGrammar.py +202 -0
  65. Cython/Compiler/Tests/TestMemView.py +71 -0
  66. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  67. Cython/Compiler/Tests/TestScanning.py +134 -0
  68. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  69. Cython/Compiler/Tests/TestStringEncoding.py +33 -0
  70. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  71. Cython/Compiler/Tests/TestTreePath.py +103 -0
  72. Cython/Compiler/Tests/TestTypes.py +75 -0
  73. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  74. Cython/Compiler/Tests/TestVisitor.py +61 -0
  75. Cython/Compiler/Tests/Utils.py +36 -0
  76. Cython/Compiler/Tests/__init__.py +1 -0
  77. Cython/Compiler/TreeFragment.py +278 -0
  78. Cython/Compiler/TreePath.py +303 -0
  79. Cython/Compiler/TypeInference.py +584 -0
  80. Cython/Compiler/TypeSlots.py +1181 -0
  81. Cython/Compiler/UFuncs.py +311 -0
  82. Cython/Compiler/UtilNodes.py +389 -0
  83. Cython/Compiler/UtilityCode.py +344 -0
  84. Cython/Compiler/Version.py +8 -0
  85. Cython/Compiler/Visitor.pxd +53 -0
  86. Cython/Compiler/Visitor.py +861 -0
  87. Cython/Compiler/__init__.py +1 -0
  88. Cython/Coverage.py +448 -0
  89. Cython/Debugger/Cygdb.py +175 -0
  90. Cython/Debugger/DebugWriter.py +82 -0
  91. Cython/Debugger/Tests/TestLibCython.py +275 -0
  92. Cython/Debugger/Tests/__init__.py +1 -0
  93. Cython/Debugger/Tests/cfuncs.c +8 -0
  94. Cython/Debugger/Tests/codefile +49 -0
  95. Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
  96. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  97. Cython/Debugger/__init__.py +1 -0
  98. Cython/Debugger/libcython.py +1548 -0
  99. Cython/Debugger/libpython.py +2821 -0
  100. Cython/Debugging.py +20 -0
  101. Cython/Distutils/__init__.py +2 -0
  102. Cython/Distutils/build_ext.py +139 -0
  103. Cython/Distutils/extension.py +96 -0
  104. Cython/Distutils/old_build_ext.py +351 -0
  105. Cython/Includes/cpython/__init__.pxd +173 -0
  106. Cython/Includes/cpython/array.pxd +174 -0
  107. Cython/Includes/cpython/bool.pxd +37 -0
  108. Cython/Includes/cpython/buffer.pxd +112 -0
  109. Cython/Includes/cpython/bytearray.pxd +33 -0
  110. Cython/Includes/cpython/bytes.pxd +200 -0
  111. Cython/Includes/cpython/cellobject.pxd +35 -0
  112. Cython/Includes/cpython/ceval.pxd +8 -0
  113. Cython/Includes/cpython/codecs.pxd +121 -0
  114. Cython/Includes/cpython/complex.pxd +60 -0
  115. Cython/Includes/cpython/contextvars.pxd +145 -0
  116. Cython/Includes/cpython/conversion.pxd +36 -0
  117. Cython/Includes/cpython/datetime.pxd +395 -0
  118. Cython/Includes/cpython/descr.pxd +26 -0
  119. Cython/Includes/cpython/dict.pxd +187 -0
  120. Cython/Includes/cpython/exc.pxd +263 -0
  121. Cython/Includes/cpython/fileobject.pxd +57 -0
  122. Cython/Includes/cpython/float.pxd +47 -0
  123. Cython/Includes/cpython/function.pxd +65 -0
  124. Cython/Includes/cpython/genobject.pxd +25 -0
  125. Cython/Includes/cpython/getargs.pxd +12 -0
  126. Cython/Includes/cpython/instance.pxd +25 -0
  127. Cython/Includes/cpython/iterator.pxd +36 -0
  128. Cython/Includes/cpython/iterobject.pxd +24 -0
  129. Cython/Includes/cpython/list.pxd +92 -0
  130. Cython/Includes/cpython/long.pxd +149 -0
  131. Cython/Includes/cpython/longintrepr.pxd +14 -0
  132. Cython/Includes/cpython/mapping.pxd +63 -0
  133. Cython/Includes/cpython/marshal.pxd +66 -0
  134. Cython/Includes/cpython/mem.pxd +120 -0
  135. Cython/Includes/cpython/memoryview.pxd +50 -0
  136. Cython/Includes/cpython/method.pxd +49 -0
  137. Cython/Includes/cpython/module.pxd +208 -0
  138. Cython/Includes/cpython/number.pxd +258 -0
  139. Cython/Includes/cpython/object.pxd +433 -0
  140. Cython/Includes/cpython/pycapsule.pxd +143 -0
  141. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  142. Cython/Includes/cpython/pyport.pxd +8 -0
  143. Cython/Includes/cpython/pystate.pxd +95 -0
  144. Cython/Includes/cpython/pythread.pxd +53 -0
  145. Cython/Includes/cpython/ref.pxd +67 -0
  146. Cython/Includes/cpython/sequence.pxd +134 -0
  147. Cython/Includes/cpython/set.pxd +119 -0
  148. Cython/Includes/cpython/slice.pxd +70 -0
  149. Cython/Includes/cpython/time.pxd +129 -0
  150. Cython/Includes/cpython/tuple.pxd +72 -0
  151. Cython/Includes/cpython/type.pxd +53 -0
  152. Cython/Includes/cpython/unicode.pxd +639 -0
  153. Cython/Includes/cpython/version.pxd +32 -0
  154. Cython/Includes/cpython/weakref.pxd +78 -0
  155. Cython/Includes/libc/__init__.pxd +1 -0
  156. Cython/Includes/libc/complex.pxd +35 -0
  157. Cython/Includes/libc/errno.pxd +127 -0
  158. Cython/Includes/libc/float.pxd +43 -0
  159. Cython/Includes/libc/limits.pxd +28 -0
  160. Cython/Includes/libc/locale.pxd +46 -0
  161. Cython/Includes/libc/math.pxd +209 -0
  162. Cython/Includes/libc/setjmp.pxd +10 -0
  163. Cython/Includes/libc/signal.pxd +64 -0
  164. Cython/Includes/libc/stddef.pxd +9 -0
  165. Cython/Includes/libc/stdint.pxd +105 -0
  166. Cython/Includes/libc/stdio.pxd +80 -0
  167. Cython/Includes/libc/stdlib.pxd +72 -0
  168. Cython/Includes/libc/string.pxd +50 -0
  169. Cython/Includes/libc/threads.pxd +84 -0
  170. Cython/Includes/libc/time.pxd +51 -0
  171. Cython/Includes/libcpp/__init__.pxd +4 -0
  172. Cython/Includes/libcpp/algorithm.pxd +320 -0
  173. Cython/Includes/libcpp/any.pxd +16 -0
  174. Cython/Includes/libcpp/atomic.pxd +59 -0
  175. Cython/Includes/libcpp/barrier.pxd +22 -0
  176. Cython/Includes/libcpp/bit.pxd +29 -0
  177. Cython/Includes/libcpp/cast.pxd +12 -0
  178. Cython/Includes/libcpp/cmath.pxd +518 -0
  179. Cython/Includes/libcpp/complex.pxd +106 -0
  180. Cython/Includes/libcpp/deque.pxd +165 -0
  181. Cython/Includes/libcpp/exception.pxd +86 -0
  182. Cython/Includes/libcpp/execution.pxd +15 -0
  183. Cython/Includes/libcpp/forward_list.pxd +63 -0
  184. Cython/Includes/libcpp/functional.pxd +26 -0
  185. Cython/Includes/libcpp/future.pxd +103 -0
  186. Cython/Includes/libcpp/iterator.pxd +34 -0
  187. Cython/Includes/libcpp/latch.pxd +17 -0
  188. Cython/Includes/libcpp/limits.pxd +61 -0
  189. Cython/Includes/libcpp/list.pxd +117 -0
  190. Cython/Includes/libcpp/map.pxd +252 -0
  191. Cython/Includes/libcpp/memory.pxd +115 -0
  192. Cython/Includes/libcpp/mutex.pxd +130 -0
  193. Cython/Includes/libcpp/numbers.pxd +15 -0
  194. Cython/Includes/libcpp/numeric.pxd +131 -0
  195. Cython/Includes/libcpp/optional.pxd +34 -0
  196. Cython/Includes/libcpp/pair.pxd +1 -0
  197. Cython/Includes/libcpp/queue.pxd +25 -0
  198. Cython/Includes/libcpp/random.pxd +166 -0
  199. Cython/Includes/libcpp/semaphore.pxd +44 -0
  200. Cython/Includes/libcpp/set.pxd +228 -0
  201. Cython/Includes/libcpp/shared_mutex.pxd +72 -0
  202. Cython/Includes/libcpp/span.pxd +87 -0
  203. Cython/Includes/libcpp/stack.pxd +11 -0
  204. Cython/Includes/libcpp/stop_token.pxd +105 -0
  205. Cython/Includes/libcpp/string.pxd +355 -0
  206. Cython/Includes/libcpp/string_view.pxd +181 -0
  207. Cython/Includes/libcpp/typeindex.pxd +15 -0
  208. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  209. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  210. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  211. Cython/Includes/libcpp/utility.pxd +30 -0
  212. Cython/Includes/libcpp/vector.pxd +186 -0
  213. Cython/Includes/openmp.pxd +50 -0
  214. Cython/Includes/posix/__init__.pxd +1 -0
  215. Cython/Includes/posix/dlfcn.pxd +14 -0
  216. Cython/Includes/posix/fcntl.pxd +86 -0
  217. Cython/Includes/posix/ioctl.pxd +4 -0
  218. Cython/Includes/posix/mman.pxd +101 -0
  219. Cython/Includes/posix/resource.pxd +57 -0
  220. Cython/Includes/posix/select.pxd +21 -0
  221. Cython/Includes/posix/signal.pxd +73 -0
  222. Cython/Includes/posix/stat.pxd +98 -0
  223. Cython/Includes/posix/stdio.pxd +37 -0
  224. Cython/Includes/posix/stdlib.pxd +29 -0
  225. Cython/Includes/posix/strings.pxd +9 -0
  226. Cython/Includes/posix/time.pxd +71 -0
  227. Cython/Includes/posix/types.pxd +30 -0
  228. Cython/Includes/posix/uio.pxd +26 -0
  229. Cython/Includes/posix/unistd.pxd +271 -0
  230. Cython/Includes/posix/wait.pxd +38 -0
  231. Cython/Plex/Actions.pxd +24 -0
  232. Cython/Plex/Actions.py +119 -0
  233. Cython/Plex/DFA.pxd +14 -0
  234. Cython/Plex/DFA.py +164 -0
  235. Cython/Plex/Errors.py +48 -0
  236. Cython/Plex/Lexicons.py +178 -0
  237. Cython/Plex/Machines.pxd +36 -0
  238. Cython/Plex/Machines.py +238 -0
  239. Cython/Plex/Regexps.py +539 -0
  240. Cython/Plex/Scanners.pxd +47 -0
  241. Cython/Plex/Scanners.py +360 -0
  242. Cython/Plex/Transitions.pxd +14 -0
  243. Cython/Plex/Transitions.py +239 -0
  244. Cython/Plex/__init__.py +34 -0
  245. Cython/Runtime/__init__.py +1 -0
  246. Cython/Runtime/refnanny.pyx +237 -0
  247. Cython/Shadow.py +690 -0
  248. Cython/Shadow.pyi +521 -0
  249. Cython/StringIOTree.py +170 -0
  250. Cython/Tempita/__init__.py +4 -0
  251. Cython/Tempita/_looper.py +154 -0
  252. Cython/Tempita/_tempita.py +1091 -0
  253. Cython/TestUtils.py +410 -0
  254. Cython/Tests/TestCodeWriter.py +128 -0
  255. Cython/Tests/TestCythonUtils.py +202 -0
  256. Cython/Tests/TestJediTyper.py +223 -0
  257. Cython/Tests/TestShadow.py +114 -0
  258. Cython/Tests/TestStringIOTree.py +67 -0
  259. Cython/Tests/TestTestUtils.py +90 -0
  260. Cython/Tests/__init__.py +1 -0
  261. Cython/Tests/xmlrunner.py +390 -0
  262. Cython/Utility/AsyncGen.c +1002 -0
  263. Cython/Utility/Buffer.c +875 -0
  264. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  265. Cython/Utility/Builtins.c +776 -0
  266. Cython/Utility/CConvert.pyx +134 -0
  267. Cython/Utility/CMath.c +104 -0
  268. Cython/Utility/CommonStructures.c +118 -0
  269. Cython/Utility/Complex.c +378 -0
  270. Cython/Utility/Coroutine.c +2206 -0
  271. Cython/Utility/CpdefEnums.pyx +103 -0
  272. Cython/Utility/CppConvert.pyx +279 -0
  273. Cython/Utility/CppSupport.cpp +143 -0
  274. Cython/Utility/CythonFunction.c +1794 -0
  275. Cython/Utility/Dataclasses.c +185 -0
  276. Cython/Utility/Dataclasses.py +112 -0
  277. Cython/Utility/Embed.c +125 -0
  278. Cython/Utility/Exceptions.c +1012 -0
  279. Cython/Utility/ExtensionTypes.c +809 -0
  280. Cython/Utility/FunctionArguments.c +965 -0
  281. Cython/Utility/ImportExport.c +987 -0
  282. Cython/Utility/Lock.c +136 -0
  283. Cython/Utility/MemoryView.pxd +187 -0
  284. Cython/Utility/MemoryView.pyx +1481 -0
  285. Cython/Utility/MemoryView_C.c +1046 -0
  286. Cython/Utility/ModuleSetupCode.c +3059 -0
  287. Cython/Utility/NumpyImportArray.c +46 -0
  288. Cython/Utility/ObjectHandling.c +3342 -0
  289. Cython/Utility/Optimize.c +1589 -0
  290. Cython/Utility/Overflow.c +404 -0
  291. Cython/Utility/Printing.c +86 -0
  292. Cython/Utility/Profile.c +709 -0
  293. Cython/Utility/StringTools.c +1259 -0
  294. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  295. Cython/Utility/TestCythonScope.pyx +75 -0
  296. Cython/Utility/TestUtilityLoader.c +12 -0
  297. Cython/Utility/TypeConversion.c +1284 -0
  298. Cython/Utility/UFuncs.pyx +50 -0
  299. Cython/Utility/UFuncs_C.c +89 -0
  300. Cython/Utility/__init__.py +28 -0
  301. Cython/Utility/arrayarray.h +148 -0
  302. Cython/Utils.py +687 -0
  303. Cython/__init__.py +10 -0
  304. Cython/__init__.pyi +7 -0
  305. Cython/py.typed +0 -0
  306. cython-3.1.0.dist-info/COPYING.txt +19 -0
  307. cython-3.1.0.dist-info/LICENSE.txt +176 -0
  308. cython-3.1.0.dist-info/METADATA +636 -0
  309. cython-3.1.0.dist-info/RECORD +316 -0
  310. cython-3.1.0.dist-info/WHEEL +5 -0
  311. cython-3.1.0.dist-info/entry_points.txt +4 -0
  312. cython-3.1.0.dist-info/top_level.txt +3 -0
  313. cython.py +29 -0
  314. pyximport/__init__.py +4 -0
  315. pyximport/pyxbuild.py +160 -0
  316. pyximport/pyximport.py +482 -0
@@ -0,0 +1,72 @@
1
+ from libcpp cimport bool
2
+ from libcpp.mutex cimport defer_lock_t, defer_lock, try_to_lock_t, try_to_lock, adopt_lock_t, adopt_lock
3
+
4
+ cdef extern from "<shared_mutex>" namespace "std" nogil:
5
+ cppclass shared_mutex:
6
+ # may not be present, and we know nothing about it
7
+ cppclass native_handle_type:
8
+ pass
9
+
10
+ # We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
11
+ void lock() except+
12
+ bool try_lock()
13
+ void unlock()
14
+
15
+ # We strongly recommend not calling lock_shared with the GIL held (to avoid deadlocks)
16
+ void lock_shared() except+
17
+ bool try_lock_shared()
18
+ void unlock_shared()
19
+
20
+ native_handle_type native_handle() except+
21
+
22
+ cppclass shared_timed_mutex:
23
+ # may not be present, and we know nothing about it.
24
+ # For shared_timed_mutex cppreference doesn't mention this
25
+ cppclass native_handle_type:
26
+ pass
27
+
28
+ # We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
29
+ # and moderately recommend not calling the timed lock functions with the GIL either.
30
+ void lock() except+
31
+ bool try_lock()
32
+ bool try_lock_for[T](const T& duration) except+
33
+ bool try_lock_until[T](const T& time_point) except+
34
+ void unlock()
35
+
36
+ void lock_shared() except+
37
+ bool try_lock_shared()
38
+ bool try_lock_shared_for[T](const T& duration) except+
39
+ bool try_lock_shared_until[T](const T& time_point) except+
40
+ void unlock_shared()
41
+
42
+ native_handle_type native_handle() except+
43
+
44
+ cppclass shared_lock[T]:
45
+ ctypedef T mutex_type
46
+ # This covers both the plain regular constructor, the 3 versions with tags
47
+ # and two std::chrono constructors. The two templated chrono versions stop
48
+ # us from declaring the overloads explicitly.
49
+ shared_lock()
50
+ shared_lock(mutex_type&, ...) except+
51
+ #shared_lock(mutex_type&, defer_lock_t)
52
+ #shared_lock(mutex_type&, try_to_lock_t) except+
53
+ ## this feels like it should be noexcept, but cppreference implies it isn't
54
+ #shared_lock(mutex_type&, adopt_lock_t) except+
55
+
56
+ # We strongly recommend not calling lock with the GIL held (to avoid deadlocks)
57
+ void lock() except+
58
+ bool try_lock() except+
59
+ bool try_lock_for[T](const T& duration) except+
60
+ bool try_lock_until[T](const T& time_point) except+
61
+ void unlock() except+
62
+
63
+ # We strongly recommend not calling lock_shared with the GIL held (to avoid deadlocks)
64
+ void swap(shared_lock& other)
65
+ # "release" is definitely not the same as unlock. Noted here because
66
+ # DW always makes this mistake and regrets it and wants to save you
67
+ # from the same fate.
68
+ mutex_type* release()
69
+
70
+ mutex_type* mutex()
71
+ bool owns_lock()
72
+ bool operator bool()
@@ -0,0 +1,87 @@
1
+ from libcpp.vector cimport vector
2
+
3
+ cdef extern from "<span>" namespace "std" nogil:
4
+ # Only Extent = std::dynamic_extent is supported until Cython can also
5
+ # support integer templates. See https://github.com/cython/cython/pull/426
6
+ cdef cppclass span[T]:
7
+ ctypedef T value_type
8
+ ctypedef size_t size_type
9
+ ctypedef ptrdiff_t difference_type
10
+
11
+ size_t extent
12
+
13
+ cppclass iterator:
14
+ iterator() except +
15
+ iterator(iterator&) except +
16
+ T& operator*()
17
+ iterator operator++()
18
+ iterator operator--()
19
+ iterator operator++(int)
20
+ iterator operator--(int)
21
+ iterator operator+(size_type)
22
+ iterator operator-(size_type)
23
+ difference_type operator-(iterator)
24
+ difference_type operator-(const_iterator)
25
+ bint operator==(iterator)
26
+ bint operator==(const_iterator)
27
+ bint operator!=(iterator)
28
+ bint operator!=(const_iterator)
29
+ bint operator<(iterator)
30
+ bint operator<(const_iterator)
31
+ bint operator>(iterator)
32
+ bint operator>(const_iterator)
33
+ bint operator<=(iterator)
34
+ bint operator<=(const_iterator)
35
+ bint operator>=(iterator)
36
+ bint operator>=(const_iterator)
37
+
38
+ cppclass reverse_iterator:
39
+ reverse_iterator() except +
40
+ reverse_iterator(reverse_iterator&) except +
41
+ T& operator*()
42
+ reverse_iterator operator++()
43
+ reverse_iterator operator--()
44
+ reverse_iterator operator++(int)
45
+ reverse_iterator operator--(int)
46
+ reverse_iterator operator+(size_type)
47
+ reverse_iterator operator-(size_type)
48
+ difference_type operator-(iterator)
49
+ difference_type operator-(const_iterator)
50
+ bint operator==(reverse_iterator)
51
+ bint operator==(const_reverse_iterator)
52
+ bint operator!=(reverse_iterator)
53
+ bint operator!=(const_reverse_iterator)
54
+ bint operator<(reverse_iterator)
55
+ bint operator<(const_reverse_iterator)
56
+ bint operator>(reverse_iterator)
57
+ bint operator>(const_reverse_iterator)
58
+ bint operator<=(reverse_iterator)
59
+ bint operator<=(const_reverse_iterator)
60
+ bint operator>=(reverse_iterator)
61
+ bint operator>=(const_reverse_iterator)
62
+
63
+ # const_iterator was added in C++23, so leaving it out for now
64
+
65
+ span()
66
+ span(T*, size_type) except + # span[It](It, size_type)
67
+ span(T*, T*) except + # span[It, End](It, End)
68
+ span(vector&) # span[U, N](array[T, N]& arr)
69
+ span(span&)
70
+
71
+ T& operator[](ssize_t)
72
+
73
+ T& back()
74
+ iterator begin()
75
+ T* data()
76
+ bint empty()
77
+ iterator end()
78
+ span[T] first(size_type)
79
+ T& front()
80
+ span[T] last(size_type)
81
+ reverse_iterator rbegin()
82
+ reverse_iterator rend()
83
+ size_type size()
84
+ span[T] subspan(size_type)
85
+ span[T] subspan(size_type, size_type)
86
+
87
+ cdef size_t dynamic_extent
@@ -0,0 +1,11 @@
1
+ cdef extern from "<stack>" namespace "std" nogil:
2
+ cdef cppclass stack[T]:
3
+ ctypedef T value_type
4
+ stack() except +
5
+ stack(stack&) except +
6
+ #stack(Container&)
7
+ bint empty()
8
+ void pop()
9
+ void push(T&) except +
10
+ size_t size()
11
+ T& top()
@@ -0,0 +1,105 @@
1
+ from libcpp cimport bool
2
+
3
+ cdef extern from "<stop_token>" namespace "std" nogil:
4
+ cdef cppclass stop_token:
5
+ bool stop_requested() noexcept
6
+ bool stop_possible() noexcept
7
+
8
+ cdef cppclass nostopstate_t:
9
+ pass
10
+
11
+ nostopstate_t nostopstate
12
+
13
+ cdef cppclass stop_source:
14
+ stop_source() except+
15
+ stop_source(nostopstate_t) noexcept
16
+
17
+ bool request_stop() noexcept
18
+ void swap(stop_source& other) noexcept
19
+
20
+ stop_token get_token() noexcept
21
+ bool stop_requested() noexcept
22
+ bool stop_possible() noexcept
23
+
24
+ # stop_callback is not copyable or moveable which currently means it must
25
+ # be heap-allocated in Cython (although use with cpp_locals should eventually be supported too)
26
+ cdef cppclass stop_callback[Callback]:
27
+ # in principle the second argument is a template argument with a "std::constructable_from" constraint,
28
+ # but for Cython's purposes it probably makes sense to assume no conversion
29
+ stop_callback(stop_token st, Callback cb) noexcept
30
+
31
+ cdef extern from *:
32
+ """
33
+ #include <optional>
34
+ #include <utility>
35
+
36
+ namespace {
37
+ using __pyx_func_ptr_stop_callback = std::stop_callback<void (*)()>;
38
+
39
+ class __pyx_python_stop_callback_holder {
40
+ class callable_py_object_holder {
41
+ PyObject *o;
42
+
43
+ public:
44
+ explicit callable_py_object_holder(PyObject *o)
45
+ : o(o)
46
+ {
47
+ Py_INCREF(o);
48
+ }
49
+
50
+ callable_py_object_holder(callable_py_object_holder&& rhs)
51
+ : o(std::exchange(rhs.o, nullptr))
52
+ {
53
+ }
54
+
55
+ ~callable_py_object_holder() {
56
+ if (o) {
57
+ PyGILState_STATE state = PyGILState_Ensure();
58
+ Py_DECREF(o);
59
+ PyGILState_Release(state);
60
+ }
61
+ }
62
+
63
+ callable_py_object_holder(const callable_py_object_holder&) = delete;
64
+ callable_py_object_holder& operator=(const callable_py_object_holder&) = delete;
65
+
66
+ void operator()() const {
67
+ PyGILState_STATE state = PyGILState_Ensure();
68
+ PyObject *result = PyObject_CallObject(o, NULL);
69
+ if (!result) {
70
+ PyObject *s = PyUnicode_FromString("python_stop_callback_holder callback");
71
+ PyErr_WriteUnraisable(s);
72
+ Py_XDECREF(s);
73
+ } else {
74
+ Py_DECREF(result);
75
+ }
76
+ PyGILState_Release(state);
77
+ }
78
+ };
79
+
80
+ std::optional<std::stop_callback<callable_py_object_holder>> callback;
81
+
82
+ public:
83
+ __pyx_python_stop_callback_holder() = default;
84
+ __pyx_python_stop_callback_holder(std::stop_token token, PyObject *callable) {
85
+ initialize(std::move(token), callable);
86
+ }
87
+ __pyx_python_stop_callback_holder(const __pyx_python_stop_callback_holder&) = delete;
88
+
89
+ __pyx_python_stop_callback_holder& operator=(const __pyx_python_stop_callback_holder&) = delete;
90
+
91
+ void initialize(std::stop_token token, PyObject *callable) {
92
+ callback.emplace(std::move(token), callable_py_object_holder(callable));
93
+ }
94
+ };
95
+ }
96
+ """
97
+ # This is provided as a convenience mainly as a reminder to use nogil functions!
98
+ ctypedef stop_callback[void (*)() nogil noexcept] func_ptr_stop_callback "__pyx_func_ptr_stop_callback"
99
+
100
+ # A fairly thin wrapper to let you create a stop callback with a Python object.
101
+ # For most uses, it should be created empty and then filled with "initialize"
102
+ cdef cppclass python_stop_callback_holder "__pyx_python_stop_callback_holder":
103
+ python_stop_callback_holder()
104
+ python_stop_callback_holder(stop_token token, object callable)
105
+ void initialize(stop_token token, object callable)
@@ -0,0 +1,355 @@
1
+
2
+ # deprecated cimport for backwards compatibility:
3
+ from libc.string cimport const_char
4
+
5
+ from libcpp.string_view cimport string_view
6
+
7
+ cdef extern from "<string>" namespace "std::string" nogil:
8
+ const size_t npos
9
+
10
+ cdef extern from "<string>" namespace "std" nogil:
11
+ # 21.3.4, numeric conversions
12
+ int stoi(const string& s, size_t* idx, int base) except +
13
+ long stol(const string& s, size_t* idx, int base) except +
14
+ unsigned long stoul(const string& s, size_t* idx, int base) except +
15
+ long long stoll(const string& s, size_t* idx, int base) except +
16
+ unsigned long long stoull(const string& s, size_t* idx, int base) except +
17
+ float stof(const string& s, size_t* idx) except +
18
+ double stod(const string& s, size_t* idx) except +
19
+ long double stold(const string& s, size_t* idx) except +
20
+
21
+ # Duplicate declarations are necessary, because extern functions cannot have default arguments values
22
+ int stoi(const string& s, size_t* idx) except +
23
+ long stol(const string& s, size_t* idx) except +
24
+ unsigned long stoul(const string& s, size_t* idx) except +
25
+ long long stoll(const string& s, size_t* idx) except +
26
+ unsigned long long stoull(const string& s, size_t* idx) except +
27
+
28
+ int stoi(const string& s) except +
29
+ long stol(const string& s) except +
30
+ unsigned long stoul(const string& s) except +
31
+ long long stoll(const string& s) except +
32
+ unsigned long long stoull(const string& s) except +
33
+ float stof(const string& s) except +
34
+ double stod(const string& s) except +
35
+ long double stold(const string& s) except +
36
+
37
+ string to_string(int val) except +
38
+ string to_string(unsigned val) except +
39
+ string to_string(long val) except +
40
+ string to_string(unsigned long val) except +
41
+ string to_string(long long val) except +
42
+ string to_string(unsigned long long val) except +
43
+ string to_string(float val) except +
44
+ string to_string(double val) except +
45
+ string to_string(long double val) except +
46
+
47
+ # Cython doesn't know which size type is equivalent to s/size_t on a given platform
48
+ string to_string(size_t val) except +
49
+ string to_string(ssize_t val) except +
50
+
51
+ cdef cppclass string:
52
+ ctypedef char value_type
53
+
54
+ # these should really be allocator_type.size_type and
55
+ # allocator_type.difference_type to be true to the C++ definition
56
+ # but cython doesn't support deferred access on template arguments
57
+ ctypedef size_t size_type
58
+ ctypedef ptrdiff_t difference_type
59
+
60
+ bint operator==(const string&)
61
+ bint operator==(const char*)
62
+ bint operator!= (const string&)
63
+ bint operator!= (const char*)
64
+ bint operator< (const string&)
65
+ bint operator< (const char*)
66
+ bint operator> (const string&)
67
+ bint operator> (const char*)
68
+ bint operator<= (const string&)
69
+ bint operator<= (const char*)
70
+ bint operator>= (const string&)
71
+ bint operator>= (const char*)
72
+
73
+ string operator+ (const string&) except +
74
+ string operator+ (const char*) except +
75
+
76
+ cppclass const_iterator
77
+ cppclass iterator:
78
+ iterator() except +
79
+ iterator(iterator&) except +
80
+ value_type& operator*()
81
+ iterator operator++()
82
+ iterator operator--()
83
+ iterator operator++(int)
84
+ iterator operator--(int)
85
+ iterator operator+(size_type)
86
+ iterator operator-(size_type)
87
+ difference_type operator-(iterator)
88
+ difference_type operator-(const_iterator)
89
+ bint operator==(iterator)
90
+ bint operator==(const_iterator)
91
+ bint operator!=(iterator)
92
+ bint operator!=(const_iterator)
93
+ bint operator<(iterator)
94
+ bint operator<(const_iterator)
95
+ bint operator>(iterator)
96
+ bint operator>(const_iterator)
97
+ bint operator<=(iterator)
98
+ bint operator<=(const_iterator)
99
+ bint operator>=(iterator)
100
+ bint operator>=(const_iterator)
101
+ cppclass const_iterator:
102
+ const_iterator() except +
103
+ const_iterator(iterator&) except +
104
+ const_iterator(const_iterator&) except +
105
+ operator=(iterator&) except +
106
+ const value_type& operator*()
107
+ const_iterator operator++()
108
+ const_iterator operator--()
109
+ const_iterator operator++(int)
110
+ const_iterator operator--(int)
111
+ const_iterator operator+(size_type)
112
+ const_iterator operator-(size_type)
113
+ difference_type operator-(iterator)
114
+ difference_type operator-(const_iterator)
115
+ bint operator==(iterator)
116
+ bint operator==(const_iterator)
117
+ bint operator!=(iterator)
118
+ bint operator!=(const_iterator)
119
+ bint operator<(iterator)
120
+ bint operator<(const_iterator)
121
+ bint operator>(iterator)
122
+ bint operator>(const_iterator)
123
+ bint operator<=(iterator)
124
+ bint operator<=(const_iterator)
125
+ bint operator>=(iterator)
126
+ bint operator>=(const_iterator)
127
+
128
+ cppclass const_reverse_iterator
129
+ cppclass reverse_iterator:
130
+ reverse_iterator() except +
131
+ reverse_iterator(reverse_iterator&) except +
132
+ value_type& operator*()
133
+ reverse_iterator operator++()
134
+ reverse_iterator operator--()
135
+ reverse_iterator operator++(int)
136
+ reverse_iterator operator--(int)
137
+ reverse_iterator operator+(size_type)
138
+ reverse_iterator operator-(size_type)
139
+ difference_type operator-(iterator)
140
+ difference_type operator-(const_iterator)
141
+ bint operator==(reverse_iterator)
142
+ bint operator==(const_reverse_iterator)
143
+ bint operator!=(reverse_iterator)
144
+ bint operator!=(const_reverse_iterator)
145
+ bint operator<(reverse_iterator)
146
+ bint operator<(const_reverse_iterator)
147
+ bint operator>(reverse_iterator)
148
+ bint operator>(const_reverse_iterator)
149
+ bint operator<=(reverse_iterator)
150
+ bint operator<=(const_reverse_iterator)
151
+ bint operator>=(reverse_iterator)
152
+ bint operator>=(const_reverse_iterator)
153
+ cppclass const_reverse_iterator:
154
+ const_reverse_iterator() except +
155
+ const_reverse_iterator(reverse_iterator&) except +
156
+ operator=(reverse_iterator&) except +
157
+ const value_type& operator*()
158
+ const_reverse_iterator operator++()
159
+ const_reverse_iterator operator--()
160
+ const_reverse_iterator operator++(int)
161
+ const_reverse_iterator operator--(int)
162
+ const_reverse_iterator operator+(size_type)
163
+ const_reverse_iterator operator-(size_type)
164
+ difference_type operator-(iterator)
165
+ difference_type operator-(const_iterator)
166
+ bint operator==(reverse_iterator)
167
+ bint operator==(const_reverse_iterator)
168
+ bint operator!=(reverse_iterator)
169
+ bint operator!=(const_reverse_iterator)
170
+ bint operator<(reverse_iterator)
171
+ bint operator<(const_reverse_iterator)
172
+ bint operator>(reverse_iterator)
173
+ bint operator>(const_reverse_iterator)
174
+ bint operator<=(reverse_iterator)
175
+ bint operator<=(const_reverse_iterator)
176
+ bint operator>=(reverse_iterator)
177
+ bint operator>=(const_reverse_iterator)
178
+
179
+ # 21.3.2.2, construct/copy/destroy
180
+ string() except + # (1)
181
+ string(const string& s) except + # (3)
182
+ string(const string& s, size_t pos) except + # (5)
183
+ string(const string& s, size_t pos, size_t len) except + # (6)
184
+ string(const char* s, size_t n) except + # (9)
185
+ string(const char* s) except + # (10)
186
+ string(size_t n, char c) except + # (11)
187
+ string(const string_view& sv) except +
188
+ # type (string&) is needed here so that Cython can compile templated definition
189
+ string& string[InputIt](InputIt, InputIt) except + # (12)
190
+
191
+ #string& operator= (const string&)
192
+ #string& operator= (const char*)
193
+ #string& operator= (char)
194
+
195
+ # 21.3.2.3, iterators
196
+ iterator begin()
197
+ const_iterator const_begin "begin"()
198
+ iterator end()
199
+ const_iterator const_end "end"()
200
+
201
+ reverse_iterator rbegin()
202
+ const_reverse_iterator const_rbegin "rbegin"()
203
+ reverse_iterator rend()
204
+ const_reverse_iterator const_rend "rend"()
205
+
206
+ const_iterator cbegin()
207
+ const_iterator cend()
208
+ const_reverse_iterator crbegin()
209
+ const_reverse_iterator crend()
210
+
211
+ # 21.3.2.4, capacity
212
+ size_t size()
213
+ size_t length()
214
+ size_t max_size()
215
+ void resize(size_t, char) except +
216
+ void resize(size_t) except +
217
+ size_t capacity()
218
+ void reserve(size_t) except +
219
+ void shrink_to_fit() except +
220
+ void clear()
221
+ bint empty()
222
+
223
+ # 21.3.2.5, element access
224
+ char& operator[](size_t pos)
225
+ char& at(size_t pos) except +
226
+
227
+ char& front()
228
+ char& back()
229
+
230
+ # 21.3.2.6, modifiers
231
+ string& append(const string& s) except + # (1)
232
+ string& append(const string& s, size_t subpos, size_t sublen) except + # (2)
233
+ string& append(const char* s) except + # (5)
234
+ string& append(const char* s, size_t n) except + # (6)
235
+ string& append(size_t n, char c) except + # (7)
236
+ string& append[InputIt](InputIt, InputIt) except + # (8)
237
+
238
+ void push_back(char c) except +
239
+
240
+ string& assign(const string& s) except + # (1)
241
+ string& assign(const string& s, size_t subpos, size_t sublen) except + # (3)
242
+ string& assign(const char* s, size_t n) except + # (6)
243
+ string& assign(const char* s) except + # (7)
244
+ string& assign(size_t n, char c) except + # (8)
245
+ string& assign[InputIt](InputIt, InputIt) except + # (9)
246
+
247
+ string& insert(size_t pos, const string& s) except + # (1)
248
+ string& insert(size_t pos, const string& s, size_t subpos, size_t sublen) except + # (2)
249
+ string& insert(size_t pos, const char* s, size_t n) except + # (5)
250
+ string& insert(size_t pos, const char* s) except + # (6)
251
+ string& insert(size_t pos, size_t n, char c) except + # (7)
252
+ iterator insert(iterator p, char c) except + # (8)
253
+ iterator insert(iterator p, size_t n, char c) except + # (9)
254
+ # This method should be templated in InputIt arguments, but then it is not resolved by Cython
255
+ iterator insert(iterator, iterator, iterator) except + # (10)
256
+
257
+ string& erase(size_t pos, size_t len) except + # (1)
258
+ string& erase(size_t pos) except + # (1)
259
+ string& erase() except + # (1)
260
+ iterator erase(iterator p) except + # (2)
261
+ iterator erase(const_iterator p) except +
262
+ iterator erase(iterator first, iterator last) except + # (3)
263
+ iterator erase(const_iterator first, const_iterator last) except +
264
+
265
+ void pop_back()
266
+
267
+ string& replace(size_t pos, size_t len, const string& str) except + # (1)
268
+ string& replace(size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) except + # (2)
269
+ string& replace(size_t pos, size_t len, const char* s, size_t n) except + # (5)
270
+ string& replace(size_t pos, size_t len, const char* s) except + # (6)
271
+ string& replace(size_t pos, size_t len, size_t n, char c) except + # (7)
272
+ string& replace(iterator i1, iterator i2, const string& str) except + # (8)
273
+ string& replace(iterator i1, iterator i2, const char* s, size_t n) except + # (10)
274
+ string& replace(iterator i1, iterator i2, const char* s) except + # (11)
275
+ string& replace(iterator i1, iterator i2, size_t n, char c) except + # (12)
276
+ string& replace(iterator i1, iterator i2, iterator j1, iterator j2) except + # (13)
277
+
278
+ size_t copy(char* s, size_t len, size_t pos) except +
279
+ size_t copy(char* s, size_t len) except +
280
+
281
+ void swap(string& other)
282
+
283
+ # 21.3.2.7, string operations
284
+ const char* c_str()
285
+ const char* data()
286
+
287
+ size_t find(const string& s, size_t pos)
288
+ size_t find(const string& s)
289
+ size_t find(const char* s, size_t pos, size_t n)
290
+ size_t find(const char* s, size_t pos)
291
+ size_t find(const char* s)
292
+ size_t find(char c, size_t pos)
293
+ size_t find(char c)
294
+
295
+ size_t rfind(const string&, size_t pos)
296
+ size_t rfind(const string&)
297
+ size_t rfind(const char* s, size_t pos, size_t n)
298
+ size_t rfind(const char* s, size_t pos)
299
+ size_t rfind(const char* s)
300
+ size_t rfind(char c, size_t pos)
301
+ size_t rfind(char c)
302
+
303
+ size_t find_first_of(const string&, size_t pos)
304
+ size_t find_first_of(const string&)
305
+ size_t find_first_of(const char* s, size_t pos, size_t n)
306
+ size_t find_first_of(const char* s, size_t pos)
307
+ size_t find_first_of(const char* s)
308
+ size_t find_first_of(char c, size_t pos)
309
+ size_t find_first_of(char c)
310
+
311
+ size_t find_first_not_of(const string& s, size_t pos)
312
+ size_t find_first_not_of(const string& s)
313
+ size_t find_first_not_of(const char* s, size_t pos, size_t n)
314
+ size_t find_first_not_of(const char* s, size_t pos)
315
+ size_t find_first_not_of(const char*)
316
+ size_t find_first_not_of(char c, size_t pos)
317
+ size_t find_first_not_of(char c)
318
+
319
+ size_t find_last_of(const string& s, size_t pos)
320
+ size_t find_last_of(const string& s)
321
+ size_t find_last_of(const char* s, size_t pos, size_t n)
322
+ size_t find_last_of(const char* s, size_t pos)
323
+ size_t find_last_of(const char* s)
324
+ size_t find_last_of(char c, size_t pos)
325
+ size_t find_last_of(char c)
326
+
327
+ size_t find_last_not_of(const string& s, size_t pos)
328
+ size_t find_last_not_of(const string& s)
329
+ size_t find_last_not_of(const char* s, size_t pos, size_t n)
330
+ size_t find_last_not_of(const char* s, size_t pos)
331
+ size_t find_last_not_of(const char* s)
332
+ size_t find_last_not_of(char c, size_t pos)
333
+ size_t find_last_not_of(char c)
334
+
335
+ string substr(size_t pos, size_t len) except +
336
+ string substr(size_t pos) except +
337
+ string substr()
338
+
339
+ int compare(const string& s)
340
+ int compare(size_t pos, size_t len, const string& s) except +
341
+ int compare(size_t pos, size_t len, const string& s, size_t subpos, size_t sublen) except +
342
+ int compare(const char* s) except +
343
+ int compare(size_t pos, size_t len, const char* s) except +
344
+ int compare(size_t pos, size_t len, const char* s , size_t n) except +
345
+
346
+ # C++20
347
+ bint starts_with(char c) except +
348
+ bint starts_with(const char* s)
349
+
350
+ bint ends_with(char c) except +
351
+ bint ends_with(const char* s)
352
+
353
+ # C++23
354
+ bint contains(char c) except +
355
+ bint contains(const char* s)