pytron-kit 0.3.12__py3-none-macosx_11_0_universal2.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 (419) hide show
  1. pytron/__init__.py +112 -0
  2. pytron/application.py +562 -0
  3. pytron/apputils/__init__.py +0 -0
  4. pytron/apputils/chrome_ipc.py +203 -0
  5. pytron/apputils/codegen.py +261 -0
  6. pytron/apputils/config.py +303 -0
  7. pytron/apputils/deadmansswitch.py +47 -0
  8. pytron/apputils/extras.py +76 -0
  9. pytron/apputils/native.py +148 -0
  10. pytron/apputils/shell.py +73 -0
  11. pytron/apputils/windows.py +286 -0
  12. pytron/cli.py +384 -0
  13. pytron/commands/__init__.py +0 -0
  14. pytron/commands/android.py +28 -0
  15. pytron/commands/build.py +26 -0
  16. pytron/commands/doctor.py +221 -0
  17. pytron/commands/engine.py +23 -0
  18. pytron/commands/frontend.py +60 -0
  19. pytron/commands/harvest.py +112 -0
  20. pytron/commands/helpers.py +239 -0
  21. pytron/commands/info.py +50 -0
  22. pytron/commands/init.py +521 -0
  23. pytron/commands/install.py +294 -0
  24. pytron/commands/login.py +130 -0
  25. pytron/commands/package.py +228 -0
  26. pytron/commands/plugin.py +442 -0
  27. pytron/commands/run.py +312 -0
  28. pytron/commands/scan.py +210 -0
  29. pytron/commands/show.py +23 -0
  30. pytron/commands/uninstall.py +150 -0
  31. pytron/commands/utils.py +42 -0
  32. pytron/commands/workflow.py +95 -0
  33. pytron/console.py +133 -0
  34. pytron/core.py +18 -0
  35. pytron/dependencies/WebView2Loader.dll +0 -0
  36. pytron/dependencies/__init__.py +1 -0
  37. pytron/dependencies/pytron_native.so +0 -0
  38. pytron/engines/chrome/adapter.py +445 -0
  39. pytron/engines/chrome/engine.py +576 -0
  40. pytron/engines/chrome/forge.py +147 -0
  41. pytron/engines/chrome/shell/package.json +8 -0
  42. pytron/engines/chrome/shell/preload.js +12 -0
  43. pytron/engines/chrome/shell/shell.js +534 -0
  44. pytron/exceptions.py +36 -0
  45. pytron/inspector.py +201 -0
  46. pytron/inspector_ui.py +512 -0
  47. pytron/installer/Installation.nsi +236 -0
  48. pytron/installer/header.bmp +0 -0
  49. pytron/installer/pytron.ico +0 -0
  50. pytron/installer/sidebar.bmp +0 -0
  51. pytron/llms.md +98 -0
  52. pytron/manifests/README.md +29 -0
  53. pytron/manifests/windows-utf8.manifest +44 -0
  54. pytron/menu.py +128 -0
  55. pytron/nsis-setup.exe +0 -0
  56. pytron/pack/__init__.py +0 -0
  57. pytron/pack/assets.py +131 -0
  58. pytron/pack/compilers.py +289 -0
  59. pytron/pack/crystal.py +297 -0
  60. pytron/pack/graph.py +377 -0
  61. pytron/pack/inference.py +157 -0
  62. pytron/pack/installers.py +402 -0
  63. pytron/pack/introspect.py +357 -0
  64. pytron/pack/metadata.py +213 -0
  65. pytron/pack/modules.py +618 -0
  66. pytron/pack/nuitka.py +108 -0
  67. pytron/pack/pipeline.py +107 -0
  68. pytron/pack/pyinstaller.py +176 -0
  69. pytron/pack/rust_engine.py +273 -0
  70. pytron/pack/secure.py +309 -0
  71. pytron/pack/secure_loader/bin/pytron_rust_bootloader +0 -0
  72. pytron/pack/secure_loader/icon.ico +0 -0
  73. pytron/pack/utils.py +110 -0
  74. pytron/pack/virtual_root.py +124 -0
  75. pytron/platforms/__init__.py +0 -0
  76. pytron/platforms/android/__init__.py +3 -0
  77. pytron/platforms/android/android.py +103 -0
  78. pytron/platforms/android/builder.py +736 -0
  79. pytron/platforms/android/ops/build.py +79 -0
  80. pytron/platforms/android/ops/init.py +63 -0
  81. pytron/platforms/android/ops/run.py +79 -0
  82. pytron/platforms/android/ops/sync.py +770 -0
  83. pytron/platforms/android/ops/utils.py +8 -0
  84. pytron/platforms/android/shell/README.md +30 -0
  85. pytron/platforms/android/shell/app/build.gradle +64 -0
  86. pytron/platforms/android/shell/app/src/main/AndroidManifest.xml +29 -0
  87. pytron/platforms/android/shell/app/src/main/assets/python/main.py +86 -0
  88. pytron/platforms/android/shell/app/src/main/assets/python/python314.zip +0 -0
  89. pytron/platforms/android/shell/app/src/main/cpp/CMakeLists.txt +25 -0
  90. pytron/platforms/android/shell/app/src/main/cpp/include/Python.h +155 -0
  91. pytron/platforms/android/shell/app/src/main/cpp/include/abstract.h +915 -0
  92. pytron/platforms/android/shell/app/src/main/cpp/include/audit.h +30 -0
  93. pytron/platforms/android/shell/app/src/main/cpp/include/bltinmodule.h +14 -0
  94. pytron/platforms/android/shell/app/src/main/cpp/include/boolobject.h +54 -0
  95. pytron/platforms/android/shell/app/src/main/cpp/include/bytearrayobject.h +44 -0
  96. pytron/platforms/android/shell/app/src/main/cpp/include/bytesobject.h +66 -0
  97. pytron/platforms/android/shell/app/src/main/cpp/include/ceval.h +145 -0
  98. pytron/platforms/android/shell/app/src/main/cpp/include/codecs.h +176 -0
  99. pytron/platforms/android/shell/app/src/main/cpp/include/compile.h +22 -0
  100. pytron/platforms/android/shell/app/src/main/cpp/include/complexobject.h +30 -0
  101. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/abstract.h +104 -0
  102. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/audit.h +8 -0
  103. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/bytearrayobject.h +38 -0
  104. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/bytesobject.h +42 -0
  105. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/cellobject.h +50 -0
  106. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/ceval.h +43 -0
  107. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/classobject.h +71 -0
  108. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/code.h +340 -0
  109. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/compile.h +50 -0
  110. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/complexobject.h +33 -0
  111. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/context.h +107 -0
  112. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/critical_section.h +154 -0
  113. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/descrobject.h +62 -0
  114. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/dictobject.h +105 -0
  115. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/fileobject.h +16 -0
  116. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/fileutils.h +16 -0
  117. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/floatobject.h +27 -0
  118. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/frameobject.h +35 -0
  119. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/funcobject.h +185 -0
  120. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/genobject.h +56 -0
  121. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/import.h +30 -0
  122. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/initconfig.h +334 -0
  123. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/listobject.h +53 -0
  124. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/lock.h +74 -0
  125. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/longintrepr.h +184 -0
  126. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/longobject.h +89 -0
  127. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/memoryobject.h +50 -0
  128. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/methodobject.h +66 -0
  129. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/modsupport.h +26 -0
  130. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/monitoring.h +269 -0
  131. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/object.h +493 -0
  132. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/objimpl.h +104 -0
  133. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/odictobject.h +43 -0
  134. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/picklebufobject.h +31 -0
  135. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pthread_stubs.h +105 -0
  136. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyatomic.h +614 -0
  137. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyatomic_gcc.h +615 -0
  138. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyatomic_msc.h +1197 -0
  139. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyatomic_std.h +1112 -0
  140. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyctype.h +39 -0
  141. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pydebug.h +38 -0
  142. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyerrors.h +132 -0
  143. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyfpe.h +15 -0
  144. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyframe.h +45 -0
  145. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pyhash.h +54 -0
  146. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pylifecycle.h +89 -0
  147. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pymem.h +84 -0
  148. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pystate.h +275 -0
  149. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pystats.h +194 -0
  150. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pythonrun.h +96 -0
  151. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pythread.h +43 -0
  152. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/pytime.h +27 -0
  153. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/setobject.h +71 -0
  154. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/traceback.h +13 -0
  155. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/tracemalloc.h +32 -0
  156. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/tupleobject.h +40 -0
  157. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/unicodeobject.h +773 -0
  158. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/warnings.h +20 -0
  159. pytron/platforms/android/shell/app/src/main/cpp/include/cpython/weakrefobject.h +66 -0
  160. pytron/platforms/android/shell/app/src/main/cpp/include/critical_section.h +16 -0
  161. pytron/platforms/android/shell/app/src/main/cpp/include/datetime.h +267 -0
  162. pytron/platforms/android/shell/app/src/main/cpp/include/descrobject.h +100 -0
  163. pytron/platforms/android/shell/app/src/main/cpp/include/dictobject.h +108 -0
  164. pytron/platforms/android/shell/app/src/main/cpp/include/dynamic_annotations.h +499 -0
  165. pytron/platforms/android/shell/app/src/main/cpp/include/enumobject.h +17 -0
  166. pytron/platforms/android/shell/app/src/main/cpp/include/errcode.h +45 -0
  167. pytron/platforms/android/shell/app/src/main/cpp/include/exports.h +105 -0
  168. pytron/platforms/android/shell/app/src/main/cpp/include/fileobject.h +41 -0
  169. pytron/platforms/android/shell/app/src/main/cpp/include/fileutils.h +62 -0
  170. pytron/platforms/android/shell/app/src/main/cpp/include/floatobject.h +54 -0
  171. pytron/platforms/android/shell/app/src/main/cpp/include/frameobject.h +20 -0
  172. pytron/platforms/android/shell/app/src/main/cpp/include/genericaliasobject.h +14 -0
  173. pytron/platforms/android/shell/app/src/main/cpp/include/import.h +103 -0
  174. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc/atomic.h +392 -0
  175. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc/internal.h +969 -0
  176. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc/prim.h +329 -0
  177. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc/track.h +147 -0
  178. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc/types.h +721 -0
  179. pytron/platforms/android/shell/app/src/main/cpp/include/internal/mimalloc/mimalloc.h +565 -0
  180. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_abstract.h +61 -0
  181. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_asdl.h +112 -0
  182. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_ast.h +945 -0
  183. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_ast_state.h +271 -0
  184. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_atexit.h +31 -0
  185. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_audit.h +35 -0
  186. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_backoff.h +133 -0
  187. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_bitutils.h +186 -0
  188. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_blocks_output_buffer.h +321 -0
  189. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_brc.h +73 -0
  190. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_bytes_methods.h +82 -0
  191. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_bytesobject.h +149 -0
  192. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_c_array.h +39 -0
  193. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_call.h +206 -0
  194. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_capsule.h +17 -0
  195. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_cell.h +75 -0
  196. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_ceval.h +390 -0
  197. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_ceval_state.h +48 -0
  198. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_code.h +671 -0
  199. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_codecs.h +76 -0
  200. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_compile.h +230 -0
  201. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_complexobject.h +34 -0
  202. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_condvar.h +93 -0
  203. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_context.h +59 -0
  204. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_critical_section.h +237 -0
  205. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_crossinterp.h +406 -0
  206. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_crossinterp_data_registry.h +41 -0
  207. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_debug_offsets.h +379 -0
  208. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_descrobject.h +28 -0
  209. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_dict.h +410 -0
  210. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_dict_state.h +28 -0
  211. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_dtoa.h +40 -0
  212. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_emscripten_signal.h +30 -0
  213. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_emscripten_trampoline.h +70 -0
  214. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_exceptions.h +40 -0
  215. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_faulthandler.h +100 -0
  216. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_fileutils.h +320 -0
  217. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_fileutils_windows.h +98 -0
  218. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_floatobject.h +49 -0
  219. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_flowgraph.h +47 -0
  220. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_format.h +27 -0
  221. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_frame.h +61 -0
  222. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_freelist.h +111 -0
  223. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_freelist_state.h +70 -0
  224. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_function.h +53 -0
  225. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_gc.h +378 -0
  226. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_genobject.h +43 -0
  227. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_getopt.h +22 -0
  228. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_gil.h +66 -0
  229. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_global_objects.h +34 -0
  230. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_global_objects_fini_generated.h +1592 -0
  231. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_global_strings.h +854 -0
  232. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_hamt.h +113 -0
  233. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_hashtable.h +150 -0
  234. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_import.h +141 -0
  235. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_importdl.h +139 -0
  236. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_index_pool.h +36 -0
  237. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_initconfig.h +197 -0
  238. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_instruction_sequence.h +83 -0
  239. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_instruments.h +127 -0
  240. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_interp.h +109 -0
  241. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_interp_structs.h +977 -0
  242. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_interpframe.h +401 -0
  243. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_interpframe_structs.h +95 -0
  244. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_interpolation.h +26 -0
  245. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_intrinsics.h +51 -0
  246. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_jit.h +29 -0
  247. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_list.h +81 -0
  248. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_llist.h +106 -0
  249. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_lock.h +236 -0
  250. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_long.h +319 -0
  251. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_magic_number.h +305 -0
  252. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_memoryobject.h +20 -0
  253. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_mimalloc.h +69 -0
  254. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_modsupport.h +99 -0
  255. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_moduleobject.h +62 -0
  256. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_namespace.h +21 -0
  257. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_object.h +1029 -0
  258. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_object_alloc.h +71 -0
  259. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_object_deferred.h +32 -0
  260. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_object_stack.h +95 -0
  261. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_object_state.h +49 -0
  262. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_obmalloc.h +702 -0
  263. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_obmalloc_init.h +66 -0
  264. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_opcode_metadata.h +2117 -0
  265. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_opcode_utils.h +90 -0
  266. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_optimizer.h +318 -0
  267. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_parking_lot.h +97 -0
  268. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_parser.h +78 -0
  269. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pathconfig.h +26 -0
  270. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pyarena.h +68 -0
  271. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pyatomic_ft_wrappers.h +174 -0
  272. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pybuffer.h +21 -0
  273. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pyerrors.h +213 -0
  274. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pyhash.h +91 -0
  275. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pylifecycle.h +136 -0
  276. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pymath.h +205 -0
  277. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pymem.h +145 -0
  278. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pymem_init.h +103 -0
  279. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pystate.h +339 -0
  280. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pystats.h +21 -0
  281. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pythonrun.h +68 -0
  282. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_pythread.h +172 -0
  283. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_qsbr.h +172 -0
  284. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_range.h +21 -0
  285. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_runtime.h +63 -0
  286. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_runtime_init.h +239 -0
  287. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_runtime_init_generated.h +1589 -0
  288. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_runtime_structs.h +310 -0
  289. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_semaphore.h +67 -0
  290. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_setobject.h +41 -0
  291. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_signal.h +108 -0
  292. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_sliceobject.h +20 -0
  293. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_stackref.h +791 -0
  294. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_stats.h +97 -0
  295. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_strhex.h +39 -0
  296. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_structs.h +88 -0
  297. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_structseq.h +40 -0
  298. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_symtable.h +201 -0
  299. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_sysmodule.h +32 -0
  300. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_template.h +26 -0
  301. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_time.h +334 -0
  302. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_token.h +110 -0
  303. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_traceback.h +111 -0
  304. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_tracemalloc.h +164 -0
  305. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_tstate.h +88 -0
  306. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_tuple.h +75 -0
  307. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_typedefs.h +18 -0
  308. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_typeobject.h +155 -0
  309. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_typevarobject.h +28 -0
  310. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_ucnhash.h +36 -0
  311. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_unicodeobject.h +308 -0
  312. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_unicodeobject_generated.h +3132 -0
  313. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_unionobject.h +26 -0
  314. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_uniqueid.h +57 -0
  315. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_uop_ids.h +335 -0
  316. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_uop_metadata.h +1204 -0
  317. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_warnings.h +21 -0
  318. pytron/platforms/android/shell/app/src/main/cpp/include/internal/pycore_weakref.h +133 -0
  319. pytron/platforms/android/shell/app/src/main/cpp/include/intrcheck.h +23 -0
  320. pytron/platforms/android/shell/app/src/main/cpp/include/iterobject.h +24 -0
  321. pytron/platforms/android/shell/app/src/main/cpp/include/listobject.h +55 -0
  322. pytron/platforms/android/shell/app/src/main/cpp/include/lock.h +16 -0
  323. pytron/platforms/android/shell/app/src/main/cpp/include/longobject.h +178 -0
  324. pytron/platforms/android/shell/app/src/main/cpp/include/marshal.h +31 -0
  325. pytron/platforms/android/shell/app/src/main/cpp/include/memoryobject.h +34 -0
  326. pytron/platforms/android/shell/app/src/main/cpp/include/methodobject.h +146 -0
  327. pytron/platforms/android/shell/app/src/main/cpp/include/modsupport.h +146 -0
  328. pytron/platforms/android/shell/app/src/main/cpp/include/moduleobject.h +122 -0
  329. pytron/platforms/android/shell/app/src/main/cpp/include/monitoring.h +18 -0
  330. pytron/platforms/android/shell/app/src/main/cpp/include/object.h +828 -0
  331. pytron/platforms/android/shell/app/src/main/cpp/include/objimpl.h +211 -0
  332. pytron/platforms/android/shell/app/src/main/cpp/include/opcode.h +43 -0
  333. pytron/platforms/android/shell/app/src/main/cpp/include/opcode_ids.h +259 -0
  334. pytron/platforms/android/shell/app/src/main/cpp/include/osdefs.h +57 -0
  335. pytron/platforms/android/shell/app/src/main/cpp/include/osmodule.h +17 -0
  336. pytron/platforms/android/shell/app/src/main/cpp/include/patchlevel.h +49 -0
  337. pytron/platforms/android/shell/app/src/main/cpp/include/py_curses.h +117 -0
  338. pytron/platforms/android/shell/app/src/main/cpp/include/pyatomic.h +16 -0
  339. pytron/platforms/android/shell/app/src/main/cpp/include/pybuffer.h +145 -0
  340. pytron/platforms/android/shell/app/src/main/cpp/include/pycapsule.h +58 -0
  341. pytron/platforms/android/shell/app/src/main/cpp/include/pyconfig.h +2088 -0
  342. pytron/platforms/android/shell/app/src/main/cpp/include/pydtrace.h +59 -0
  343. pytron/platforms/android/shell/app/src/main/cpp/include/pyerrors.h +335 -0
  344. pytron/platforms/android/shell/app/src/main/cpp/include/pyexpat.h +62 -0
  345. pytron/platforms/android/shell/app/src/main/cpp/include/pyframe.h +26 -0
  346. pytron/platforms/android/shell/app/src/main/cpp/include/pyhash.h +59 -0
  347. pytron/platforms/android/shell/app/src/main/cpp/include/pylifecycle.h +80 -0
  348. pytron/platforms/android/shell/app/src/main/cpp/include/pymacconfig.h +91 -0
  349. pytron/platforms/android/shell/app/src/main/cpp/include/pymacro.h +243 -0
  350. pytron/platforms/android/shell/app/src/main/cpp/include/pymath.h +65 -0
  351. pytron/platforms/android/shell/app/src/main/cpp/include/pymem.h +110 -0
  352. pytron/platforms/android/shell/app/src/main/cpp/include/pyport.h +710 -0
  353. pytron/platforms/android/shell/app/src/main/cpp/include/pystate.h +132 -0
  354. pytron/platforms/android/shell/app/src/main/cpp/include/pystats.h +28 -0
  355. pytron/platforms/android/shell/app/src/main/cpp/include/pystrcmp.h +23 -0
  356. pytron/platforms/android/shell/app/src/main/cpp/include/pystrtod.h +37 -0
  357. pytron/platforms/android/shell/app/src/main/cpp/include/pythonrun.h +42 -0
  358. pytron/platforms/android/shell/app/src/main/cpp/include/pythread.h +131 -0
  359. pytron/platforms/android/shell/app/src/main/cpp/include/pytypedefs.h +30 -0
  360. pytron/platforms/android/shell/app/src/main/cpp/include/rangeobject.h +27 -0
  361. pytron/platforms/android/shell/app/src/main/cpp/include/refcount.h +555 -0
  362. pytron/platforms/android/shell/app/src/main/cpp/include/setobject.h +49 -0
  363. pytron/platforms/android/shell/app/src/main/cpp/include/sliceobject.h +69 -0
  364. pytron/platforms/android/shell/app/src/main/cpp/include/structmember.h +56 -0
  365. pytron/platforms/android/shell/app/src/main/cpp/include/structseq.h +46 -0
  366. pytron/platforms/android/shell/app/src/main/cpp/include/sysmodule.h +27 -0
  367. pytron/platforms/android/shell/app/src/main/cpp/include/traceback.h +26 -0
  368. pytron/platforms/android/shell/app/src/main/cpp/include/tupleobject.h +46 -0
  369. pytron/platforms/android/shell/app/src/main/cpp/include/typeslots.h +96 -0
  370. pytron/platforms/android/shell/app/src/main/cpp/include/unicodeobject.h +1029 -0
  371. pytron/platforms/android/shell/app/src/main/cpp/include/warnings.h +45 -0
  372. pytron/platforms/android/shell/app/src/main/cpp/include/weakrefobject.h +46 -0
  373. pytron/platforms/android/shell/app/src/main/cpp/pytron_bridge.cpp +224 -0
  374. pytron/platforms/android/shell/app/src/main/java/com/pytron/shell/MainActivity.kt +208 -0
  375. pytron/platforms/android/shell/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  376. pytron/platforms/android/shell/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  377. pytron/platforms/android/shell/build.gradle +11 -0
  378. pytron/platforms/android/shell/gradle/wrapper/gradle-wrapper.jar +0 -0
  379. pytron/platforms/android/shell/gradle/wrapper/gradle-wrapper.properties +5 -0
  380. pytron/platforms/android/shell/gradle.properties +2 -0
  381. pytron/platforms/android/shell/gradlew.bat +85 -0
  382. pytron/platforms/android/shell/settings.gradle +16 -0
  383. pytron/platforms/darwin.py +82 -0
  384. pytron/platforms/darwin_ops/libs.py +31 -0
  385. pytron/platforms/darwin_ops/system.py +182 -0
  386. pytron/platforms/darwin_ops/utils.py +85 -0
  387. pytron/platforms/darwin_ops/webview.py +5 -0
  388. pytron/platforms/darwin_ops/window.py +102 -0
  389. pytron/platforms/interface.py +152 -0
  390. pytron/platforms/linux.py +82 -0
  391. pytron/platforms/linux_ops/libs.py +49 -0
  392. pytron/platforms/linux_ops/system.py +316 -0
  393. pytron/platforms/linux_ops/utils.py +19 -0
  394. pytron/platforms/linux_ops/webview.py +5 -0
  395. pytron/platforms/linux_ops/window.py +115 -0
  396. pytron/platforms/windows.py +136 -0
  397. pytron/platforms/windows_ops/__init__.py +0 -0
  398. pytron/platforms/windows_ops/constants.py +126 -0
  399. pytron/platforms/windows_ops/system.py +518 -0
  400. pytron/platforms/windows_ops/utils.py +3 -0
  401. pytron/platforms/windows_ops/webview.py +5 -0
  402. pytron/platforms/windows_ops/window.py +361 -0
  403. pytron/plugin.py +467 -0
  404. pytron/rcedit-x64.exe +0 -0
  405. pytron/router.py +146 -0
  406. pytron/serializer.py +240 -0
  407. pytron/shortcuts.py +279 -0
  408. pytron/state.py +76 -0
  409. pytron/tray.py +399 -0
  410. pytron/updater.py +181 -0
  411. pytron/utf8_hook.py +112 -0
  412. pytron/utils.py +44 -0
  413. pytron/webview.py +722 -0
  414. pytron_kit-0.3.12.dist-info/METADATA +131 -0
  415. pytron_kit-0.3.12.dist-info/RECORD +419 -0
  416. pytron_kit-0.3.12.dist-info/WHEEL +5 -0
  417. pytron_kit-0.3.12.dist-info/entry_points.txt +2 -0
  418. pytron_kit-0.3.12.dist-info/licenses/LICENSE +201 -0
  419. pytron_kit-0.3.12.dist-info/top_level.txt +1 -0
