Cython 3.2.0__cp39-abi3-win32.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 (333) hide show
  1. Cython/Build/BuildExecutable.py +169 -0
  2. Cython/Build/Cache.py +199 -0
  3. Cython/Build/Cythonize.py +350 -0
  4. Cython/Build/Dependencies.py +1314 -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 +94 -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 +11 -0
  18. Cython/CodeWriter.py +815 -0
  19. Cython/Compiler/AnalysedTreeTransforms.py +97 -0
  20. Cython/Compiler/Annotate.py +328 -0
  21. Cython/Compiler/AutoDocTransforms.py +320 -0
  22. Cython/Compiler/Buffer.py +680 -0
  23. Cython/Compiler/Builtin.py +984 -0
  24. Cython/Compiler/CmdLine.py +263 -0
  25. Cython/Compiler/Code.pxd +149 -0
  26. Cython/Compiler/Code.py +3746 -0
  27. Cython/Compiler/Code.pyd +0 -0
  28. Cython/Compiler/CodeGeneration.py +33 -0
  29. Cython/Compiler/CythonScope.py +191 -0
  30. Cython/Compiler/Dataclass.py +864 -0
  31. Cython/Compiler/DebugFlags.py +24 -0
  32. Cython/Compiler/Errors.py +297 -0
  33. Cython/Compiler/ExprNodes.py +15562 -0
  34. Cython/Compiler/FlowControl.pxd +97 -0
  35. Cython/Compiler/FlowControl.py +1451 -0
  36. Cython/Compiler/FlowControl.pyd +0 -0
  37. Cython/Compiler/FusedNode.py +971 -0
  38. Cython/Compiler/FusedNode.pyd +0 -0
  39. Cython/Compiler/Future.py +16 -0
  40. Cython/Compiler/Interpreter.py +57 -0
  41. Cython/Compiler/Lexicon.py +421 -0
  42. Cython/Compiler/LineTable.py +114 -0
  43. Cython/Compiler/LineTable.pyd +0 -0
  44. Cython/Compiler/Main.py +857 -0
  45. Cython/Compiler/MatchCaseNodes.py +259 -0
  46. Cython/Compiler/MemoryView.py +905 -0
  47. Cython/Compiler/ModuleNode.py +4235 -0
  48. Cython/Compiler/Naming.py +363 -0
  49. Cython/Compiler/Nodes.py +10831 -0
  50. Cython/Compiler/Optimize.py +5288 -0
  51. Cython/Compiler/Options.py +843 -0
  52. Cython/Compiler/ParseTreeTransforms.pxd +78 -0
  53. Cython/Compiler/ParseTreeTransforms.py +4638 -0
  54. Cython/Compiler/Parsing.pxd +9 -0
  55. Cython/Compiler/Parsing.py +4775 -0
  56. Cython/Compiler/Parsing.pyd +0 -0
  57. Cython/Compiler/Pipeline.py +439 -0
  58. Cython/Compiler/PyrexTypes.py +5870 -0
  59. Cython/Compiler/Pythran.py +232 -0
  60. Cython/Compiler/Scanning.pxd +48 -0
  61. Cython/Compiler/Scanning.py +701 -0
  62. Cython/Compiler/Scanning.pyd +0 -0
  63. Cython/Compiler/StringEncoding.py +298 -0
  64. Cython/Compiler/Symtab.py +3073 -0
  65. Cython/Compiler/Tests/TestBuffer.py +105 -0
  66. Cython/Compiler/Tests/TestBuiltin.py +72 -0
  67. Cython/Compiler/Tests/TestCmdLine.py +586 -0
  68. Cython/Compiler/Tests/TestCode.py +144 -0
  69. Cython/Compiler/Tests/TestFlowControl.py +65 -0
  70. Cython/Compiler/Tests/TestGrammar.py +202 -0
  71. Cython/Compiler/Tests/TestMemView.py +71 -0
  72. Cython/Compiler/Tests/TestParseTreeTransforms.py +285 -0
  73. Cython/Compiler/Tests/TestScanning.py +134 -0
  74. Cython/Compiler/Tests/TestSignatureMatching.py +73 -0
  75. Cython/Compiler/Tests/TestStringEncoding.py +21 -0
  76. Cython/Compiler/Tests/TestTreeFragment.py +63 -0
  77. Cython/Compiler/Tests/TestTreePath.py +103 -0
  78. Cython/Compiler/Tests/TestTypes.py +75 -0
  79. Cython/Compiler/Tests/TestUtilityLoad.py +112 -0
  80. Cython/Compiler/Tests/TestVisitor.py +61 -0
  81. Cython/Compiler/Tests/Utils.py +36 -0
  82. Cython/Compiler/Tests/__init__.py +1 -0
  83. Cython/Compiler/TreeFragment.py +278 -0
  84. Cython/Compiler/TreePath.py +303 -0
  85. Cython/Compiler/TypeInference.py +591 -0
  86. Cython/Compiler/TypeSlots.py +1174 -0
  87. Cython/Compiler/UFuncs.py +311 -0
  88. Cython/Compiler/UtilNodes.py +389 -0
  89. Cython/Compiler/UtilityCode.py +344 -0
  90. Cython/Compiler/Version.py +8 -0
  91. Cython/Compiler/Visitor.pxd +53 -0
  92. Cython/Compiler/Visitor.py +861 -0
  93. Cython/Compiler/Visitor.pyd +0 -0
  94. Cython/Compiler/__init__.py +1 -0
  95. Cython/Coverage.py +448 -0
  96. Cython/Debugger/Cygdb.py +177 -0
  97. Cython/Debugger/DebugWriter.py +82 -0
  98. Cython/Debugger/Tests/TestLibCython.py +275 -0
  99. Cython/Debugger/Tests/__init__.py +1 -0
  100. Cython/Debugger/Tests/cfuncs.c +8 -0
  101. Cython/Debugger/Tests/codefile +49 -0
  102. Cython/Debugger/Tests/test_libcython_in_gdb.py +578 -0
  103. Cython/Debugger/Tests/test_libpython_in_gdb.py +90 -0
  104. Cython/Debugger/__init__.py +1 -0
  105. Cython/Debugger/libcython.py +1548 -0
  106. Cython/Debugger/libpython.py +2821 -0
  107. Cython/Debugging.py +20 -0
  108. Cython/Distutils/__init__.py +2 -0
  109. Cython/Distutils/build_ext.py +139 -0
  110. Cython/Distutils/extension.py +96 -0
  111. Cython/Distutils/old_build_ext.py +351 -0
  112. Cython/Includes/cpython/__init__.pxd +173 -0
  113. Cython/Includes/cpython/array.pxd +178 -0
  114. Cython/Includes/cpython/bool.pxd +37 -0
  115. Cython/Includes/cpython/buffer.pxd +112 -0
  116. Cython/Includes/cpython/bytearray.pxd +33 -0
  117. Cython/Includes/cpython/bytes.pxd +200 -0
  118. Cython/Includes/cpython/cellobject.pxd +35 -0
  119. Cython/Includes/cpython/ceval.pxd +8 -0
  120. Cython/Includes/cpython/codecs.pxd +121 -0
  121. Cython/Includes/cpython/complex.pxd +60 -0
  122. Cython/Includes/cpython/contextvars.pxd +145 -0
  123. Cython/Includes/cpython/conversion.pxd +36 -0
  124. Cython/Includes/cpython/datetime.pxd +395 -0
  125. Cython/Includes/cpython/descr.pxd +26 -0
  126. Cython/Includes/cpython/dict.pxd +187 -0
  127. Cython/Includes/cpython/exc.pxd +263 -0
  128. Cython/Includes/cpython/fileobject.pxd +57 -0
  129. Cython/Includes/cpython/float.pxd +47 -0
  130. Cython/Includes/cpython/function.pxd +65 -0
  131. Cython/Includes/cpython/genobject.pxd +25 -0
  132. Cython/Includes/cpython/getargs.pxd +12 -0
  133. Cython/Includes/cpython/instance.pxd +25 -0
  134. Cython/Includes/cpython/iterator.pxd +36 -0
  135. Cython/Includes/cpython/iterobject.pxd +24 -0
  136. Cython/Includes/cpython/list.pxd +92 -0
  137. Cython/Includes/cpython/long.pxd +149 -0
  138. Cython/Includes/cpython/longintrepr.pxd +14 -0
  139. Cython/Includes/cpython/mapping.pxd +63 -0
  140. Cython/Includes/cpython/marshal.pxd +66 -0
  141. Cython/Includes/cpython/mem.pxd +120 -0
  142. Cython/Includes/cpython/memoryview.pxd +50 -0
  143. Cython/Includes/cpython/method.pxd +49 -0
  144. Cython/Includes/cpython/module.pxd +208 -0
  145. Cython/Includes/cpython/number.pxd +258 -0
  146. Cython/Includes/cpython/object.pxd +433 -0
  147. Cython/Includes/cpython/pycapsule.pxd +143 -0
  148. Cython/Includes/cpython/pylifecycle.pxd +68 -0
  149. Cython/Includes/cpython/pyport.pxd +8 -0
  150. Cython/Includes/cpython/pystate.pxd +95 -0
  151. Cython/Includes/cpython/pythread.pxd +53 -0
  152. Cython/Includes/cpython/ref.pxd +141 -0
  153. Cython/Includes/cpython/sequence.pxd +134 -0
  154. Cython/Includes/cpython/set.pxd +119 -0
  155. Cython/Includes/cpython/slice.pxd +70 -0
  156. Cython/Includes/cpython/time.pxd +129 -0
  157. Cython/Includes/cpython/tuple.pxd +72 -0
  158. Cython/Includes/cpython/type.pxd +53 -0
  159. Cython/Includes/cpython/unicode.pxd +639 -0
  160. Cython/Includes/cpython/version.pxd +32 -0
  161. Cython/Includes/cpython/weakref.pxd +78 -0
  162. Cython/Includes/libc/__init__.pxd +1 -0
  163. Cython/Includes/libc/complex.pxd +35 -0
  164. Cython/Includes/libc/errno.pxd +127 -0
  165. Cython/Includes/libc/float.pxd +43 -0
  166. Cython/Includes/libc/limits.pxd +28 -0
  167. Cython/Includes/libc/locale.pxd +46 -0
  168. Cython/Includes/libc/math.pxd +209 -0
  169. Cython/Includes/libc/setjmp.pxd +10 -0
  170. Cython/Includes/libc/signal.pxd +64 -0
  171. Cython/Includes/libc/stddef.pxd +9 -0
  172. Cython/Includes/libc/stdint.pxd +105 -0
  173. Cython/Includes/libc/stdio.pxd +80 -0
  174. Cython/Includes/libc/stdlib.pxd +72 -0
  175. Cython/Includes/libc/string.pxd +50 -0
  176. Cython/Includes/libc/threads.pxd +234 -0
  177. Cython/Includes/libc/time.pxd +52 -0
  178. Cython/Includes/libcpp/__init__.pxd +4 -0
  179. Cython/Includes/libcpp/algorithm.pxd +320 -0
  180. Cython/Includes/libcpp/any.pxd +16 -0
  181. Cython/Includes/libcpp/atomic.pxd +59 -0
  182. Cython/Includes/libcpp/barrier.pxd +22 -0
  183. Cython/Includes/libcpp/bit.pxd +29 -0
  184. Cython/Includes/libcpp/cast.pxd +12 -0
  185. Cython/Includes/libcpp/cmath.pxd +518 -0
  186. Cython/Includes/libcpp/complex.pxd +106 -0
  187. Cython/Includes/libcpp/condition_variable.pxd +322 -0
  188. Cython/Includes/libcpp/deque.pxd +165 -0
  189. Cython/Includes/libcpp/exception.pxd +86 -0
  190. Cython/Includes/libcpp/execution.pxd +15 -0
  191. Cython/Includes/libcpp/forward_list.pxd +63 -0
  192. Cython/Includes/libcpp/functional.pxd +26 -0
  193. Cython/Includes/libcpp/future.pxd +103 -0
  194. Cython/Includes/libcpp/iterator.pxd +34 -0
  195. Cython/Includes/libcpp/latch.pxd +17 -0
  196. Cython/Includes/libcpp/limits.pxd +61 -0
  197. Cython/Includes/libcpp/list.pxd +117 -0
  198. Cython/Includes/libcpp/map.pxd +252 -0
  199. Cython/Includes/libcpp/memory.pxd +115 -0
  200. Cython/Includes/libcpp/mutex.pxd +387 -0
  201. Cython/Includes/libcpp/numbers.pxd +15 -0
  202. Cython/Includes/libcpp/numeric.pxd +131 -0
  203. Cython/Includes/libcpp/optional.pxd +34 -0
  204. Cython/Includes/libcpp/pair.pxd +1 -0
  205. Cython/Includes/libcpp/queue.pxd +25 -0
  206. Cython/Includes/libcpp/random.pxd +166 -0
  207. Cython/Includes/libcpp/semaphore.pxd +43 -0
  208. Cython/Includes/libcpp/set.pxd +228 -0
  209. Cython/Includes/libcpp/shared_mutex.pxd +96 -0
  210. Cython/Includes/libcpp/span.pxd +87 -0
  211. Cython/Includes/libcpp/stack.pxd +11 -0
  212. Cython/Includes/libcpp/stop_token.pxd +117 -0
  213. Cython/Includes/libcpp/string.pxd +355 -0
  214. Cython/Includes/libcpp/string_view.pxd +183 -0
  215. Cython/Includes/libcpp/typeindex.pxd +15 -0
  216. Cython/Includes/libcpp/typeinfo.pxd +10 -0
  217. Cython/Includes/libcpp/unordered_map.pxd +193 -0
  218. Cython/Includes/libcpp/unordered_set.pxd +152 -0
  219. Cython/Includes/libcpp/utility.pxd +30 -0
  220. Cython/Includes/libcpp/vector.pxd +186 -0
  221. Cython/Includes/numpy/math.pxd +150 -0
  222. Cython/Includes/openmp.pxd +50 -0
  223. Cython/Includes/posix/__init__.pxd +1 -0
  224. Cython/Includes/posix/dlfcn.pxd +14 -0
  225. Cython/Includes/posix/fcntl.pxd +86 -0
  226. Cython/Includes/posix/ioctl.pxd +4 -0
  227. Cython/Includes/posix/mman.pxd +101 -0
  228. Cython/Includes/posix/resource.pxd +57 -0
  229. Cython/Includes/posix/select.pxd +21 -0
  230. Cython/Includes/posix/signal.pxd +73 -0
  231. Cython/Includes/posix/stat.pxd +98 -0
  232. Cython/Includes/posix/stdio.pxd +37 -0
  233. Cython/Includes/posix/stdlib.pxd +29 -0
  234. Cython/Includes/posix/strings.pxd +9 -0
  235. Cython/Includes/posix/time.pxd +71 -0
  236. Cython/Includes/posix/types.pxd +30 -0
  237. Cython/Includes/posix/uio.pxd +26 -0
  238. Cython/Includes/posix/unistd.pxd +271 -0
  239. Cython/Includes/posix/wait.pxd +38 -0
  240. Cython/Plex/Actions.pxd +24 -0
  241. Cython/Plex/Actions.py +119 -0
  242. Cython/Plex/Actions.pyd +0 -0
  243. Cython/Plex/DFA.pxd +14 -0
  244. Cython/Plex/DFA.py +164 -0
  245. Cython/Plex/DFA.pyd +0 -0
  246. Cython/Plex/Errors.py +48 -0
  247. Cython/Plex/Lexicons.py +178 -0
  248. Cython/Plex/Machines.pxd +36 -0
  249. Cython/Plex/Machines.py +238 -0
  250. Cython/Plex/Machines.pyd +0 -0
  251. Cython/Plex/Regexps.py +535 -0
  252. Cython/Plex/Scanners.pxd +45 -0
  253. Cython/Plex/Scanners.py +328 -0
  254. Cython/Plex/Scanners.pyd +0 -0
  255. Cython/Plex/Transitions.pxd +14 -0
  256. Cython/Plex/Transitions.py +239 -0
  257. Cython/Plex/Transitions.pyd +0 -0
  258. Cython/Plex/__init__.py +34 -0
  259. Cython/Runtime/__init__.py +1 -0
  260. Cython/Runtime/refnanny.pyd +0 -0
  261. Cython/Runtime/refnanny.pyx +237 -0
  262. Cython/Shadow.py +690 -0
  263. Cython/Shadow.pyi +521 -0
  264. Cython/StringIOTree.py +170 -0
  265. Cython/StringIOTree.pyd +0 -0
  266. Cython/Tempita/__init__.py +4 -0
  267. Cython/Tempita/_looper.py +154 -0
  268. Cython/Tempita/_tempita.py +1091 -0
  269. Cython/Tempita/_tempita.pyd +0 -0
  270. Cython/TestUtils.py +422 -0
  271. Cython/Tests/TestCodeWriter.py +128 -0
  272. Cython/Tests/TestCythonUtils.py +202 -0
  273. Cython/Tests/TestJediTyper.py +223 -0
  274. Cython/Tests/TestShadow.py +114 -0
  275. Cython/Tests/TestStringIOTree.py +67 -0
  276. Cython/Tests/TestTestUtils.py +90 -0
  277. Cython/Tests/__init__.py +1 -0
  278. Cython/Tests/xmlrunner.py +390 -0
  279. Cython/Utility/AsyncGen.c +1031 -0
  280. Cython/Utility/Buffer.c +865 -0
  281. Cython/Utility/BufferFormatFromTypeInfo.pxd +2 -0
  282. Cython/Utility/Builtins.c +810 -0
  283. Cython/Utility/CConvert.pyx +134 -0
  284. Cython/Utility/CMath.c +104 -0
  285. Cython/Utility/CommonStructures.c +226 -0
  286. Cython/Utility/Complex.c +378 -0
  287. Cython/Utility/Coroutine.c +2300 -0
  288. Cython/Utility/CpdefEnums.pyx +103 -0
  289. Cython/Utility/CppConvert.pyx +282 -0
  290. Cython/Utility/CppSupport.cpp +151 -0
  291. Cython/Utility/CythonFunction.c +1832 -0
  292. Cython/Utility/Dataclasses.c +101 -0
  293. Cython/Utility/Embed.c +121 -0
  294. Cython/Utility/Exceptions.c +1016 -0
  295. Cython/Utility/ExtensionTypes.c +996 -0
  296. Cython/Utility/FunctionArguments.c +1043 -0
  297. Cython/Utility/FusedFunction.pyx +44 -0
  298. Cython/Utility/ImportExport.c +907 -0
  299. Cython/Utility/MemoryView.pxd +188 -0
  300. Cython/Utility/MemoryView.pyx +1482 -0
  301. Cython/Utility/MemoryView_C.c +927 -0
  302. Cython/Utility/ModuleSetupCode.c +3203 -0
  303. Cython/Utility/NumpyImportArray.c +46 -0
  304. Cython/Utility/ObjectHandling.c +3273 -0
  305. Cython/Utility/Optimize.c +1603 -0
  306. Cython/Utility/Overflow.c +384 -0
  307. Cython/Utility/Printing.c +86 -0
  308. Cython/Utility/Profile.c +732 -0
  309. Cython/Utility/StringTools.c +1379 -0
  310. Cython/Utility/Synchronization.c +399 -0
  311. Cython/Utility/TString.c +356 -0
  312. Cython/Utility/TestCyUtilityLoader.pyx +8 -0
  313. Cython/Utility/TestCythonScope.pyx +75 -0
  314. Cython/Utility/TestUtilityLoader.c +12 -0
  315. Cython/Utility/TypeConversion.c +1385 -0
  316. Cython/Utility/UFuncs.pyx +50 -0
  317. Cython/Utility/UFuncs_C.c +89 -0
  318. Cython/Utility/__init__.py +28 -0
  319. Cython/Utility/arrayarray.h +167 -0
  320. Cython/Utils.py +687 -0
  321. Cython/Utils.pyd +0 -0
  322. Cython/__init__.py +10 -0
  323. Cython/__init__.pyi +7 -0
  324. Cython/py.typed +0 -0
  325. cython-3.2.0.dist-info/METADATA +85 -0
  326. cython-3.2.0.dist-info/RECORD +333 -0
  327. cython-3.2.0.dist-info/WHEEL +5 -0
  328. cython-3.2.0.dist-info/entry_points.txt +4 -0
  329. cython-3.2.0.dist-info/top_level.txt +3 -0
  330. cython.py +29 -0
  331. pyximport/__init__.py +4 -0
  332. pyximport/pyxbuild.py +160 -0
  333. pyximport/pyximport.py +482 -0
@@ -0,0 +1,129 @@
1
+ """
2
+ Cython implementation of (parts of) the standard library time module.
3
+
4
+ Note: On implementations that lack a C-API for monotonic/perfcounter clocks
5
+ (like PyPy), the fallback code uses the system clock which may return absolute
6
+ time values from a different value range, differing from those provided by
7
+ Python's "time" module.
8
+ """
9
+
10
+ from libc.stdint cimport int64_t
11
+ from cpython.exc cimport PyErr_SetFromErrno
12
+
13
+ cdef extern from *:
14
+ """
15
+ #if PY_VERSION_HEX >= 0x030d00b1 || defined(PyTime_t)
16
+ #define __Pyx_PyTime_t PyTime_t
17
+ #else
18
+ #define __Pyx_PyTime_t _PyTime_t
19
+ #endif
20
+
21
+ #if PY_VERSION_HEX >= 0x030d00b1 || defined(PyTime_TimeRaw)
22
+ static CYTHON_INLINE __Pyx_PyTime_t __Pyx_PyTime_TimeRaw(void) {
23
+ __Pyx_PyTime_t tic;
24
+ (void) PyTime_TimeRaw(&tic);
25
+ return tic;
26
+ }
27
+ #else
28
+ #define __Pyx_PyTime_TimeRaw() _PyTime_GetSystemClock()
29
+ #endif
30
+
31
+ #if PY_VERSION_HEX >= 0x030d00b1 || defined(PyTime_MonotonicRaw)
32
+ static CYTHON_INLINE __Pyx_PyTime_t __Pyx_PyTime_MonotonicRaw(void) {
33
+ __Pyx_PyTime_t tic;
34
+ (void) PyTime_MonotonicRaw(&tic);
35
+ return tic;
36
+ }
37
+ #elif CYTHON_COMPILING_IN_PYPY && !defined(_PyTime_GetMonotonicClock)
38
+ #define __Pyx_PyTime_MonotonicRaw() _PyTime_GetSystemClock()
39
+ #else
40
+ #define __Pyx_PyTime_MonotonicRaw() _PyTime_GetMonotonicClock()
41
+ #endif
42
+
43
+ #if PY_VERSION_HEX >= 0x030d00b1 || defined(PyTime_PerfCounterRaw)
44
+ static CYTHON_INLINE __Pyx_PyTime_t __Pyx_PyTime_PerfCounterRaw(void) {
45
+ __Pyx_PyTime_t tic;
46
+ (void) PyTime_PerfCounterRaw(&tic);
47
+ return tic;
48
+ }
49
+ #elif CYTHON_COMPILING_IN_PYPY && !defined(_PyTime_GetPerfCounter)
50
+ #define __Pyx_PyTime_PerfCounterRaw() __Pyx_PyTime_MonotonicRaw()
51
+ #else
52
+ #define __Pyx_PyTime_PerfCounterRaw() _PyTime_GetPerfCounter()
53
+ #endif
54
+
55
+ #if PY_VERSION_HEX >= 0x030d00b1 || defined(PyTime_AsSecondsDouble)
56
+ #define __Pyx_PyTime_AsSecondsDouble(t) PyTime_AsSecondsDouble(t)
57
+ #else
58
+ #define __Pyx_PyTime_AsSecondsDouble(t) _PyTime_AsSecondsDouble(t)
59
+ #endif
60
+ """
61
+ ctypedef int64_t PyTime_t "__Pyx_PyTime_t"
62
+
63
+ ctypedef PyTime_t _PyTime_t "__Pyx_PyTime_t" # legacy, use "PyTime_t" instead
64
+ PyTime_t PyTime_TimeUnchecked "__Pyx_PyTime_TimeRaw" () noexcept nogil # legacy, use "PyTime_TimeRaw" instead
65
+
66
+ PyTime_t PyTime_TimeRaw "__Pyx_PyTime_TimeRaw" () noexcept nogil
67
+ PyTime_t PyTime_MonotonicRaw "__Pyx_PyTime_MonotonicRaw" () noexcept nogil
68
+ PyTime_t PyTime_PerfCounterRaw "__Pyx_PyTime_PerfCounterRaw" () noexcept nogil
69
+ double PyTime_AsSecondsDouble "__Pyx_PyTime_AsSecondsDouble" (PyTime_t t) noexcept nogil
70
+
71
+
72
+ from libc.time cimport (
73
+ tm,
74
+ time_t,
75
+ localtime as libc_localtime,
76
+ )
77
+
78
+
79
+ cdef inline double time() noexcept nogil:
80
+ cdef PyTime_t tic = PyTime_TimeRaw()
81
+ return PyTime_AsSecondsDouble(tic)
82
+
83
+
84
+ cdef inline int64_t time_ns() noexcept nogil:
85
+ return <int64_t> PyTime_TimeRaw()
86
+
87
+
88
+ cdef inline double perf_counter() noexcept nogil:
89
+ cdef PyTime_t tic = PyTime_PerfCounterRaw()
90
+ return PyTime_AsSecondsDouble(tic)
91
+
92
+
93
+ cdef inline int64_t perf_counter_ns() noexcept nogil:
94
+ return <int64_t> PyTime_PerfCounterRaw()
95
+
96
+
97
+ cdef inline double monotonic() noexcept nogil:
98
+ cdef PyTime_t tic = PyTime_MonotonicRaw()
99
+ return PyTime_AsSecondsDouble(tic)
100
+
101
+
102
+ cdef inline int64_t monotonic_ns() noexcept nogil:
103
+ return <int64_t> PyTime_MonotonicRaw()
104
+
105
+
106
+ cdef inline int _raise_from_errno() except -1 with gil:
107
+ PyErr_SetFromErrno(RuntimeError)
108
+ return <int> -1 # Let the C compiler know that this function always raises.
109
+
110
+
111
+ cdef inline tm localtime() except * nogil:
112
+ """
113
+ Analogue to the stdlib time.localtime. The returned struct
114
+ has some entries that the stdlib version does not: tm_gmtoff, tm_zone
115
+ """
116
+ cdef:
117
+ time_t tic = <time_t>time()
118
+ tm* result
119
+
120
+ result = libc_localtime(&tic)
121
+ if result is NULL:
122
+ _raise_from_errno()
123
+ # Fix 0-based date values (and the 1900-based year).
124
+ # See tmtotuple() in https://github.com/python/cpython/blob/master/Modules/timemodule.c
125
+ result.tm_year += 1900
126
+ result.tm_mon += 1
127
+ result.tm_wday = <int> ((result.tm_wday + 6) % 7)
128
+ result.tm_yday += 1
129
+ return result[0]
@@ -0,0 +1,72 @@
1
+ from .object cimport PyObject
2
+
3
+ cdef extern from "Python.h":
4
+
5
+ ############################################################################
6
+ # Tuples
7
+ ############################################################################
8
+
9
+ bint PyTuple_Check(object p)
10
+ # Return true if p is a tuple object or an instance of a subtype
11
+ # of the tuple type.
12
+
13
+ bint PyTuple_CheckExact(object p)
14
+ # Return true if p is a tuple object, but not an instance of a subtype of the tuple type.
15
+
16
+ tuple PyTuple_New(Py_ssize_t len)
17
+ # Return value: New reference.
18
+ # Return a new tuple object of size len, or NULL on failure.
19
+
20
+ tuple PyTuple_Pack(Py_ssize_t n, ...)
21
+ # Return value: New reference.
22
+ # Return a new tuple object of size n, or NULL on failure. The
23
+ # tuple values are initialized to the subsequent n C arguments
24
+ # pointing to Python objects. "PyTuple_Pack(2, a, b)" is
25
+ # equivalent to "Py_BuildValue("(OO)", a, b)".
26
+
27
+ Py_ssize_t PyTuple_Size(object p) except -1
28
+ # Take a pointer to a tuple object, and return the size of that tuple.
29
+
30
+ Py_ssize_t PyTuple_GET_SIZE(object p)
31
+ # Return the size of the tuple p, which must be non-NULL and point
32
+ # to a tuple; no error checking is performed.
33
+
34
+ PyObject* PyTuple_GetItem(object p, Py_ssize_t pos) except NULL
35
+ # Return value: Borrowed reference.
36
+ # Return the object at position pos in the tuple pointed to by
37
+ # p. If pos is out of bounds, return NULL and sets an IndexError
38
+ # exception.
39
+
40
+ PyObject* PyTuple_GET_ITEM(object p, Py_ssize_t pos)
41
+ # Return value: Borrowed reference.
42
+ # Like PyTuple_GetItem(), but does no checking of its arguments.
43
+
44
+ tuple PyTuple_GetSlice(object p, Py_ssize_t low, Py_ssize_t high)
45
+ # Return value: New reference.
46
+ # Take a slice of the tuple pointed to by p from low to high and return it as a new tuple.
47
+
48
+ int PyTuple_SetItem(object p, Py_ssize_t pos, object o) except -1
49
+ # Insert a reference to object o at position pos of the tuple
50
+ # pointed to by p. Return 0 on success.
51
+ #
52
+ # WARNING: This function _steals_ a reference to o.
53
+
54
+ void PyTuple_SET_ITEM(object p, Py_ssize_t pos, object o)
55
+ # Like PyTuple_SetItem(), but does no error checking, and should
56
+ # only be used to fill in brand new tuples.
57
+ #
58
+ # WARNING: This function _steals_ a reference to o.
59
+
60
+ int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize) except -1
61
+ # Can be used to resize a tuple. newsize will be the new length of
62
+ # the tuple. Because tuples are supposed to be immutable, this
63
+ # should only be used if there is only one reference to the
64
+ # object. Do not use this if the tuple may already be known to
65
+ # some other part of the code. The tuple will always grow or
66
+ # shrink at the end. Think of this as destroying the old tuple and
67
+ # creating a new one, only more efficiently. Returns 0 on
68
+ # success. Client code should never assume that the resulting
69
+ # value of *p will be the same as before calling this function. If
70
+ # the object referenced by *p is replaced, the original *p is
71
+ # destroyed. On failure, returns -1 and sets *p to NULL, and
72
+ # raises MemoryError or SystemError.
@@ -0,0 +1,53 @@
1
+
2
+ cdef extern from "Python.h":
3
+ # The C structure of the objects used to describe built-in types.
4
+
5
+ ############################################################################
6
+ # 7.1.1 Type Objects
7
+ ############################################################################
8
+
9
+ ctypedef class __builtin__.type [object PyTypeObject]:
10
+ pass
11
+
12
+ # PyObject* PyType_Type
13
+ # This is the type object for type objects; it is the same object
14
+ # as type and types.TypeType in the Python layer.
15
+
16
+ bint PyType_Check(object o)
17
+ # Return true if the object o is a type object, including
18
+ # instances of types derived from the standard type object. Return
19
+ # false in all other cases.
20
+
21
+ bint PyType_CheckExact(object o)
22
+ # Return true if the object o is a type object, but not a subtype
23
+ # of the standard type object. Return false in all other
24
+ # cases.
25
+
26
+ void PyType_Modified(type type)
27
+ # Invalidate the internal lookup cache for the type and all of its
28
+ # subtypes. This function must be called after any manual modification
29
+ # of the attributes or base classes of the type.
30
+
31
+ bint PyType_HasFeature(object o, int feature)
32
+ # Return true if the type object o sets the feature feature. Type
33
+ # features are denoted by single bit flags.
34
+
35
+ bint PyType_IS_GC(object o)
36
+ # Return true if the type object includes support for the cycle
37
+ # detector; this tests the type flag Py_TPFLAGS_HAVE_GC.
38
+
39
+ bint PyType_IsSubtype(type a, type b)
40
+ # Return true if a is a subtype of b.
41
+
42
+ object PyType_GenericAlloc(object type, Py_ssize_t nitems)
43
+ # Return value: New reference.
44
+
45
+ object PyType_GenericNew(type type, object args, object kwds)
46
+ # Return value: New reference.
47
+
48
+ bint PyType_Ready(type type) except -1
49
+ # Finalize a type object. This should be called on all type
50
+ # objects to finish their initialization. This function is
51
+ # responsible for adding inherited slots from a type's base
52
+ # class. Return 0 on success, or return -1 and sets an exception
53
+ # on error.