@@ -0,0 +1,105 @@
1
+ #ifndef Py_CPYTHON_PTRHEAD_STUBS_H
2
+ #define Py_CPYTHON_PTRHEAD_STUBS_H
3
+
4
+ #if !defined(HAVE_PTHREAD_STUBS)
5
+ # error "this header file requires stubbed pthreads."
6
+ #endif
7
+
8
+ #ifndef _POSIX_THREADS
9
+ # define _POSIX_THREADS 1
10
+ #endif
11
+
12
+ /* Minimal pthread stubs for CPython.
13
+ *
14
+ * The stubs implement the minimum pthread API for CPython.
15
+ * - pthread_create() fails.
16
+ * - pthread_exit() calls exit(0).
17
+ * - pthread_key_*() functions implement minimal TSS without destructor.
18
+ * - all other functions do nothing and return 0.
19
+ */
20
+
21
+ #ifdef __wasi__
22
+ // WASI's bits/alltypes.h provides type definitions when __NEED_ is set.
23
+ // The header file can be included multiple times.
24
+ //
25
+ // <sys/types.h> may also define these macros.
26
+ # ifndef __NEED_pthread_cond_t
27
+ # define __NEED_pthread_cond_t 1
28
+ # endif
29
+ # ifndef __NEED_pthread_condattr_t
30
+ # define __NEED_pthread_condattr_t 1
31
+ # endif
32
+ # ifndef __NEED_pthread_mutex_t
33
+ # define __NEED_pthread_mutex_t 1
34
+ # endif
35
+ # ifndef __NEED_pthread_mutexattr_t
36
+ # define __NEED_pthread_mutexattr_t 1
37
+ # endif
38
+ # ifndef __NEED_pthread_key_t
39
+ # define __NEED_pthread_key_t 1
40
+ # endif
41
+ # ifndef __NEED_pthread_t
42
+ # define __NEED_pthread_t 1
43
+ # endif
44
+ # ifndef __NEED_pthread_attr_t
45
+ # define __NEED_pthread_attr_t 1
46
+ # endif
47
+ # include <bits/alltypes.h>
48
+ #else
49
+ typedef struct { void *__x; } pthread_cond_t;
50
+ typedef struct { unsigned __attr; } pthread_condattr_t;
51
+ typedef struct { void *__x; } pthread_mutex_t;
52
+ typedef struct { unsigned __attr; } pthread_mutexattr_t;
53
+ typedef unsigned pthread_key_t;
54
+ typedef unsigned pthread_t;
55
+ typedef struct { unsigned __attr; } pthread_attr_t;
56
+ #endif
57
+
58
+ // mutex
59
+ PyAPI_FUNC(int) pthread_mutex_init(pthread_mutex_t *restrict mutex,
60
+ const pthread_mutexattr_t *restrict attr);
61
+ PyAPI_FUNC(int) pthread_mutex_destroy(pthread_mutex_t *mutex);
62
+ PyAPI_FUNC(int) pthread_mutex_trylock(pthread_mutex_t *mutex);
63
+ PyAPI_FUNC(int) pthread_mutex_lock(pthread_mutex_t *mutex);
64
+ PyAPI_FUNC(int) pthread_mutex_unlock(pthread_mutex_t *mutex);
65
+
66
+ // condition
67
+ PyAPI_FUNC(int) pthread_cond_init(pthread_cond_t *restrict cond,
68
+ const pthread_condattr_t *restrict attr);
69
+ PyAPI_FUNC(int) pthread_cond_destroy(pthread_cond_t *cond);
70
+ PyAPI_FUNC(int) pthread_cond_wait(pthread_cond_t *restrict cond,
71
+ pthread_mutex_t *restrict mutex);
72
+ PyAPI_FUNC(int) pthread_cond_timedwait(pthread_cond_t *restrict cond,
73
+ pthread_mutex_t *restrict mutex,
74
+ const struct timespec *restrict abstime);
75
+ PyAPI_FUNC(int) pthread_cond_signal(pthread_cond_t *cond);
76
+ PyAPI_FUNC(int) pthread_condattr_init(pthread_condattr_t *attr);
77
+ PyAPI_FUNC(int) pthread_condattr_setclock(
78
+ pthread_condattr_t *attr, clockid_t clock_id);
79
+
80
+ // pthread
81
+ PyAPI_FUNC(int) pthread_create(pthread_t *restrict thread,
82
+ const pthread_attr_t *restrict attr,
83
+ void *(*start_routine)(void *),
84
+ void *restrict arg);
85
+ PyAPI_FUNC(int) pthread_detach(pthread_t thread);
86
+ PyAPI_FUNC(int) pthread_join(pthread_t thread, void** value_ptr);
87
+ PyAPI_FUNC(pthread_t) pthread_self(void);
88
+ PyAPI_FUNC(int) pthread_exit(void *retval) __attribute__ ((__noreturn__));
89
+ PyAPI_FUNC(int) pthread_attr_init(pthread_attr_t *attr);
90
+ PyAPI_FUNC(int) pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
91
+ PyAPI_FUNC(int) pthread_attr_destroy(pthread_attr_t *attr);
92
+
93
+
94
+ // pthread_key
95
+ #ifndef PTHREAD_KEYS_MAX
96
+ # define PTHREAD_KEYS_MAX 128
97
+ #endif
98
+
99
+ PyAPI_FUNC(int) pthread_key_create(pthread_key_t *key,
100
+ void (*destr_function)(void *));
101
+ PyAPI_FUNC(int) pthread_key_delete(pthread_key_t key);
102
+ PyAPI_FUNC(void *) pthread_getspecific(pthread_key_t key);
103
+ PyAPI_FUNC(int) pthread_setspecific(pthread_key_t key, const void *value);
104
+
105
+ #endif // Py_CPYTHON_PTRHEAD_STUBS_H
@@ -0,0 +1,614 @@
1
+ // This header provides cross-platform low-level atomic operations
2
+ // similar to C11 atomics.
3
+ //
4
+ // Operations are sequentially consistent unless they have a suffix indicating
5
+ // otherwise. If in doubt, prefer the sequentially consistent operations.
6
+ //
7
+ // The "_relaxed" suffix for load and store operations indicates the "relaxed"
8
+ // memory order. They don't provide synchronization, but (roughly speaking)
9
+ // guarantee somewhat sane behavior for races instead of undefined behavior.
10
+ // In practice, they correspond to "normal" hardware load and store
11
+ // instructions, so they are almost as inexpensive as plain loads and stores
12
+ // in C.
13
+ //
14
+ // Note that atomic read-modify-write operations like _Py_atomic_add_* return
15
+ // the previous value of the atomic variable, not the new value.
16
+ //
17
+ // See https://en.cppreference.com/w/c/atomic for more information on C11
18
+ // atomics.
19
+ // See https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2055r0.pdf
20
+ // "A Relaxed Guide to memory_order_relaxed" for discussion of and common usage
21
+ // or relaxed atomics.
22
+ //
23
+ // Functions with pseudo Python code:
24
+ //
25
+ // def _Py_atomic_load(obj):
26
+ // return obj # sequential consistency
27
+ //
28
+ // def _Py_atomic_load_relaxed(obj):
29
+ // return obj # relaxed consistency
30
+ //
31
+ // def _Py_atomic_store(obj, value):
32
+ // obj = value # sequential consistency
33
+ //
34
+ // def _Py_atomic_store_relaxed(obj, value):
35
+ // obj = value # relaxed consistency
36
+ //
37
+ // def _Py_atomic_exchange(obj, value):
38
+ // # sequential consistency
39
+ // old_obj = obj
40
+ // obj = value
41
+ // return old_obj
42
+ //
43
+ // def _Py_atomic_compare_exchange(obj, expected, desired):
44
+ // # sequential consistency
45
+ // if obj == expected:
46
+ // obj = desired
47
+ // return True
48
+ // else:
49
+ // expected = obj
50
+ // return False
51
+ //
52
+ // def _Py_atomic_add(obj, value):
53
+ // # sequential consistency
54
+ // old_obj = obj
55
+ // obj += value
56
+ // return old_obj
57
+ //
58
+ // def _Py_atomic_and(obj, value):
59
+ // # sequential consistency
60
+ // old_obj = obj
61
+ // obj &= value
62
+ // return old_obj
63
+ //
64
+ // def _Py_atomic_or(obj, value):
65
+ // # sequential consistency
66
+ // old_obj = obj
67
+ // obj |= value
68
+ // return old_obj
69
+ //
70
+ // Other functions:
71
+ //
72
+ // def _Py_atomic_load_ptr_acquire(obj):
73
+ // return obj # acquire
74
+ //
75
+ // def _Py_atomic_store_ptr_release(obj):
76
+ // return obj # release
77
+ //
78
+ // def _Py_atomic_fence_seq_cst():
79
+ // # sequential consistency
80
+ // ...
81
+ //
82
+ // def _Py_atomic_fence_release():
83
+ // # release
84
+ // ...
85
+
86
+ #ifndef Py_CPYTHON_ATOMIC_H
87
+ # error "this header file must not be included directly"
88
+ #endif
89
+
90
+ // --- _Py_atomic_add --------------------------------------------------------
91
+ // Atomically adds `value` to `obj` and returns the previous value
92
+
93
+ static inline int
94
+ _Py_atomic_add_int(int *obj, int value);
95
+
96
+ static inline int8_t
97
+ _Py_atomic_add_int8(int8_t *obj, int8_t value);
98
+
99
+ static inline int16_t
100
+ _Py_atomic_add_int16(int16_t *obj, int16_t value);
101
+
102
+ static inline int32_t
103
+ _Py_atomic_add_int32(int32_t *obj, int32_t value);
104
+
105
+ static inline int64_t
106
+ _Py_atomic_add_int64(int64_t *obj, int64_t value);
107
+
108
+ static inline intptr_t
109
+ _Py_atomic_add_intptr(intptr_t *obj, intptr_t value);
110
+
111
+ static inline unsigned int
112
+ _Py_atomic_add_uint(unsigned int *obj, unsigned int value);
113
+
114
+ static inline uint8_t
115
+ _Py_atomic_add_uint8(uint8_t *obj, uint8_t value);
116
+
117
+ static inline uint16_t
118
+ _Py_atomic_add_uint16(uint16_t *obj, uint16_t value);
119
+
120
+ static inline uint32_t
121
+ _Py_atomic_add_uint32(uint32_t *obj, uint32_t value);
122
+
123
+ static inline uint64_t
124
+ _Py_atomic_add_uint64(uint64_t *obj, uint64_t value);
125
+
126
+ static inline uintptr_t
127
+ _Py_atomic_add_uintptr(uintptr_t *obj, uintptr_t value);
128
+
129
+ static inline Py_ssize_t
130
+ _Py_atomic_add_ssize(Py_ssize_t *obj, Py_ssize_t value);
131
+
132
+
133
+ // --- _Py_atomic_compare_exchange -------------------------------------------
134
+ // Performs an atomic compare-and-exchange.
135
+ //
136
+ // - If `*obj` and `*expected` are equal, store `desired` into `*obj`
137
+ // and return 1 (success).
138
+ // - Otherwise, store the `*obj` current value into `*expected`
139
+ // and return 0 (failure).
140
+ //
141
+ // These correspond to the C11 atomic_compare_exchange_strong() function.
142
+
143
+ static inline int
144
+ _Py_atomic_compare_exchange_int(int *obj, int *expected, int desired);
145
+
146
+ static inline int
147
+ _Py_atomic_compare_exchange_int8(int8_t *obj, int8_t *expected, int8_t desired);
148
+
149
+ static inline int
150
+ _Py_atomic_compare_exchange_int16(int16_t *obj, int16_t *expected, int16_t desired);
151
+
152
+ static inline int
153
+ _Py_atomic_compare_exchange_int32(int32_t *obj, int32_t *expected, int32_t desired);
154
+
155
+ static inline int
156
+ _Py_atomic_compare_exchange_int64(int64_t *obj, int64_t *expected, int64_t desired);
157
+
158
+ static inline int
159
+ _Py_atomic_compare_exchange_intptr(intptr_t *obj, intptr_t *expected, intptr_t desired);
160
+
161
+ static inline int
162
+ _Py_atomic_compare_exchange_uint(unsigned int *obj, unsigned int *expected, unsigned int desired);
163
+
164
+ static inline int
165
+ _Py_atomic_compare_exchange_uint8(uint8_t *obj, uint8_t *expected, uint8_t desired);
166
+
167
+ static inline int
168
+ _Py_atomic_compare_exchange_uint16(uint16_t *obj, uint16_t *expected, uint16_t desired);
169
+
170
+ static inline int
171
+ _Py_atomic_compare_exchange_uint32(uint32_t *obj, uint32_t *expected, uint32_t desired);
172
+
173
+ static inline int
174
+ _Py_atomic_compare_exchange_uint64(uint64_t *obj, uint64_t *expected, uint64_t desired);
175
+
176
+ static inline int
177
+ _Py_atomic_compare_exchange_uintptr(uintptr_t *obj, uintptr_t *expected, uintptr_t desired);
178
+
179
+ static inline int
180
+ _Py_atomic_compare_exchange_ssize(Py_ssize_t *obj, Py_ssize_t *expected, Py_ssize_t desired);
181
+
182
+ // NOTE: `obj` and `expected` are logically `void**` types, but we use `void*`
183
+ // so that we can pass types like `PyObject**` without a cast.
184
+ static inline int
185
+ _Py_atomic_compare_exchange_ptr(void *obj, void *expected, void *value);
186
+
187
+
188
+ // --- _Py_atomic_exchange ---------------------------------------------------
189
+ // Atomically replaces `*obj` with `value` and returns the previous value of `*obj`.
190
+
191
+ static inline int
192
+ _Py_atomic_exchange_int(int *obj, int value);
193
+
194
+ static inline int8_t
195
+ _Py_atomic_exchange_int8(int8_t *obj, int8_t value);
196
+
197
+ static inline int16_t
198
+ _Py_atomic_exchange_int16(int16_t *obj, int16_t value);
199
+
200
+ static inline int32_t
201
+ _Py_atomic_exchange_int32(int32_t *obj, int32_t value);
202
+
203
+ static inline int64_t
204
+ _Py_atomic_exchange_int64(int64_t *obj, int64_t value);
205
+
206
+ static inline intptr_t
207
+ _Py_atomic_exchange_intptr(intptr_t *obj, intptr_t value);
208
+
209
+ static inline unsigned int
210
+ _Py_atomic_exchange_uint(unsigned int *obj, unsigned int value);
211
+
212
+ static inline uint8_t
213
+ _Py_atomic_exchange_uint8(uint8_t *obj, uint8_t value);
214
+
215
+ static inline uint16_t
216
+ _Py_atomic_exchange_uint16(uint16_t *obj, uint16_t value);
217
+
218
+ static inline uint32_t
219
+ _Py_atomic_exchange_uint32(uint32_t *obj, uint32_t value);
220
+
221
+ static inline uint64_t
222
+ _Py_atomic_exchange_uint64(uint64_t *obj, uint64_t value);
223
+
224
+ static inline uintptr_t
225
+ _Py_atomic_exchange_uintptr(uintptr_t *obj, uintptr_t value);
226
+
227
+ static inline Py_ssize_t
228
+ _Py_atomic_exchange_ssize(Py_ssize_t *obj, Py_ssize_t value);
229
+
230
+ static inline void *
231
+ _Py_atomic_exchange_ptr(void *obj, void *value);
232
+
233
+
234
+ // --- _Py_atomic_and --------------------------------------------------------
235
+ // Performs `*obj &= value` atomically and returns the previous value of `*obj`.
236
+
237
+ static inline uint8_t
238
+ _Py_atomic_and_uint8(uint8_t *obj, uint8_t value);
239
+
240
+ static inline uint16_t
241
+ _Py_atomic_and_uint16(uint16_t *obj, uint16_t value);
242
+
243
+ static inline uint32_t
244
+ _Py_atomic_and_uint32(uint32_t *obj, uint32_t value);
245
+
246
+ static inline uint64_t
247
+ _Py_atomic_and_uint64(uint64_t *obj, uint64_t value);
248
+
249
+ static inline uintptr_t
250
+ _Py_atomic_and_uintptr(uintptr_t *obj, uintptr_t value);
251
+
252
+
253
+ // --- _Py_atomic_or ---------------------------------------------------------
254
+ // Performs `*obj |= value` atomically and returns the previous value of `*obj`.
255
+
256
+ static inline uint8_t
257
+ _Py_atomic_or_uint8(uint8_t *obj, uint8_t value);
258
+
259
+ static inline uint16_t
260
+ _Py_atomic_or_uint16(uint16_t *obj, uint16_t value);
261
+
262
+ static inline uint32_t
263
+ _Py_atomic_or_uint32(uint32_t *obj, uint32_t value);
264
+
265
+ static inline uint64_t
266
+ _Py_atomic_or_uint64(uint64_t *obj, uint64_t value);
267
+
268
+ static inline uintptr_t
269
+ _Py_atomic_or_uintptr(uintptr_t *obj, uintptr_t value);
270
+
271
+
272
+ // --- _Py_atomic_load -------------------------------------------------------
273
+ // Atomically loads `*obj` (sequential consistency)
274
+
275
+ static inline int
276
+ _Py_atomic_load_int(const int *obj);
277
+
278
+ static inline int8_t
279
+ _Py_atomic_load_int8(const int8_t *obj);
280
+
281
+ static inline int16_t
282
+ _Py_atomic_load_int16(const int16_t *obj);
283
+
284
+ static inline int32_t
285
+ _Py_atomic_load_int32(const int32_t *obj);
286
+
287
+ static inline int64_t
288
+ _Py_atomic_load_int64(const int64_t *obj);
289
+
290
+ static inline intptr_t
291
+ _Py_atomic_load_intptr(const intptr_t *obj);
292
+
293
+ static inline uint8_t
294
+ _Py_atomic_load_uint8(const uint8_t *obj);
295
+
296
+ static inline uint16_t
297
+ _Py_atomic_load_uint16(const uint16_t *obj);
298
+
299
+ static inline uint32_t
300
+ _Py_atomic_load_uint32(const uint32_t *obj);
301
+
302
+ static inline uint64_t
303
+ _Py_atomic_load_uint64(const uint64_t *obj);
304
+
305
+ static inline uintptr_t
306
+ _Py_atomic_load_uintptr(const uintptr_t *obj);
307
+
308
+ static inline unsigned int
309
+ _Py_atomic_load_uint(const unsigned int *obj);
310
+
311
+ static inline Py_ssize_t
312
+ _Py_atomic_load_ssize(const Py_ssize_t *obj);
313
+
314
+ static inline void *
315
+ _Py_atomic_load_ptr(const void *obj);
316
+
317
+
318
+ // --- _Py_atomic_load_relaxed -----------------------------------------------
319
+ // Loads `*obj` (relaxed consistency, i.e., no ordering)
320
+
321
+ static inline int
322
+ _Py_atomic_load_int_relaxed(const int *obj);
323
+
324
+ static inline char
325
+ _Py_atomic_load_char_relaxed(const char *obj);
326
+
327
+ static inline unsigned char
328
+ _Py_atomic_load_uchar_relaxed(const unsigned char *obj);
329
+
330
+ static inline short
331
+ _Py_atomic_load_short_relaxed(const short *obj);
332
+
333
+ static inline unsigned short
334
+ _Py_atomic_load_ushort_relaxed(const unsigned short *obj);
335
+
336
+ static inline long
337
+ _Py_atomic_load_long_relaxed(const long *obj);
338
+
339
+ static inline double
340
+ _Py_atomic_load_double_relaxed(const double *obj);
341
+
342
+ static inline long long
343
+ _Py_atomic_load_llong_relaxed(const long long *obj);
344
+
345
+ static inline int8_t
346
+ _Py_atomic_load_int8_relaxed(const int8_t *obj);
347
+
348
+ static inline int16_t
349
+ _Py_atomic_load_int16_relaxed(const int16_t *obj);
350
+
351
+ static inline int32_t
352
+ _Py_atomic_load_int32_relaxed(const int32_t *obj);
353
+
354
+ static inline int64_t
355
+ _Py_atomic_load_int64_relaxed(const int64_t *obj);
356
+
357
+ static inline intptr_t
358
+ _Py_atomic_load_intptr_relaxed(const intptr_t *obj);
359
+
360
+ static inline uint8_t
361
+ _Py_atomic_load_uint8_relaxed(const uint8_t *obj);
362
+
363
+ static inline uint16_t
364
+ _Py_atomic_load_uint16_relaxed(const uint16_t *obj);
365
+
366
+ static inline uint32_t
367
+ _Py_atomic_load_uint32_relaxed(const uint32_t *obj);
368
+
369
+ static inline uint64_t
370
+ _Py_atomic_load_uint64_relaxed(const uint64_t *obj);
371
+
372
+ static inline uintptr_t
373
+ _Py_atomic_load_uintptr_relaxed(const uintptr_t *obj);
374
+
375
+ static inline unsigned int
376
+ _Py_atomic_load_uint_relaxed(const unsigned int *obj);
377
+
378
+ static inline Py_ssize_t
379
+ _Py_atomic_load_ssize_relaxed(const Py_ssize_t *obj);
380
+
381
+ static inline void *
382
+ _Py_atomic_load_ptr_relaxed(const void *obj);
383
+
384
+ static inline unsigned long long
385
+ _Py_atomic_load_ullong_relaxed(const unsigned long long *obj);
386
+
387
+ // --- _Py_atomic_store ------------------------------------------------------
388
+ // Atomically performs `*obj = value` (sequential consistency)
389
+
390
+ static inline void
391
+ _Py_atomic_store_int(int *obj, int value);
392
+
393
+ static inline void
394
+ _Py_atomic_store_int8(int8_t *obj, int8_t value);
395
+
396
+ static inline void
397
+ _Py_atomic_store_int16(int16_t *obj, int16_t value);
398
+
399
+ static inline void
400
+ _Py_atomic_store_int32(int32_t *obj, int32_t value);
401
+
402
+ static inline void
403
+ _Py_atomic_store_int64(int64_t *obj, int64_t value);
404
+
405
+ static inline void
406
+ _Py_atomic_store_intptr(intptr_t *obj, intptr_t value);
407
+
408
+ static inline void
409
+ _Py_atomic_store_uint8(uint8_t *obj, uint8_t value);
410
+
411
+ static inline void
412
+ _Py_atomic_store_uint16(uint16_t *obj, uint16_t value);
413
+
414
+ static inline void
415
+ _Py_atomic_store_uint32(uint32_t *obj, uint32_t value);
416
+
417
+ static inline void
418
+ _Py_atomic_store_uint64(uint64_t *obj, uint64_t value);
419
+
420
+ static inline void
421
+ _Py_atomic_store_uintptr(uintptr_t *obj, uintptr_t value);
422
+
423
+ static inline void
424
+ _Py_atomic_store_uint(unsigned int *obj, unsigned int value);
425
+
426
+ static inline void
427
+ _Py_atomic_store_ptr(void *obj, void *value);
428
+
429
+ static inline void
430
+ _Py_atomic_store_ssize(Py_ssize_t* obj, Py_ssize_t value);
431
+
432
+
433
+ // --- _Py_atomic_store_relaxed ----------------------------------------------
434
+ // Stores `*obj = value` (relaxed consistency, i.e., no ordering)
435
+
436
+ static inline void
437
+ _Py_atomic_store_int_relaxed(int *obj, int value);
438
+
439
+ static inline void
440
+ _Py_atomic_store_int8_relaxed(int8_t *obj, int8_t value);
441
+
442
+ static inline void
443
+ _Py_atomic_store_int16_relaxed(int16_t *obj, int16_t value);
444
+
445
+ static inline void
446
+ _Py_atomic_store_int32_relaxed(int32_t *obj, int32_t value);
447
+
448
+ static inline void
449
+ _Py_atomic_store_int64_relaxed(int64_t *obj, int64_t value);
450
+
451
+ static inline void
452
+ _Py_atomic_store_intptr_relaxed(intptr_t *obj, intptr_t value);
453
+
454
+ static inline void
455
+ _Py_atomic_store_uint8_relaxed(uint8_t* obj, uint8_t value);
456
+
457
+ static inline void
458
+ _Py_atomic_store_uint16_relaxed(uint16_t *obj, uint16_t value);
459
+
460
+ static inline void
461
+ _Py_atomic_store_uint32_relaxed(uint32_t *obj, uint32_t value);
462
+
463
+ static inline void
464
+ _Py_atomic_store_uint64_relaxed(uint64_t *obj, uint64_t value);
465
+
466
+ static inline void
467
+ _Py_atomic_store_uintptr_relaxed(uintptr_t *obj, uintptr_t value);
468
+
469
+ static inline void
470
+ _Py_atomic_store_uint_relaxed(unsigned int *obj, unsigned int value);
471
+
472
+ static inline void
473
+ _Py_atomic_store_ptr_relaxed(void *obj, void *value);
474
+
475
+ static inline void
476
+ _Py_atomic_store_ssize_relaxed(Py_ssize_t *obj, Py_ssize_t value);
477
+
478
+ static inline void
479
+ _Py_atomic_store_ullong_relaxed(unsigned long long *obj,
480
+ unsigned long long value);
481
+
482
+ static inline void
483
+ _Py_atomic_store_char_relaxed(char *obj, char value);
484
+
485
+ static inline void
486
+ _Py_atomic_store_uchar_relaxed(unsigned char *obj, unsigned char value);
487
+
488
+ static inline void
489
+ _Py_atomic_store_short_relaxed(short *obj, short value);
490
+
491
+ static inline void
492
+ _Py_atomic_store_ushort_relaxed(unsigned short *obj, unsigned short value);
493
+
494
+ static inline void
495
+ _Py_atomic_store_long_relaxed(long *obj, long value);
496
+
497
+ static inline void
498
+ _Py_atomic_store_float_relaxed(float *obj, float value);
499
+
500
+ static inline void
501
+ _Py_atomic_store_double_relaxed(double *obj, double value);
502
+
503
+ static inline void
504
+ _Py_atomic_store_llong_relaxed(long long *obj, long long value);
505
+
506
+
507
+ // --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
508
+
509
+ // Loads `*obj` (acquire operation)
510
+ static inline void *
511
+ _Py_atomic_load_ptr_acquire(const void *obj);
512
+
513
+ static inline uintptr_t
514
+ _Py_atomic_load_uintptr_acquire(const uintptr_t *obj);
515
+
516
+ // Stores `*obj = value` (release operation)
517
+ static inline void
518
+ _Py_atomic_store_ptr_release(void *obj, void *value);
519
+
520
+ static inline void
521
+ _Py_atomic_store_uintptr_release(uintptr_t *obj, uintptr_t value);
522
+
523
+ static inline void
524
+ _Py_atomic_store_ssize_release(Py_ssize_t *obj, Py_ssize_t value);
525
+
526
+ static inline void
527
+ _Py_atomic_store_int_release(int *obj, int value);
528
+
529
+ static inline int
530
+ _Py_atomic_load_int_acquire(const int *obj);
531
+
532
+ static inline void
533
+ _Py_atomic_store_uint32_release(uint32_t *obj, uint32_t value);
534
+
535
+ static inline void
536
+ _Py_atomic_store_uint64_release(uint64_t *obj, uint64_t value);
537
+
538
+ static inline uint64_t
539
+ _Py_atomic_load_uint64_acquire(const uint64_t *obj);
540
+
541
+ static inline uint32_t
542
+ _Py_atomic_load_uint32_acquire(const uint32_t *obj);
543
+
544
+ static inline Py_ssize_t
545
+ _Py_atomic_load_ssize_acquire(const Py_ssize_t *obj);
546
+
547
+
548
+
549
+
550
+ // --- _Py_atomic_fence ------------------------------------------------------
551
+
552
+ // Sequential consistency fence. C11 fences have complex semantics. When
553
+ // possible, use the atomic operations on variables defined above, which
554
+ // generally do not require explicit use of a fence.
555
+ // See https://en.cppreference.com/w/cpp/atomic/atomic_thread_fence
556
+ static inline void _Py_atomic_fence_seq_cst(void);
557
+
558
+ // Acquire fence
559
+ static inline void _Py_atomic_fence_acquire(void);
560
+
561
+ // Release fence
562
+ static inline void _Py_atomic_fence_release(void);
563
+
564
+
565
+ #ifndef _Py_USE_GCC_BUILTIN_ATOMICS
566
+ # if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))
567
+ # define _Py_USE_GCC_BUILTIN_ATOMICS 1
568
+ # elif defined(__clang__)
569
+ # if __has_builtin(__atomic_load)
570
+ # define _Py_USE_GCC_BUILTIN_ATOMICS 1
571
+ # endif
572
+ # endif
573
+ #endif
574
+
575
+ #if _Py_USE_GCC_BUILTIN_ATOMICS
576
+ # define Py_ATOMIC_GCC_H
577
+ # include "pyatomic_gcc.h"
578
+ # undef Py_ATOMIC_GCC_H
579
+ #elif __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)
580
+ # define Py_ATOMIC_STD_H
581
+ # include "pyatomic_std.h"
582
+ # undef Py_ATOMIC_STD_H
583
+ #elif defined(_MSC_VER)
584
+ # define Py_ATOMIC_MSC_H
585
+ # include "pyatomic_msc.h"
586
+ # undef Py_ATOMIC_MSC_H
587
+ #else
588
+ # error "no available pyatomic implementation for this platform/compiler"
589
+ #endif
590
+
591
+
592
+ // --- aliases ---------------------------------------------------------------
593
+
594
+ #if SIZEOF_LONG == 8
595
+ # define _Py_atomic_load_ulong(p) \
596
+ _Py_atomic_load_uint64((uint64_t *)p)
597
+ # define _Py_atomic_load_ulong_relaxed(p) \
598
+ _Py_atomic_load_uint64_relaxed((uint64_t *)p)
599
+ # define _Py_atomic_store_ulong(p, v) \
600
+ _Py_atomic_store_uint64((uint64_t *)p, v)
601
+ # define _Py_atomic_store_ulong_relaxed(p, v) \
602
+ _Py_atomic_store_uint64_relaxed((uint64_t *)p, v)
603
+ #elif SIZEOF_LONG == 4
604
+ # define _Py_atomic_load_ulong(p) \
605
+ _Py_atomic_load_uint32((uint32_t *)p)
606
+ # define _Py_atomic_load_ulong_relaxed(p) \
607
+ _Py_atomic_load_uint32_relaxed((uint32_t *)p)
608
+ # define _Py_atomic_store_ulong(p, v) \
609
+ _Py_atomic_store_uint32((uint32_t *)p, v)
610
+ # define _Py_atomic_store_ulong_relaxed(p, v) \
611
+ _Py_atomic_store_uint32_relaxed((uint32_t *)p, v)
612
+ #else
613
+ # error "long must be 4 or 8 bytes in size"
614
+ #endif // SIZEOF_LONG