Nuitka-winsvc 2.7.7__cp313-cp313-win_amd64.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.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (995) hide show
  1. nuitka/Builtins.py +259 -0
  2. nuitka/BytecodeCaching.py +184 -0
  3. nuitka/Bytecodes.py +109 -0
  4. nuitka/CacheCleanup.py +54 -0
  5. nuitka/Constants.py +425 -0
  6. nuitka/Errors.py +93 -0
  7. nuitka/HardImportRegistry.py +408 -0
  8. nuitka/MainControl.py +1201 -0
  9. nuitka/ModuleRegistry.py +364 -0
  10. nuitka/OptionParsing.py +2473 -0
  11. nuitka/Options.py +2948 -0
  12. nuitka/OutputDirectories.py +201 -0
  13. nuitka/PostProcessing.py +551 -0
  14. nuitka/Progress.py +252 -0
  15. nuitka/PythonFlavors.py +426 -0
  16. nuitka/PythonOperators.py +146 -0
  17. nuitka/PythonVersions.py +513 -0
  18. nuitka/Serialization.py +291 -0
  19. nuitka/SourceCodeReferences.py +176 -0
  20. nuitka/Tracing.py +579 -0
  21. nuitka/TreeXML.py +141 -0
  22. nuitka/Variables.py +515 -0
  23. nuitka/Version.py +88 -0
  24. nuitka/__init__.py +19 -0
  25. nuitka/__main__.py +224 -0
  26. nuitka/__past__.py +217 -0
  27. nuitka/build/Backend.scons +1111 -0
  28. nuitka/build/CCompilerVersion.scons +281 -0
  29. nuitka/build/DataComposerInterface.py +116 -0
  30. nuitka/build/Offsets.scons +626 -0
  31. nuitka/build/Onefile.scons +564 -0
  32. nuitka/build/SconsCaching.py +451 -0
  33. nuitka/build/SconsCompilerSettings.py +1133 -0
  34. nuitka/build/SconsHacks.py +215 -0
  35. nuitka/build/SconsInterface.py +664 -0
  36. nuitka/build/SconsProgress.py +100 -0
  37. nuitka/build/SconsSpawn.py +436 -0
  38. nuitka/build/SconsUtils.py +939 -0
  39. nuitka/build/__init__.py +19 -0
  40. nuitka/build/include/nuitka/allocator.h +450 -0
  41. nuitka/build/include/nuitka/builtins.h +97 -0
  42. nuitka/build/include/nuitka/calling.h +123 -0
  43. nuitka/build/include/nuitka/checkers.h +39 -0
  44. nuitka/build/include/nuitka/checksum_tools.h +28 -0
  45. nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
  46. nuitka/build/include/nuitka/compiled_cell.h +64 -0
  47. nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
  48. nuitka/build/include/nuitka/compiled_frame.h +502 -0
  49. nuitka/build/include/nuitka/compiled_function.h +170 -0
  50. nuitka/build/include/nuitka/compiled_generator.h +287 -0
  51. nuitka/build/include/nuitka/compiled_method.h +54 -0
  52. nuitka/build/include/nuitka/constants.h +251 -0
  53. nuitka/build/include/nuitka/constants_blob.h +34 -0
  54. nuitka/build/include/nuitka/debug_settings.h +60 -0
  55. nuitka/build/include/nuitka/environment_variables.h +30 -0
  56. nuitka/build/include/nuitka/environment_variables_system.h +51 -0
  57. nuitka/build/include/nuitka/exception_groups.h +167 -0
  58. nuitka/build/include/nuitka/exceptions.h +1458 -0
  59. nuitka/build/include/nuitka/filesystem_paths.h +117 -0
  60. nuitka/build/include/nuitka/freelists.h +92 -0
  61. nuitka/build/include/nuitka/hedley.h +1774 -0
  62. nuitka/build/include/nuitka/helper/attributes.h +90 -0
  63. nuitka/build/include/nuitka/helper/boolean.h +86 -0
  64. nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
  65. nuitka/build/include/nuitka/helper/bytes.h +28 -0
  66. nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
  67. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  68. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  69. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  70. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
  74. nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
  75. nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
  76. nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
  77. nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
  78. nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
  79. nuitka/build/include/nuitka/helper/complex.h +46 -0
  80. nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
  81. nuitka/build/include/nuitka/helper/floats.h +32 -0
  82. nuitka/build/include/nuitka/helper/import_hard.h +121 -0
  83. nuitka/build/include/nuitka/helper/indexes.h +47 -0
  84. nuitka/build/include/nuitka/helper/ints.h +165 -0
  85. nuitka/build/include/nuitka/helper/iterators.h +376 -0
  86. nuitka/build/include/nuitka/helper/lists.h +94 -0
  87. nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
  88. nuitka/build/include/nuitka/helper/mappings.h +39 -0
  89. nuitka/build/include/nuitka/helper/operations.h +114 -0
  90. nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
  91. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
  92. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
  93. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
  94. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
  95. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  96. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
  97. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
  98. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
  100. nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
  101. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
  102. nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
  103. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
  104. nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
  105. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
  106. nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
  107. nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
  108. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
  109. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
  110. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
  111. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
  112. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
  113. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
  114. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
  115. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
  116. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
  117. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
  118. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
  119. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
  120. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
  121. nuitka/build/include/nuitka/helper/raising.h +114 -0
  122. nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
  123. nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
  124. nuitka/build/include/nuitka/helper/sequences.h +33 -0
  125. nuitka/build/include/nuitka/helper/sets.h +25 -0
  126. nuitka/build/include/nuitka/helper/slices.h +314 -0
  127. nuitka/build/include/nuitka/helper/strings.h +30 -0
  128. nuitka/build/include/nuitka/helper/subscripts.h +390 -0
  129. nuitka/build/include/nuitka/helper/tuples.h +187 -0
  130. nuitka/build/include/nuitka/helpers.h +417 -0
  131. nuitka/build/include/nuitka/importing.h +149 -0
  132. nuitka/build/include/nuitka/incbin.h +402 -0
  133. nuitka/build/include/nuitka/jit_sources.h +25 -0
  134. nuitka/build/include/nuitka/prelude.h +626 -0
  135. nuitka/build/include/nuitka/printing.h +84 -0
  136. nuitka/build/include/nuitka/python_pgo.h +57 -0
  137. nuitka/build/include/nuitka/safe_string_ops.h +57 -0
  138. nuitka/build/include/nuitka/threading.h +142 -0
  139. nuitka/build/include/nuitka/tracing.h +82 -0
  140. nuitka/build/include/nuitka/type_aliases.h +30 -0
  141. nuitka/build/include/nuitka/unfreezing.h +91 -0
  142. nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
  143. nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
  144. nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
  145. nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
  146. nuitka/build/inline_copy/bin/scons.py +58 -0
  147. nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
  148. nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
  149. nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
  150. nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
  151. nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
  152. nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
  153. nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
  154. nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
  155. nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
  156. nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
  157. nuitka/build/inline_copy/glob2/LICENSE +27 -0
  158. nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
  159. nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
  160. nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
  161. nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
  162. nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
  163. nuitka/build/inline_copy/jinja2/README.rst +2 -0
  164. nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
  165. nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
  166. nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
  167. nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
  168. nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
  169. nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
  170. nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
  171. nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
  172. nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
  173. nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
  174. nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
  175. nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
  176. nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
  177. nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
  178. nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
  179. nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
  180. nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
  181. nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
  182. nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
  183. nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
  184. nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
  185. nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
  186. nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
  187. nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
  188. nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
  189. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
  190. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
  191. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
  192. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
  193. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
  194. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
  195. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
  196. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
  197. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
  198. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
  199. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
  200. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
  201. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
  202. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
  203. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
  204. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
  205. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
  206. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
  207. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
  208. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
  209. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
  210. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
  211. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
  212. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
  213. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
  214. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
  215. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
  216. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
  217. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
  218. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
  219. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
  220. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
  221. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
  222. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
  223. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
  224. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
  225. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
  226. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
  227. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
  228. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
  229. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
  230. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
  231. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
  232. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
  233. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
  234. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
  235. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
  236. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
  237. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
  238. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
  239. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
  240. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
  241. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
  242. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
  243. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
  244. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
  245. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
  246. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
  247. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
  248. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
  249. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
  250. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
  251. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
  252. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
  253. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
  254. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
  255. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
  256. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
  257. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
  258. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
  259. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
  260. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
  261. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
  262. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
  263. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
  264. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
  265. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
  266. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
  267. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
  268. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
  269. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
  270. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
  271. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
  272. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
  273. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
  274. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
  275. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
  276. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
  277. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
  278. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
  279. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
  280. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
  281. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
  282. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
  283. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
  284. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
  285. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
  286. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
  287. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
  288. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
  289. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
  290. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
  291. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
  292. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
  293. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
  294. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
  295. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
  296. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
  297. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
  298. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
  299. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
  300. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
  301. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
  302. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
  303. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
  304. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
  305. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
  306. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
  307. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
  308. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
  309. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
  310. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
  311. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
  312. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
  313. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
  314. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
  315. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
  316. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
  317. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
  318. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
  319. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
  320. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
  321. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
  322. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
  323. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
  324. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
  325. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
  326. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
  327. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
  328. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
  329. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
  330. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
  331. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
  332. nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
  333. nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
  334. nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
  335. nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
  336. nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
  337. nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
  338. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  339. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  340. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  341. nuitka/build/inline_copy/pefile/pefile.py +8034 -0
  342. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
  343. nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
  344. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  345. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  346. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  347. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  348. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  349. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  350. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  351. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  352. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  353. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  354. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  355. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  356. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  357. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  358. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  359. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  360. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  361. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  362. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  363. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  364. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  365. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  366. nuitka/build/inline_copy/stubgen/six.py +998 -0
  367. nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
  368. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
  369. nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
  370. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
  371. nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
  372. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
  373. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
  374. nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
  375. nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
  376. nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
  377. nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
  378. nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
  379. nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
  380. nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
  381. nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
  382. nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
  383. nuitka/build/inline_copy/yaml/LICENSE +20 -0
  384. nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
  385. nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
  386. nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
  387. nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
  388. nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
  389. nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
  390. nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
  391. nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
  392. nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
  393. nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
  394. nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
  395. nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
  396. nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
  397. nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
  398. nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
  399. nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
  400. nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
  401. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  402. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  403. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  404. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  405. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  406. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  407. nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
  408. nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
  409. nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
  410. nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
  411. nuitka/build/inline_copy/zstd/common/debug.h +107 -0
  412. nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
  413. nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
  414. nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
  415. nuitka/build/inline_copy/zstd/common/fse.h +715 -0
  416. nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
  417. nuitka/build/inline_copy/zstd/common/huf.h +361 -0
  418. nuitka/build/inline_copy/zstd/common/mem.h +426 -0
  419. nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
  420. nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
  421. nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
  422. nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
  423. nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
  424. nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
  425. nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
  426. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
  427. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
  428. nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
  429. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
  430. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
  431. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
  432. nuitka/build/inline_copy/zstd/zstd.h +2391 -0
  433. nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
  434. nuitka/build/static_src/CompiledCellType.c +300 -0
  435. nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
  436. nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
  437. nuitka/build/static_src/CompiledFrameType.c +1337 -0
  438. nuitka/build/static_src/CompiledFunctionType.c +3320 -0
  439. nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
  440. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
  441. nuitka/build/static_src/CompiledMethodType.c +614 -0
  442. nuitka/build/static_src/GenerateHeadersMain.c +30 -0
  443. nuitka/build/static_src/HelpersAllocator.c +939 -0
  444. nuitka/build/static_src/HelpersAttributes.c +1241 -0
  445. nuitka/build/static_src/HelpersBuiltin.c +901 -0
  446. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
  447. nuitka/build/static_src/HelpersBytes.c +107 -0
  448. nuitka/build/static_src/HelpersCalling.c +397 -0
  449. nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
  450. nuitka/build/static_src/HelpersChecksumTools.c +59 -0
  451. nuitka/build/static_src/HelpersClasses.c +91 -0
  452. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  453. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  454. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  455. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  456. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  457. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  458. nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
  459. nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
  460. nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
  461. nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
  462. nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
  463. nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
  464. nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
  465. nuitka/build/static_src/HelpersConsole.c +124 -0
  466. nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
  467. nuitka/build/static_src/HelpersDeepcopy.c +636 -0
  468. nuitka/build/static_src/HelpersDictionaries.c +1739 -0
  469. nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
  470. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  471. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  472. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
  473. nuitka/build/static_src/HelpersExceptions.c +298 -0
  474. nuitka/build/static_src/HelpersFiles.c +353 -0
  475. nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
  476. nuitka/build/static_src/HelpersFloats.c +92 -0
  477. nuitka/build/static_src/HelpersHeapStorage.c +68 -0
  478. nuitka/build/static_src/HelpersImport.c +506 -0
  479. nuitka/build/static_src/HelpersImportHard.c +526 -0
  480. nuitka/build/static_src/HelpersJitSources.c +48 -0
  481. nuitka/build/static_src/HelpersLists.c +899 -0
  482. nuitka/build/static_src/HelpersListsGenerated.c +564 -0
  483. nuitka/build/static_src/HelpersMappings.c +46 -0
  484. nuitka/build/static_src/HelpersMatching.c +192 -0
  485. nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
  486. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
  487. nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
  488. nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
  489. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
  490. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
  491. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
  492. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  493. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
  494. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
  495. nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
  496. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
  497. nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
  498. nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
  499. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
  500. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
  501. nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
  502. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
  503. nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
  504. nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
  505. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
  506. nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
  507. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
  508. nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
  509. nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
  510. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
  511. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
  512. nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
  513. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
  514. nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
  515. nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
  516. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
  517. nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
  518. nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
  519. nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
  520. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
  521. nuitka/build/static_src/HelpersProfiling.c +104 -0
  522. nuitka/build/static_src/HelpersPythonPgo.c +113 -0
  523. nuitka/build/static_src/HelpersRaising.c +447 -0
  524. nuitka/build/static_src/HelpersSafeStrings.c +185 -0
  525. nuitka/build/static_src/HelpersSequences.c +134 -0
  526. nuitka/build/static_src/HelpersSlices.c +73 -0
  527. nuitka/build/static_src/HelpersStrings.c +998 -0
  528. nuitka/build/static_src/HelpersTuples.c +148 -0
  529. nuitka/build/static_src/HelpersTypes.c +329 -0
  530. nuitka/build/static_src/InspectPatcher.c +439 -0
  531. nuitka/build/static_src/MainProgram.c +2060 -0
  532. nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
  533. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
  534. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
  535. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
  536. nuitka/build/static_src/OnefileBootstrap.c +1580 -0
  537. nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
  538. nuitka/code_generation/AsyncgenCodes.py +186 -0
  539. nuitka/code_generation/AttributeCodes.py +357 -0
  540. nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
  541. nuitka/code_generation/BranchCodes.py +67 -0
  542. nuitka/code_generation/BuiltinCodes.py +529 -0
  543. nuitka/code_generation/CallCodes.py +1186 -0
  544. nuitka/code_generation/ClassCodes.py +156 -0
  545. nuitka/code_generation/CodeGeneration.py +1078 -0
  546. nuitka/code_generation/CodeHelperSelection.py +81 -0
  547. nuitka/code_generation/CodeHelpers.py +455 -0
  548. nuitka/code_generation/CodeObjectCodes.py +165 -0
  549. nuitka/code_generation/ComparisonCodes.py +569 -0
  550. nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
  551. nuitka/code_generation/ConditionalCodes.py +236 -0
  552. nuitka/code_generation/ConstantCodes.py +243 -0
  553. nuitka/code_generation/Contexts.py +1248 -0
  554. nuitka/code_generation/CoroutineCodes.py +253 -0
  555. nuitka/code_generation/CtypesCodes.py +46 -0
  556. nuitka/code_generation/DictCodes.py +918 -0
  557. nuitka/code_generation/Emission.py +75 -0
  558. nuitka/code_generation/ErrorCodes.py +281 -0
  559. nuitka/code_generation/EvalCodes.py +444 -0
  560. nuitka/code_generation/ExceptionCodes.py +337 -0
  561. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
  562. nuitka/code_generation/ExpressionCodes.py +61 -0
  563. nuitka/code_generation/FrameCodes.py +518 -0
  564. nuitka/code_generation/FunctionCodes.py +858 -0
  565. nuitka/code_generation/GeneratorCodes.py +218 -0
  566. nuitka/code_generation/GlobalConstants.py +249 -0
  567. nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
  568. nuitka/code_generation/IdCodes.py +53 -0
  569. nuitka/code_generation/ImportCodes.py +468 -0
  570. nuitka/code_generation/Indentation.py +45 -0
  571. nuitka/code_generation/IndexCodes.py +50 -0
  572. nuitka/code_generation/InjectCCodes.py +28 -0
  573. nuitka/code_generation/IntegerCodes.py +110 -0
  574. nuitka/code_generation/IteratorCodes.py +378 -0
  575. nuitka/code_generation/JitCodes.py +44 -0
  576. nuitka/code_generation/LabelCodes.py +68 -0
  577. nuitka/code_generation/LineNumberCodes.py +91 -0
  578. nuitka/code_generation/ListCodes.py +502 -0
  579. nuitka/code_generation/LoaderCodes.py +193 -0
  580. nuitka/code_generation/LocalsDictCodes.py +359 -0
  581. nuitka/code_generation/LoopCodes.py +88 -0
  582. nuitka/code_generation/MatchCodes.py +67 -0
  583. nuitka/code_generation/ModuleCodes.py +247 -0
  584. nuitka/code_generation/Namify.py +260 -0
  585. nuitka/code_generation/NetworkxCodes.py +51 -0
  586. nuitka/code_generation/OperationCodes.py +398 -0
  587. nuitka/code_generation/PackageResourceCodes.py +986 -0
  588. nuitka/code_generation/PrintCodes.py +93 -0
  589. nuitka/code_generation/PythonAPICodes.py +215 -0
  590. nuitka/code_generation/RaisingCodes.py +481 -0
  591. nuitka/code_generation/Reports.py +115 -0
  592. nuitka/code_generation/ReturnCodes.py +143 -0
  593. nuitka/code_generation/SetCodes.py +196 -0
  594. nuitka/code_generation/SliceCodes.py +465 -0
  595. nuitka/code_generation/StringCodes.py +303 -0
  596. nuitka/code_generation/SubscriptCodes.py +263 -0
  597. nuitka/code_generation/TensorflowCodes.py +54 -0
  598. nuitka/code_generation/TryCodes.py +326 -0
  599. nuitka/code_generation/TupleCodes.py +115 -0
  600. nuitka/code_generation/TypeAliasCodes.py +120 -0
  601. nuitka/code_generation/VariableCodes.py +519 -0
  602. nuitka/code_generation/VariableDeclarations.py +279 -0
  603. nuitka/code_generation/YieldCodes.py +253 -0
  604. nuitka/code_generation/__init__.py +19 -0
  605. nuitka/code_generation/c_types/CTypeBases.py +177 -0
  606. nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
  607. nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
  608. nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
  609. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
  610. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
  611. nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
  612. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
  613. nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
  614. nuitka/code_generation/c_types/CTypeVoids.py +92 -0
  615. nuitka/code_generation/c_types/__init__.py +19 -0
  616. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
  617. nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
  618. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
  619. nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
  620. nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
  621. nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
  622. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
  623. nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
  624. nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
  625. nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
  626. nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
  627. nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
  628. nuitka/code_generation/templates/__init__.py +19 -0
  629. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
  630. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
  631. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
  632. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
  633. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
  634. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
  635. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
  636. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
  637. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
  638. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
  639. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
  640. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
  641. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  642. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
  643. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
  644. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  645. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
  646. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
  647. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
  648. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
  649. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
  650. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
  651. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
  652. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
  653. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
  654. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
  655. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
  656. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
  657. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
  658. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
  659. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
  660. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
  661. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
  662. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
  663. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
  664. nuitka/containers/Namedtuples.py +51 -0
  665. nuitka/containers/OrderedDicts.py +191 -0
  666. nuitka/containers/OrderedSets.py +123 -0
  667. nuitka/containers/OrderedSetsFallback.py +139 -0
  668. nuitka/containers/__init__.py +19 -0
  669. nuitka/distutils/Build.py +76 -0
  670. nuitka/distutils/DistutilCommands.py +438 -0
  671. nuitka/distutils/__init__.py +19 -0
  672. nuitka/finalizations/Finalization.py +35 -0
  673. nuitka/finalizations/FinalizeMarkups.py +136 -0
  674. nuitka/finalizations/__init__.py +19 -0
  675. nuitka/freezer/DependsExe.py +257 -0
  676. nuitka/freezer/DllDependenciesCommon.py +97 -0
  677. nuitka/freezer/DllDependenciesMacOS.py +444 -0
  678. nuitka/freezer/DllDependenciesPosix.py +242 -0
  679. nuitka/freezer/DllDependenciesWin32.py +315 -0
  680. nuitka/freezer/ImportDetection.py +359 -0
  681. nuitka/freezer/IncludedDataFiles.py +689 -0
  682. nuitka/freezer/IncludedEntryPoints.py +376 -0
  683. nuitka/freezer/Onefile.py +296 -0
  684. nuitka/freezer/Standalone.py +520 -0
  685. nuitka/freezer/__init__.py +19 -0
  686. nuitka/importing/IgnoreListing.py +449 -0
  687. nuitka/importing/ImportCache.py +95 -0
  688. nuitka/importing/ImportResolving.py +186 -0
  689. nuitka/importing/Importing.py +1200 -0
  690. nuitka/importing/PreloadedPackages.py +164 -0
  691. nuitka/importing/Recursion.py +611 -0
  692. nuitka/importing/StandardLibrary.py +429 -0
  693. nuitka/importing/__init__.py +19 -0
  694. nuitka/nodes/AsyncgenNodes.py +107 -0
  695. nuitka/nodes/AttributeLookupNodes.py +124 -0
  696. nuitka/nodes/AttributeNodes.py +386 -0
  697. nuitka/nodes/AttributeNodesGenerated.py +10734 -0
  698. nuitka/nodes/BuiltinAllNodes.py +115 -0
  699. nuitka/nodes/BuiltinAnyNodes.py +124 -0
  700. nuitka/nodes/BuiltinComplexNodes.py +83 -0
  701. nuitka/nodes/BuiltinDecodingNodes.py +52 -0
  702. nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
  703. nuitka/nodes/BuiltinDictNodes.py +140 -0
  704. nuitka/nodes/BuiltinFormatNodes.py +159 -0
  705. nuitka/nodes/BuiltinHashNodes.py +63 -0
  706. nuitka/nodes/BuiltinInputNodes.py +39 -0
  707. nuitka/nodes/BuiltinIntegerNodes.py +170 -0
  708. nuitka/nodes/BuiltinIteratorNodes.py +391 -0
  709. nuitka/nodes/BuiltinLenNodes.py +61 -0
  710. nuitka/nodes/BuiltinNextNodes.py +111 -0
  711. nuitka/nodes/BuiltinOpenNodes.py +148 -0
  712. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
  713. nuitka/nodes/BuiltinRangeNodes.py +690 -0
  714. nuitka/nodes/BuiltinRefNodes.py +314 -0
  715. nuitka/nodes/BuiltinSumNodes.py +104 -0
  716. nuitka/nodes/BuiltinTypeNodes.py +454 -0
  717. nuitka/nodes/BuiltinVarsNodes.py +44 -0
  718. nuitka/nodes/BytesNodes.py +829 -0
  719. nuitka/nodes/CallNodes.py +217 -0
  720. nuitka/nodes/Checkers.py +55 -0
  721. nuitka/nodes/ChildrenHavingMixins.py +21576 -0
  722. nuitka/nodes/ClassNodes.py +286 -0
  723. nuitka/nodes/CodeObjectSpecs.py +230 -0
  724. nuitka/nodes/ComparisonNodes.py +687 -0
  725. nuitka/nodes/ConditionalNodes.py +884 -0
  726. nuitka/nodes/ConstantRefNodes.py +1717 -0
  727. nuitka/nodes/ContainerMakingNodes.py +408 -0
  728. nuitka/nodes/ContainerOperationNodes.py +87 -0
  729. nuitka/nodes/CoroutineNodes.py +144 -0
  730. nuitka/nodes/CtypesNodes.py +51 -0
  731. nuitka/nodes/DictionaryNodes.py +1513 -0
  732. nuitka/nodes/ExceptionNodes.py +393 -0
  733. nuitka/nodes/ExecEvalNodes.py +229 -0
  734. nuitka/nodes/ExpressionBases.py +1301 -0
  735. nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
  736. nuitka/nodes/ExpressionShapeMixins.py +886 -0
  737. nuitka/nodes/FrameNodes.py +413 -0
  738. nuitka/nodes/FunctionAttributeNodes.py +102 -0
  739. nuitka/nodes/FunctionNodes.py +1303 -0
  740. nuitka/nodes/FutureSpecs.py +224 -0
  741. nuitka/nodes/GeneratorNodes.py +201 -0
  742. nuitka/nodes/GlobalsLocalsNodes.py +209 -0
  743. nuitka/nodes/HardImportNodesGenerated.py +3599 -0
  744. nuitka/nodes/ImportHardNodes.py +185 -0
  745. nuitka/nodes/ImportNodes.py +1366 -0
  746. nuitka/nodes/IndicatorMixins.py +79 -0
  747. nuitka/nodes/InjectCNodes.py +51 -0
  748. nuitka/nodes/IterationHandles.py +407 -0
  749. nuitka/nodes/KeyValuePairNodes.py +378 -0
  750. nuitka/nodes/ListOperationNodes.py +525 -0
  751. nuitka/nodes/LocalsDictNodes.py +717 -0
  752. nuitka/nodes/LocalsScopes.py +505 -0
  753. nuitka/nodes/LoopNodes.py +445 -0
  754. nuitka/nodes/MatchNodes.py +60 -0
  755. nuitka/nodes/ModuleAttributeNodes.py +180 -0
  756. nuitka/nodes/ModuleNodes.py +1137 -0
  757. nuitka/nodes/NetworkxNodes.py +45 -0
  758. nuitka/nodes/NodeBases.py +890 -0
  759. nuitka/nodes/NodeMakingHelpers.py +481 -0
  760. nuitka/nodes/NodeMetaClasses.py +172 -0
  761. nuitka/nodes/OperatorNodes.py +944 -0
  762. nuitka/nodes/OperatorNodesUnary.py +403 -0
  763. nuitka/nodes/OsSysNodes.py +215 -0
  764. nuitka/nodes/OutlineNodes.py +372 -0
  765. nuitka/nodes/PackageMetadataNodes.py +982 -0
  766. nuitka/nodes/PackageResourceNodes.py +424 -0
  767. nuitka/nodes/PrintNodes.py +105 -0
  768. nuitka/nodes/ReturnNodes.py +255 -0
  769. nuitka/nodes/SideEffectNodes.py +139 -0
  770. nuitka/nodes/SliceNodes.py +386 -0
  771. nuitka/nodes/StatementBasesGenerated.py +3419 -0
  772. nuitka/nodes/StatementNodes.py +316 -0
  773. nuitka/nodes/StrNodes.py +919 -0
  774. nuitka/nodes/StringConcatenationNodes.py +103 -0
  775. nuitka/nodes/SubscriptNodes.py +245 -0
  776. nuitka/nodes/TensorflowNodes.py +38 -0
  777. nuitka/nodes/TryNodes.py +519 -0
  778. nuitka/nodes/TypeMatchNodes.py +65 -0
  779. nuitka/nodes/TypeNodes.py +390 -0
  780. nuitka/nodes/VariableAssignNodes.py +1177 -0
  781. nuitka/nodes/VariableDelNodes.py +320 -0
  782. nuitka/nodes/VariableNameNodes.py +153 -0
  783. nuitka/nodes/VariableRefNodes.py +895 -0
  784. nuitka/nodes/VariableReleaseNodes.py +153 -0
  785. nuitka/nodes/YieldNodes.py +121 -0
  786. nuitka/nodes/__init__.py +19 -0
  787. nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
  788. nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
  789. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  790. nuitka/nodes/shapes/ShapeMixins.py +255 -0
  791. nuitka/nodes/shapes/StandardShapes.py +1384 -0
  792. nuitka/nodes/shapes/__init__.py +19 -0
  793. nuitka/optimizations/BytecodeDemotion.py +105 -0
  794. nuitka/optimizations/FunctionInlining.py +110 -0
  795. nuitka/optimizations/Graphs.py +70 -0
  796. nuitka/optimizations/Optimization.py +363 -0
  797. nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
  798. nuitka/optimizations/Tags.py +76 -0
  799. nuitka/optimizations/TraceCollections.py +1257 -0
  800. nuitka/optimizations/ValueTraces.py +980 -0
  801. nuitka/optimizations/__init__.py +19 -0
  802. nuitka/pgo/PGO.py +160 -0
  803. nuitka/pgo/__init__.py +19 -0
  804. nuitka/plugins/PluginBase.py +1924 -0
  805. nuitka/plugins/Plugins.py +2007 -0
  806. nuitka/plugins/YamlPluginBase.py +121 -0
  807. nuitka/plugins/__init__.py +19 -0
  808. nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
  809. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
  810. nuitka/plugins/standard/DataFilesPlugin.py +311 -0
  811. nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
  812. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  813. nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
  814. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
  815. nuitka/plugins/standard/DillPlugin.py +137 -0
  816. nuitka/plugins/standard/DllFilesPlugin.py +527 -0
  817. nuitka/plugins/standard/EnumPlugin.py +64 -0
  818. nuitka/plugins/standard/EventletPlugin.py +57 -0
  819. nuitka/plugins/standard/GeventPlugin.py +64 -0
  820. nuitka/plugins/standard/GiPlugin.py +118 -0
  821. nuitka/plugins/standard/GlfwPlugin.py +138 -0
  822. nuitka/plugins/standard/ImplicitImports.py +845 -0
  823. nuitka/plugins/standard/KivyPlugin.py +141 -0
  824. nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
  825. nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
  826. nuitka/plugins/standard/NumpyPlugin.py +35 -0
  827. nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
  828. nuitka/plugins/standard/PbrPlugin.py +62 -0
  829. nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
  830. nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
  831. nuitka/plugins/standard/PmwPlugin.py +248 -0
  832. nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
  833. nuitka/plugins/standard/PywebViewPlugin.py +81 -0
  834. nuitka/plugins/standard/SpacyPlugin.py +137 -0
  835. nuitka/plugins/standard/TensorflowPlugin.py +35 -0
  836. nuitka/plugins/standard/TkinterPlugin.py +416 -0
  837. nuitka/plugins/standard/TorchPlugin.py +35 -0
  838. nuitka/plugins/standard/TransformersPlugin.py +121 -0
  839. nuitka/plugins/standard/TrioPlugin.py +33 -0
  840. nuitka/plugins/standard/UpxPlugin.py +174 -0
  841. nuitka/plugins/standard/__init__.py +19 -0
  842. nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
  843. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
  844. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
  845. nuitka/reports/CompilationReportReader.py +83 -0
  846. nuitka/reports/LicenseReport.rst.j2 +41 -0
  847. nuitka/reports/Reports.py +961 -0
  848. nuitka/reports/__init__.py +19 -0
  849. nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
  850. nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
  851. nuitka/specs/BuiltinListOperationSpecs.py +80 -0
  852. nuitka/specs/BuiltinParameterSpecs.py +831 -0
  853. nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
  854. nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
  855. nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
  856. nuitka/specs/HardImportSpecs.py +236 -0
  857. nuitka/specs/ParameterSpecs.py +630 -0
  858. nuitka/specs/__init__.py +19 -0
  859. nuitka/tools/Basics.py +55 -0
  860. nuitka/tools/__init__.py +19 -0
  861. nuitka/tools/commercial/__init__.py +21 -0
  862. nuitka/tools/data_composer/DataComposer.py +593 -0
  863. nuitka/tools/data_composer/__init__.py +19 -0
  864. nuitka/tools/data_composer/__main__.py +41 -0
  865. nuitka/tools/environments/CreateEnvironment.py +69 -0
  866. nuitka/tools/environments/Virtualenv.py +158 -0
  867. nuitka/tools/environments/__init__.py +19 -0
  868. nuitka/tools/general/__init__.py +19 -0
  869. nuitka/tools/general/dll_report/__init__.py +19 -0
  870. nuitka/tools/general/dll_report/__main__.py +83 -0
  871. nuitka/tools/general/find_module/FindModuleCode.py +127 -0
  872. nuitka/tools/general/find_module/__init__.py +19 -0
  873. nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
  874. nuitka/tools/general/generate_header/__init__.py +19 -0
  875. nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
  876. nuitka/tools/onefile_compressor/__init__.py +19 -0
  877. nuitka/tools/onefile_compressor/__main__.py +41 -0
  878. nuitka/tools/podman/Podman.py +55 -0
  879. nuitka/tools/podman/__init__.py +19 -0
  880. nuitka/tools/podman/__main__.py +425 -0
  881. nuitka/tools/profiler/__init__.py +19 -0
  882. nuitka/tools/profiler/__main__.py +93 -0
  883. nuitka/tools/scanning/DisplayDistributions.py +39 -0
  884. nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
  885. nuitka/tools/scanning/DisplayPackageData.py +73 -0
  886. nuitka/tools/scanning/__init__.py +19 -0
  887. nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
  888. nuitka/tools/specialize/Common.py +380 -0
  889. nuitka/tools/specialize/SpecializeC.py +1483 -0
  890. nuitka/tools/specialize/SpecializePython.py +1151 -0
  891. nuitka/tools/specialize/__init__.py +19 -0
  892. nuitka/tools/testing/Common.py +2007 -0
  893. nuitka/tools/testing/Constructs.py +53 -0
  894. nuitka/tools/testing/DocTests.py +156 -0
  895. nuitka/tools/testing/OutputComparison.py +313 -0
  896. nuitka/tools/testing/Pythons.py +34 -0
  897. nuitka/tools/testing/RuntimeTracing.py +260 -0
  898. nuitka/tools/testing/SearchModes.py +208 -0
  899. nuitka/tools/testing/Valgrind.py +103 -0
  900. nuitka/tools/testing/__init__.py +19 -0
  901. nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
  902. nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
  903. nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
  904. nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
  905. nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
  906. nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
  907. nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
  908. nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
  909. nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
  910. nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
  911. nuitka/tools/watch/AutoStage.py +145 -0
  912. nuitka/tools/watch/Common.py +55 -0
  913. nuitka/tools/watch/Conda.py +125 -0
  914. nuitka/tools/watch/GitHub.py +113 -0
  915. nuitka/tools/watch/Pacman.py +73 -0
  916. nuitka/tools/watch/Pipenv.py +145 -0
  917. nuitka/tools/watch/__init__.py +19 -0
  918. nuitka/tools/watch/__main__.py +615 -0
  919. nuitka/tree/Building.py +1459 -0
  920. nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
  921. nuitka/tree/Extractions.py +48 -0
  922. nuitka/tree/FutureSpecState.py +71 -0
  923. nuitka/tree/InternalModule.py +96 -0
  924. nuitka/tree/Operations.py +45 -0
  925. nuitka/tree/ReformulationAssertStatements.py +97 -0
  926. nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
  927. nuitka/tree/ReformulationBooleanExpressions.py +97 -0
  928. nuitka/tree/ReformulationCallExpressions.py +314 -0
  929. nuitka/tree/ReformulationClasses.py +407 -0
  930. nuitka/tree/ReformulationClasses3.py +1149 -0
  931. nuitka/tree/ReformulationComparisonExpressions.py +174 -0
  932. nuitka/tree/ReformulationContractionExpressions.py +676 -0
  933. nuitka/tree/ReformulationDictionaryCreation.py +304 -0
  934. nuitka/tree/ReformulationExecStatements.py +386 -0
  935. nuitka/tree/ReformulationForLoopStatements.py +215 -0
  936. nuitka/tree/ReformulationFunctionStatements.py +931 -0
  937. nuitka/tree/ReformulationImportStatements.py +333 -0
  938. nuitka/tree/ReformulationLambdaExpressions.py +185 -0
  939. nuitka/tree/ReformulationMatchStatements.py +797 -0
  940. nuitka/tree/ReformulationMultidist.py +80 -0
  941. nuitka/tree/ReformulationNamespacePackages.py +239 -0
  942. nuitka/tree/ReformulationPrintStatements.py +127 -0
  943. nuitka/tree/ReformulationSequenceCreation.py +438 -0
  944. nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
  945. nuitka/tree/ReformulationTryExceptStatements.py +418 -0
  946. nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
  947. nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
  948. nuitka/tree/ReformulationWithStatements.py +382 -0
  949. nuitka/tree/ReformulationYieldExpressions.py +133 -0
  950. nuitka/tree/SourceHandling.py +476 -0
  951. nuitka/tree/SyntaxErrors.py +143 -0
  952. nuitka/tree/TreeHelpers.py +720 -0
  953. nuitka/tree/VariableClosure.py +483 -0
  954. nuitka/tree/__init__.py +19 -0
  955. nuitka/utils/AppDirs.py +104 -0
  956. nuitka/utils/CStrings.py +208 -0
  957. nuitka/utils/CommandLineOptions.py +207 -0
  958. nuitka/utils/Distributions.py +728 -0
  959. nuitka/utils/Download.py +217 -0
  960. nuitka/utils/Execution.py +517 -0
  961. nuitka/utils/FileOperations.py +1587 -0
  962. nuitka/utils/Hashing.py +137 -0
  963. nuitka/utils/Images.py +79 -0
  964. nuitka/utils/Importing.py +335 -0
  965. nuitka/utils/InlineCopies.py +52 -0
  966. nuitka/utils/InstalledPythons.py +254 -0
  967. nuitka/utils/InstanceCounters.py +86 -0
  968. nuitka/utils/Jinja2.py +158 -0
  969. nuitka/utils/Json.py +40 -0
  970. nuitka/utils/MacOSApp.py +134 -0
  971. nuitka/utils/MemoryUsage.py +165 -0
  972. nuitka/utils/ModuleNames.py +317 -0
  973. nuitka/utils/PackageResources.py +44 -0
  974. nuitka/utils/ReExecute.py +152 -0
  975. nuitka/utils/Rest.py +60 -0
  976. nuitka/utils/SharedLibraries.py +1014 -0
  977. nuitka/utils/Shebang.py +113 -0
  978. nuitka/utils/Signing.py +144 -0
  979. nuitka/utils/SlotMetaClasses.py +57 -0
  980. nuitka/utils/StaticLibraries.py +260 -0
  981. nuitka/utils/ThreadedExecutor.py +87 -0
  982. nuitka/utils/Timing.py +102 -0
  983. nuitka/utils/Utils.py +483 -0
  984. nuitka/utils/WindowsFileUsage.py +337 -0
  985. nuitka/utils/WindowsResources.py +652 -0
  986. nuitka/utils/Yaml.py +247 -0
  987. nuitka/utils/__init__.py +19 -0
  988. nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
  989. nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
  990. nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
  991. nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
  992. nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
  993. nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
  994. nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
  995. nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1337 @@
1
+ // Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+ #ifdef __IDE_ONLY__
4
+ #include "nuitka/freelists.h"
5
+ #include "nuitka/prelude.h"
6
+ #include <structmember.h>
7
+ #endif
8
+
9
+ // For reporting about reference counts per type.
10
+ #if _DEBUG_REFCOUNTS
11
+ int count_active_Nuitka_Frame_Type = 0;
12
+ int count_allocated_Nuitka_Frame_Type = 0;
13
+ int count_released_Nuitka_Frame_Type = 0;
14
+ #endif
15
+
16
+ // For reporting about frame cache usage
17
+ #if _DEBUG_REFCOUNTS
18
+ int count_active_frame_cache_instances = 0;
19
+ int count_allocated_frame_cache_instances = 0;
20
+ int count_released_frame_cache_instances = 0;
21
+ int count_hit_frame_cache_instances = 0;
22
+ #endif
23
+
24
+ #if PYTHON_VERSION < 0x3b0
25
+ static PyMemberDef Nuitka_Frame_members[] = {
26
+ {(char *)"f_back", T_OBJECT, offsetof(PyFrameObject, f_back), READONLY | RESTRICTED},
27
+ {(char *)"f_code", T_OBJECT, offsetof(PyFrameObject, f_code), READONLY | RESTRICTED},
28
+ {(char *)"f_builtins", T_OBJECT, offsetof(PyFrameObject, f_builtins), READONLY | RESTRICTED},
29
+ {(char *)"f_globals", T_OBJECT, offsetof(PyFrameObject, f_globals), READONLY | RESTRICTED},
30
+ {(char *)"f_lasti", T_INT, offsetof(PyFrameObject, f_lasti), READONLY | RESTRICTED},
31
+ {NULL}};
32
+
33
+ #else
34
+ #define Nuitka_Frame_members 0
35
+ #endif
36
+
37
+ #if PYTHON_VERSION < 0x300
38
+
39
+ static PyObject *_Nuitka_Frame_get_exc_traceback(PyObject *self, void *data) {
40
+ assert(Nuitka_Frame_CheckExact(self));
41
+ CHECK_OBJECT(self);
42
+ assert(_PyObject_GC_IS_TRACKED(self));
43
+
44
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
45
+ PyObject *result = frame->m_frame.f_exc_traceback;
46
+
47
+ if (result == NULL) {
48
+ result = Py_None;
49
+ }
50
+
51
+ Py_INCREF(result);
52
+ return result;
53
+ }
54
+
55
+ static int _Nuitka_Frame_set_exc_traceback(PyObject *self, PyObject *traceback, void *data) {
56
+ assert(Nuitka_Frame_CheckExact(self));
57
+ CHECK_OBJECT(self);
58
+ assert(_PyObject_GC_IS_TRACKED(self));
59
+
60
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
61
+ Py_XDECREF(frame->m_frame.f_exc_traceback);
62
+
63
+ if (traceback == Py_None) {
64
+ traceback = NULL;
65
+ }
66
+
67
+ frame->m_frame.f_exc_traceback = traceback;
68
+ Py_XINCREF(traceback);
69
+
70
+ return 0;
71
+ }
72
+
73
+ static PyObject *_Nuitka_Frame_get_exc_type(PyObject *self, void *data) {
74
+ assert(Nuitka_Frame_CheckExact(self));
75
+ CHECK_OBJECT(self);
76
+ assert(_PyObject_GC_IS_TRACKED(self));
77
+
78
+ PyObject *result;
79
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
80
+
81
+ if (frame->m_frame.f_exc_type != NULL) {
82
+ result = frame->m_frame.f_exc_type;
83
+ } else {
84
+ result = Py_None;
85
+ }
86
+
87
+ Py_INCREF(result);
88
+ return result;
89
+ }
90
+
91
+ static int _Nuitka_Frame_set_exc_type(PyObject *self, PyObject *exception_type, void *data) {
92
+ assert(Nuitka_Frame_CheckExact(self));
93
+ CHECK_OBJECT(self);
94
+ assert(_PyObject_GC_IS_TRACKED(self));
95
+
96
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
97
+ PyObject *old = frame->m_frame.f_exc_type;
98
+
99
+ if (exception_type == Py_None) {
100
+ exception_type = NULL;
101
+ }
102
+
103
+ frame->m_frame.f_exc_type = exception_type;
104
+ Py_XINCREF(frame->m_frame.f_exc_type);
105
+
106
+ Py_XDECREF(old);
107
+
108
+ return 0;
109
+ }
110
+
111
+ static PyObject *_Nuitka_Frame_get_exc_value(PyObject *self, void *data) {
112
+ assert(Nuitka_Frame_CheckExact(self));
113
+ CHECK_OBJECT(self);
114
+ assert(_PyObject_GC_IS_TRACKED(self));
115
+
116
+ PyObject *result;
117
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
118
+
119
+ if (frame->m_frame.f_exc_value != NULL) {
120
+ result = frame->m_frame.f_exc_value;
121
+ } else {
122
+ result = Py_None;
123
+ }
124
+
125
+ Py_INCREF(result);
126
+ return result;
127
+ }
128
+
129
+ static int _Nuitka_Frame_set_exc_value(PyObject *self, PyObject *exception_value, void *data) {
130
+ assert(Nuitka_Frame_CheckExact(self));
131
+ CHECK_OBJECT(self);
132
+ assert(_PyObject_GC_IS_TRACKED(self));
133
+
134
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
135
+ PyObject *old = frame->m_frame.f_exc_value;
136
+
137
+ if (exception_value == Py_None) {
138
+ exception_value = NULL;
139
+ }
140
+
141
+ frame->m_frame.f_exc_value = exception_value;
142
+ Py_XINCREF(exception_value);
143
+ Py_XDECREF(old);
144
+
145
+ return 0;
146
+ }
147
+
148
+ static PyObject *_Nuitka_Frame_get_restricted(PyObject *self, void *data) {
149
+ assert(Nuitka_Frame_CheckExact(self));
150
+ CHECK_OBJECT(self);
151
+ assert(_PyObject_GC_IS_TRACKED(self));
152
+
153
+ Py_INCREF_IMMORTAL(Py_False);
154
+ return Py_False;
155
+ }
156
+
157
+ #endif
158
+
159
+ static PyObject *_Nuitka_Frame_get_locals(PyObject *self, void *data) {
160
+ assert(Nuitka_Frame_CheckExact(self));
161
+ CHECK_OBJECT(self);
162
+ assert(_PyObject_GC_IS_TRACKED(self));
163
+
164
+ NUITKA_MAY_BE_UNUSED PyThreadState *tstate = PyThreadState_GET();
165
+
166
+ struct Nuitka_FrameObject *nuitka_frame = (struct Nuitka_FrameObject *)self;
167
+ if (nuitka_frame->m_type_description == NULL) {
168
+ #if PYTHON_VERSION < 0x3b0
169
+ PyFrameObject *locals_owner = &nuitka_frame->m_frame;
170
+ #else
171
+ _PyInterpreterFrame *locals_owner = &nuitka_frame->m_interpreter_frame;
172
+ #endif
173
+
174
+ if (locals_owner->f_locals == NULL) {
175
+ locals_owner->f_locals = MAKE_DICT_EMPTY(tstate);
176
+ }
177
+
178
+ Py_INCREF(locals_owner->f_locals);
179
+ return locals_owner->f_locals;
180
+ } else {
181
+ PyObject *result = MAKE_DICT_EMPTY(tstate);
182
+ PyObject **var_names = Nuitka_GetCodeVarNames(Nuitka_GetFrameCodeObject(nuitka_frame));
183
+
184
+ char const *w = nuitka_frame->m_type_description;
185
+ char const *t = nuitka_frame->m_locals_storage;
186
+
187
+ while (*w != 0) {
188
+ switch (*w) {
189
+ case NUITKA_TYPE_DESCRIPTION_OBJECT:
190
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR: {
191
+ PyObject *value = *(PyObject **)t;
192
+ CHECK_OBJECT_X(value);
193
+
194
+ if (value != NULL) {
195
+ DICT_SET_ITEM(result, *var_names, value);
196
+ }
197
+
198
+ t += sizeof(PyObject *);
199
+
200
+ break;
201
+ }
202
+ case NUITKA_TYPE_DESCRIPTION_CELL: {
203
+ struct Nuitka_CellObject *value = *(struct Nuitka_CellObject **)t;
204
+ assert(Nuitka_Cell_Check((PyObject *)value));
205
+ CHECK_OBJECT(value);
206
+
207
+ if (value->ob_ref != NULL) {
208
+ DICT_SET_ITEM(result, *var_names, value->ob_ref);
209
+ }
210
+
211
+ t += sizeof(struct Nuitka_CellObject *);
212
+
213
+ break;
214
+ }
215
+ case NUITKA_TYPE_DESCRIPTION_NULL: {
216
+ break;
217
+ }
218
+ case NUITKA_TYPE_DESCRIPTION_BOOL: {
219
+ int value = *(int *)t;
220
+ t += sizeof(int);
221
+ switch ((nuitka_bool)value) {
222
+ case NUITKA_BOOL_TRUE: {
223
+ DICT_SET_ITEM(result, *var_names, Py_True);
224
+ break;
225
+ }
226
+ case NUITKA_BOOL_FALSE: {
227
+ DICT_SET_ITEM(result, *var_names, Py_False);
228
+ break;
229
+ }
230
+ default:
231
+ break;
232
+ }
233
+ break;
234
+ }
235
+ default:
236
+ assert(false);
237
+ }
238
+
239
+ w += 1;
240
+ var_names += 1;
241
+ }
242
+
243
+ return result;
244
+ }
245
+ }
246
+
247
+ static PyObject *_Nuitka_Frame_get_lineno(PyObject *self, void *data) {
248
+ assert(Nuitka_Frame_CheckExact(self));
249
+ CHECK_OBJECT(self);
250
+ assert(_PyObject_GC_IS_TRACKED(self));
251
+
252
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
253
+ return Nuitka_PyInt_FromLong(frame->m_frame.f_lineno);
254
+ }
255
+
256
+ static PyObject *_Nuitka_Frame_get_trace(PyObject *self, void *data) {
257
+ assert(Nuitka_Frame_CheckExact(self));
258
+ CHECK_OBJECT(self);
259
+ assert(_PyObject_GC_IS_TRACKED(self));
260
+
261
+ struct Nuitka_FrameObject *frame = (struct Nuitka_FrameObject *)self;
262
+ PyObject *result = frame->m_frame.f_trace;
263
+ Py_INCREF(result);
264
+ return result;
265
+ }
266
+
267
+ static int _Nuitka_Frame_set_trace(PyObject *self, PyObject *value, void *data) {
268
+ assert(Nuitka_Frame_CheckExact(self));
269
+ CHECK_OBJECT(self);
270
+ assert(_PyObject_GC_IS_TRACKED(self));
271
+ #if !defined(_NUITKA_DEPLOYMENT_MODE) && !defined(_NUITKA_NO_DEPLOYMENT_FRAME_USELESS_SET_TRACE)
272
+ if (value == Py_None) {
273
+ return 0;
274
+ } else {
275
+ PyThreadState *tstate = PyThreadState_GET();
276
+
277
+ SET_CURRENT_EXCEPTION_TYPE0_STR(
278
+ tstate, PyExc_RuntimeError,
279
+ "f_trace is not writable in Nuitka, ignore with '--no-deployment-flag=frame-useless-set-trace'");
280
+ return -1;
281
+ }
282
+ #else
283
+ return 0;
284
+ #endif
285
+ }
286
+
287
+ #if PYTHON_VERSION >= 0x370
288
+ static PyObject *_Nuitka_Frame_get_trace_lines(PyObject *self, void *data) {
289
+ assert(Nuitka_Frame_CheckExact(self));
290
+ CHECK_OBJECT(self);
291
+ assert(_PyObject_GC_IS_TRACKED(self));
292
+
293
+ PyObject *result = Py_False;
294
+ Py_INCREF_IMMORTAL(result);
295
+ return result;
296
+ }
297
+
298
+ static int _Nuitka_Frame_set_trace_lines(PyObject *self, PyObject *value, void *data) {
299
+ assert(Nuitka_Frame_CheckExact(self));
300
+ CHECK_OBJECT(self);
301
+ assert(_PyObject_GC_IS_TRACKED(self));
302
+
303
+ PyThreadState *tstate = PyThreadState_GET();
304
+
305
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_lines is not writable in Nuitka");
306
+ return -1;
307
+ }
308
+
309
+ static PyObject *_Nuitka_Frame_get_trace_opcodes(PyObject *self, void *data) {
310
+ assert(Nuitka_Frame_CheckExact(self));
311
+ CHECK_OBJECT(self);
312
+ assert(_PyObject_GC_IS_TRACKED(self));
313
+
314
+ PyObject *result = Py_False;
315
+ Py_INCREF_IMMORTAL(result);
316
+ return result;
317
+ }
318
+
319
+ static int _Nuitka_Frame_set_trace_opcodes(PyObject *self, PyObject *value, void *data) {
320
+ assert(Nuitka_Frame_CheckExact(self));
321
+ CHECK_OBJECT(self);
322
+ assert(_PyObject_GC_IS_TRACKED(self));
323
+
324
+ PyThreadState *tstate = PyThreadState_GET();
325
+
326
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "f_trace_opcodes is not writable in Nuitka");
327
+ return -1;
328
+ }
329
+ #endif
330
+
331
+ static PyGetSetDef Nuitka_Frame_tp_getset[] = {
332
+ {(char *)"f_locals", _Nuitka_Frame_get_locals, NULL, NULL},
333
+ {(char *)"f_lineno", _Nuitka_Frame_get_lineno, NULL, NULL},
334
+ {(char *)"f_trace", _Nuitka_Frame_get_trace, _Nuitka_Frame_set_trace, NULL},
335
+ #if PYTHON_VERSION < 0x300
336
+ {(char *)"f_restricted", _Nuitka_Frame_get_restricted, NULL, NULL},
337
+ {(char *)"f_exc_traceback", _Nuitka_Frame_get_exc_traceback, _Nuitka_Frame_set_exc_traceback, NULL},
338
+ {(char *)"f_exc_type", _Nuitka_Frame_get_exc_type, _Nuitka_Frame_set_exc_type, NULL},
339
+ {(char *)"f_exc_value", _Nuitka_Frame_get_exc_value, _Nuitka_Frame_set_exc_value, NULL},
340
+ #endif
341
+ #if PYTHON_VERSION >= 0x370
342
+ {(char *)"f_trace_lines", _Nuitka_Frame_get_trace_lines, _Nuitka_Frame_set_trace_lines, NULL},
343
+ {(char *)"f_trace_opcodes", _Nuitka_Frame_get_trace_opcodes, _Nuitka_Frame_set_trace_opcodes, NULL},
344
+ #endif
345
+ {NULL}};
346
+
347
+ // tp_repr slot, decide how a function shall be output
348
+ static PyObject *Nuitka_Frame_tp_repr(struct Nuitka_FrameObject *nuitka_frame) {
349
+ assert(Nuitka_Frame_CheckExact((PyObject *)nuitka_frame));
350
+ CHECK_OBJECT((PyObject *)nuitka_frame);
351
+ assert(_PyObject_GC_IS_TRACKED(nuitka_frame));
352
+
353
+ #if PYTHON_VERSION >= 0x370
354
+ PyCodeObject *code_object = Nuitka_GetFrameCodeObject(nuitka_frame);
355
+ return Nuitka_String_FromFormat("<compiled_frame at %p, file %R, line %d, code %S>", nuitka_frame,
356
+ code_object->co_filename, Nuitka_GetFrameLineNumber(nuitka_frame),
357
+ code_object->co_name);
358
+ #elif _DEBUG_FRAME || _DEBUG_REFRAME || _DEBUG_EXCEPTIONS
359
+ PyCodeObject *code_object = Nuitka_GetFrameCodeObject(nuitka_frame);
360
+ return Nuitka_String_FromFormat("<compiled_frame object for %s at %p>",
361
+ Nuitka_String_AsString(code_object->co_name), nuitka_frame);
362
+ #else
363
+ return Nuitka_String_FromFormat("<compiled_frame object at %p>", nuitka_frame);
364
+ #endif
365
+ }
366
+
367
+ static void Nuitka_Frame_tp_clear(struct Nuitka_FrameObject *frame) {
368
+ if (frame->m_type_description) {
369
+ char const *w = frame->m_type_description;
370
+ char const *t = frame->m_locals_storage;
371
+
372
+ while (*w != 0) {
373
+ switch (*w) {
374
+ case NUITKA_TYPE_DESCRIPTION_OBJECT:
375
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR:
376
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
377
+ PyObject *value = *(PyObject **)t;
378
+ CHECK_OBJECT_X(value);
379
+
380
+ Py_XDECREF(value);
381
+
382
+ t += sizeof(PyObject *);
383
+
384
+ break;
385
+ }
386
+ case NUITKA_TYPE_DESCRIPTION_CELL: {
387
+ struct Nuitka_CellObject *value = *(struct Nuitka_CellObject **)t;
388
+ assert(Nuitka_Cell_Check((PyObject *)value));
389
+ CHECK_OBJECT(value);
390
+
391
+ Py_DECREF(value);
392
+
393
+ t += sizeof(struct Nuitka_CellObject *);
394
+
395
+ break;
396
+ }
397
+ case NUITKA_TYPE_DESCRIPTION_NULL: {
398
+ break;
399
+ }
400
+ case NUITKA_TYPE_DESCRIPTION_BOOL: {
401
+ t += sizeof(int);
402
+
403
+ break;
404
+ }
405
+ default:
406
+ assert(false);
407
+ }
408
+
409
+ w += 1;
410
+ }
411
+
412
+ frame->m_type_description = NULL;
413
+ }
414
+ }
415
+
416
+ // Freelist setup
417
+ #define MAX_FRAME_FREE_LIST_COUNT 100
418
+ static struct Nuitka_FrameObject *free_list_frames = NULL;
419
+ static int free_list_frames_count = 0;
420
+
421
+ static void Nuitka_Frame_tp_dealloc(struct Nuitka_FrameObject *nuitka_frame) {
422
+ #if _DEBUG_REFCOUNTS
423
+ count_active_Nuitka_Frame_Type -= 1;
424
+ count_released_Nuitka_Frame_Type += 1;
425
+ #endif
426
+
427
+ #ifndef __NUITKA_NO_ASSERT__
428
+ // Save the current exception, if any, we must to not corrupt it.
429
+ PyThreadState *tstate = PyThreadState_GET();
430
+
431
+ struct Nuitka_ExceptionPreservationItem saved_exception_state1;
432
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
433
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state1);
434
+ #endif
435
+
436
+ Nuitka_GC_UnTrack(nuitka_frame);
437
+
438
+ PyFrameObject *frame = &nuitka_frame->m_frame;
439
+ #if PYTHON_VERSION < 0x3b0
440
+ PyFrameObject *locals_owner = frame;
441
+ #else
442
+ _PyInterpreterFrame *locals_owner = &nuitka_frame->m_interpreter_frame;
443
+ #endif
444
+
445
+ assert(Nuitka_GC_IS_TRACKED_X((PyObject *)frame->f_back));
446
+ Py_XDECREF(frame->f_back);
447
+ Py_DECREF(locals_owner->f_builtins);
448
+ Py_DECREF(locals_owner->f_globals);
449
+ Py_XDECREF(locals_owner->f_locals);
450
+
451
+ #if PYTHON_VERSION < 0x370
452
+ Py_XDECREF(frame->f_exc_type);
453
+ Py_XDECREF(frame->f_exc_value);
454
+ Py_XDECREF(frame->f_exc_traceback);
455
+ #endif
456
+
457
+ Nuitka_Frame_tp_clear(nuitka_frame);
458
+
459
+ if (Py_REFCNT(nuitka_frame) > 0) {
460
+ Py_SET_REFCNT(nuitka_frame, Py_REFCNT(nuitka_frame) - 1);
461
+ if (Py_REFCNT(nuitka_frame) >= 1) {
462
+ // TODO: Allow this in debug mode, for now we would like to reproduce it.
463
+ assert(false);
464
+ return;
465
+ }
466
+ }
467
+
468
+ #if PYTHON_VERSION >= 0x3b0
469
+ // Restore from backup, see header comment for the field "m_ob_size" to get
470
+ // it.
471
+ Py_SET_SIZE(nuitka_frame, nuitka_frame->m_ob_size);
472
+ #endif
473
+
474
+ releaseToFreeList(free_list_frames, nuitka_frame, MAX_FRAME_FREE_LIST_COUNT);
475
+
476
+ #ifndef __NUITKA_NO_ASSERT__
477
+ struct Nuitka_ExceptionPreservationItem saved_exception_state2;
478
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
479
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state2);
480
+
481
+ ASSERT_SAME_EXCEPTION_STATE(&saved_exception_state1, &saved_exception_state2);
482
+ #endif
483
+ }
484
+
485
+ static int Nuitka_Frame_tp_traverse(struct Nuitka_FrameObject *frame, visitproc visit, void *arg) {
486
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
487
+ CHECK_OBJECT((PyObject *)frame);
488
+ assert(_PyObject_GC_IS_TRACKED(frame));
489
+
490
+ Py_VISIT(frame->m_frame.f_back);
491
+
492
+ #if PYTHON_VERSION < 0x3b0
493
+ PyFrameObject *locals_owner = &frame->m_frame;
494
+ #else
495
+ _PyInterpreterFrame *locals_owner = &frame->m_interpreter_frame;
496
+ #endif
497
+
498
+ Py_VISIT(locals_owner->f_builtins);
499
+ Py_VISIT(locals_owner->f_globals);
500
+ // Py_VISIT(locals_owner->f_locals);
501
+
502
+ #if PYTHON_VERSION < 0x370
503
+ Py_VISIT(frame->m_frame.f_exc_type);
504
+ Py_VISIT(frame->m_frame.f_exc_value);
505
+ Py_VISIT(frame->m_frame.f_exc_traceback);
506
+ #endif
507
+
508
+ // Traverse attached locals too.
509
+ char const *w = frame->m_type_description;
510
+ char const *t = frame->m_locals_storage;
511
+
512
+ while (w != NULL && *w != 0) {
513
+ switch (*w) {
514
+ case NUITKA_TYPE_DESCRIPTION_OBJECT:
515
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR: {
516
+ PyObject *value = *(PyObject **)t;
517
+ CHECK_OBJECT_X(value);
518
+
519
+ Py_VISIT(value);
520
+ t += sizeof(PyObject *);
521
+
522
+ break;
523
+ }
524
+ case NUITKA_TYPE_DESCRIPTION_CELL: {
525
+ struct Nuitka_CellObject *value = *(struct Nuitka_CellObject **)t;
526
+ assert(Nuitka_Cell_Check((PyObject *)value));
527
+ CHECK_OBJECT(value);
528
+
529
+ Py_VISIT(value);
530
+
531
+ t += sizeof(struct Nuitka_CellObject *);
532
+
533
+ break;
534
+ }
535
+ case NUITKA_TYPE_DESCRIPTION_NULL: {
536
+ break;
537
+ }
538
+ case NUITKA_TYPE_DESCRIPTION_BOOL: {
539
+ t += sizeof(int);
540
+
541
+ break;
542
+ }
543
+ default:
544
+ NUITKA_CANNOT_GET_HERE("invalid type description");
545
+ assert(false);
546
+ }
547
+
548
+ w += 1;
549
+ }
550
+
551
+ return 0;
552
+ }
553
+
554
+ #if PYTHON_VERSION >= 0x300
555
+
556
+ static PyObject *Nuitka_GetFrameGenerator(struct Nuitka_FrameObject *nuitka_frame) {
557
+ #if PYTHON_VERSION < 0x3b0
558
+ return nuitka_frame->m_frame.f_gen;
559
+ #else
560
+ return nuitka_frame->m_generator;
561
+ #endif
562
+ }
563
+
564
+ static PyObject *Nuitka_Frame_clear(struct Nuitka_FrameObject *frame, PyObject *unused) {
565
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
566
+ CHECK_OBJECT((PyObject *)frame);
567
+ assert(_PyObject_GC_IS_TRACKED(frame));
568
+
569
+ PyThreadState *tstate = PyThreadState_GET();
570
+
571
+ if (Nuitka_Frame_IsExecuting(frame)) {
572
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "cannot clear an executing frame");
573
+
574
+ return NULL;
575
+ }
576
+
577
+ #if PYTHON_VERSION >= 0x3b0
578
+ if (frame->m_frame_state == FRAME_COMPLETED) {
579
+ Nuitka_Frame_tp_clear(frame);
580
+
581
+ Py_RETURN_NONE;
582
+ }
583
+
584
+ if (frame->m_frame_state == FRAME_EXECUTING) {
585
+ SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_RuntimeError, "cannot clear an executing frame");
586
+ return NULL;
587
+ }
588
+ #endif
589
+
590
+ #if PYTHON_VERSION >= 0x300
591
+ // For frames that are closed, we also need to close the generator.
592
+ PyObject *f_gen = Nuitka_GetFrameGenerator(frame);
593
+ if (f_gen != NULL) {
594
+ CHECK_OBJECT(f_gen);
595
+
596
+ Py_INCREF(frame);
597
+
598
+ bool close_exception;
599
+
600
+ if (Nuitka_Generator_Check(f_gen)) {
601
+ struct Nuitka_GeneratorObject *generator = (struct Nuitka_GeneratorObject *)f_gen;
602
+ Nuitka_SetFrameGenerator(frame, NULL);
603
+
604
+ close_exception = !_Nuitka_Generator_close(tstate, generator);
605
+ }
606
+ #if PYTHON_VERSION >= 0x350
607
+ else if (Nuitka_Coroutine_Check(f_gen)) {
608
+ struct Nuitka_CoroutineObject *coroutine = (struct Nuitka_CoroutineObject *)f_gen;
609
+ Nuitka_SetFrameGenerator(frame, NULL);
610
+
611
+ close_exception = !_Nuitka_Coroutine_close(tstate, coroutine);
612
+ }
613
+ #endif
614
+ #if PYTHON_VERSION >= 0x360
615
+ else if (Nuitka_Asyncgen_Check(f_gen)) {
616
+ struct Nuitka_AsyncgenObject *asyncgen = (struct Nuitka_AsyncgenObject *)f_gen;
617
+ Nuitka_SetFrameGenerator(frame, NULL);
618
+
619
+ close_exception = !_Nuitka_Asyncgen_close(tstate, asyncgen);
620
+ }
621
+ #endif
622
+ else {
623
+ // Compiled frames should only have our types, so this ought to not happen.
624
+ assert(false);
625
+
626
+ Nuitka_SetFrameGenerator(frame, NULL);
627
+
628
+ close_exception = false;
629
+ }
630
+
631
+ if (unlikely(close_exception)) {
632
+ PyErr_WriteUnraisable(f_gen);
633
+ }
634
+
635
+ Py_DECREF(frame);
636
+ }
637
+ #endif
638
+
639
+ Nuitka_Frame_tp_clear(frame);
640
+
641
+ Py_RETURN_NONE;
642
+ }
643
+
644
+ #endif
645
+
646
+ static inline Py_ssize_t Nuitka_Frame_GetSize(struct Nuitka_FrameObject *frame) {
647
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
648
+ CHECK_OBJECT((PyObject *)frame);
649
+ assert(_PyObject_GC_IS_TRACKED(frame));
650
+
651
+ #if PYTHON_VERSION < 0x3b0
652
+ return Py_SIZE(frame);
653
+ #else
654
+ return frame->m_ob_size;
655
+ #endif
656
+ }
657
+
658
+ static PyObject *Nuitka_Frame_sizeof(struct Nuitka_FrameObject *frame, PyObject *unused) {
659
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame));
660
+ CHECK_OBJECT((PyObject *)frame);
661
+ assert(_PyObject_GC_IS_TRACKED(frame));
662
+
663
+ return PyInt_FromSsize_t(sizeof(struct Nuitka_FrameObject) + Py_SIZE(frame));
664
+ }
665
+
666
+ static PyMethodDef Nuitka_Frame_methods[] = {
667
+ #if PYTHON_VERSION >= 0x300
668
+ {"clear", (PyCFunction)Nuitka_Frame_clear, METH_NOARGS, "F.clear(): clear most references held by the frame"},
669
+ #endif
670
+ {"__sizeof__", (PyCFunction)Nuitka_Frame_sizeof, METH_NOARGS, "F.__sizeof__() -> size of F in memory, in bytes"},
671
+ {NULL, NULL}};
672
+
673
+ PyTypeObject Nuitka_Frame_Type = {
674
+ PyVarObject_HEAD_INIT(NULL, 0) "compiled_frame",
675
+ sizeof(struct Nuitka_FrameObject),
676
+ 1,
677
+ (destructor)Nuitka_Frame_tp_dealloc, // tp_dealloc
678
+ 0, // tp_print
679
+ 0, // tp_getattr
680
+ 0, // tp_setattr
681
+ 0, // tp_compare
682
+ (reprfunc)Nuitka_Frame_tp_repr, // tp_repr
683
+ 0, // tp_as_number
684
+ 0, // tp_as_sequence
685
+ 0, // tp_as_mapping
686
+ 0, // tp_hash
687
+ 0, // tp_call
688
+ 0, // tp_str
689
+ 0, // tp_getattro (PyObject_GenericGetAttr)
690
+ 0, // tp_setattro (PyObject_GenericSetAttr)
691
+ 0, // tp_as_buffer
692
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, // tp_flags
693
+ 0, // tp_doc
694
+ (traverseproc)Nuitka_Frame_tp_traverse, // tp_traverse
695
+ (inquiry)Nuitka_Frame_tp_clear, // tp_clear
696
+ 0, // tp_richcompare
697
+ 0, // tp_weaklistoffset
698
+ 0, // tp_iter
699
+ 0, // tp_iternext
700
+ Nuitka_Frame_methods, // tp_methods
701
+ Nuitka_Frame_members, // tp_members
702
+ Nuitka_Frame_tp_getset, // tp_getset
703
+ 0, // tp_base
704
+ 0, // tp_dict
705
+ };
706
+
707
+ void _initCompiledFrameType(void) {
708
+ assert(Nuitka_Frame_Type.tp_doc != PyFrame_Type.tp_doc || PyFrame_Type.tp_doc == NULL);
709
+ assert(Nuitka_Frame_Type.tp_traverse != PyFrame_Type.tp_traverse);
710
+ assert(Nuitka_Frame_Type.tp_clear != PyFrame_Type.tp_clear || PyFrame_Type.tp_clear == NULL);
711
+ assert(Nuitka_Frame_Type.tp_richcompare != PyFrame_Type.tp_richcompare || PyFrame_Type.tp_richcompare == NULL);
712
+ assert(Nuitka_Frame_Type.tp_weaklistoffset != PyFrame_Type.tp_weaklistoffset ||
713
+ PyFrame_Type.tp_weaklistoffset == 0);
714
+ assert(Nuitka_Frame_Type.tp_iter != PyFrame_Type.tp_iter || PyFrame_Type.tp_iter == NULL);
715
+ assert(Nuitka_Frame_Type.tp_iternext != PyFrame_Type.tp_iternext || PyFrame_Type.tp_iternext == NULL);
716
+ assert(Nuitka_Frame_Type.tp_methods != PyFrame_Type.tp_methods);
717
+ assert(Nuitka_Frame_Type.tp_members != PyFrame_Type.tp_members);
718
+ assert(Nuitka_Frame_Type.tp_getset != PyFrame_Type.tp_getset);
719
+
720
+ assert(Nuitka_Frame_Type.tp_descr_get != PyFrame_Type.tp_descr_get || PyFrame_Type.tp_descr_get == NULL);
721
+
722
+ assert(Nuitka_Frame_Type.tp_descr_set != PyFrame_Type.tp_descr_set || PyFrame_Type.tp_descr_set == NULL);
723
+ assert(Nuitka_Frame_Type.tp_dictoffset != PyFrame_Type.tp_dictoffset || PyFrame_Type.tp_dictoffset == 0);
724
+ // TODO: These get changed and into the same thing, not sure what to compare against, project something
725
+ // assert(Nuitka_Frame_Type.tp_dict != PyFrame_Type.tp_dict);
726
+ // assert(Nuitka_Frame_Type.tp_init != PyFrame_Type.tp_init || PyFrame_Type.tp_init == NULL);
727
+ // assert(Nuitka_Frame_Type.tp_alloc != PyFrame_Type.tp_alloc || PyFrame_Type.tp_alloc == NULL);
728
+ // assert(Nuitka_Frame_Type.tp_new != PyFrame_Type.tp_new || PyFrame_Type.tp_new == NULL);
729
+ // assert(Nuitka_Frame_Type.tp_free != PyFrame_Type.tp_free || PyFrame_Type.tp_free == NULL);
730
+ // assert(Nuitka_Frame_Type.tp_weaklist != PyFrame_Type.tp_weaklist);
731
+ assert(Nuitka_Frame_Type.tp_bases != PyFrame_Type.tp_bases);
732
+ assert(Nuitka_Frame_Type.tp_mro != PyFrame_Type.tp_mro);
733
+ assert(Nuitka_Frame_Type.tp_cache != PyFrame_Type.tp_cache || PyFrame_Type.tp_cache == NULL);
734
+ assert(Nuitka_Frame_Type.tp_subclasses != PyFrame_Type.tp_subclasses || PyFrame_Type.tp_cache == NULL);
735
+ assert(Nuitka_Frame_Type.tp_del != PyFrame_Type.tp_del || PyFrame_Type.tp_del == NULL);
736
+ #if PYTHON_VERSION >= 0x300
737
+ assert(Nuitka_Frame_Type.tp_finalize != PyFrame_Type.tp_finalize || PyFrame_Type.tp_finalize == NULL);
738
+ #endif
739
+ Nuitka_PyType_Ready(&Nuitka_Frame_Type, &PyFrame_Type, true, true, false, false, false);
740
+
741
+ // These are to be used interchangeably. Make sure that's true.
742
+ assert(offsetof(struct Nuitka_FrameObject, m_frame) == 0);
743
+ }
744
+
745
+ static struct Nuitka_FrameObject *_MAKE_COMPILED_FRAME(PyCodeObject *code, PyObject *module, PyObject *f_locals,
746
+ Py_ssize_t locals_size) {
747
+ CHECK_CODE_OBJECT(code);
748
+ CHECK_OBJECT(module);
749
+
750
+ #if _DEBUG_REFCOUNTS
751
+ count_active_Nuitka_Frame_Type += 1;
752
+ count_allocated_Nuitka_Frame_Type += 1;
753
+ #endif
754
+
755
+ PyObject *globals = ((PyModuleObject *)module)->md_dict;
756
+ CHECK_OBJECT(globals);
757
+
758
+ assert(PyDict_Check(globals));
759
+
760
+ struct Nuitka_FrameObject *result;
761
+
762
+ // Macro to assign result memory from GC or free list.
763
+ allocateFromFreeList(free_list_frames, struct Nuitka_FrameObject, Nuitka_Frame_Type, locals_size);
764
+
765
+ result->m_type_description = NULL;
766
+
767
+ PyFrameObject *frame = &result->m_frame;
768
+ // Globals and locals are stored differently before Python 3.11
769
+ #if PYTHON_VERSION < 0x3b0
770
+ PyFrameObject *locals_owner = frame;
771
+ #else
772
+ _PyInterpreterFrame *locals_owner = &result->m_interpreter_frame;
773
+ #endif
774
+
775
+ #if PYTHON_VERSION < 0x3d0
776
+ locals_owner->f_code = code;
777
+ #else
778
+ // TODO: Why is our code object not just immortal.
779
+ locals_owner->f_executable = (PyObject *)code;
780
+ #endif
781
+
782
+ frame->f_trace = Py_None;
783
+
784
+ #if PYTHON_VERSION < 0x370
785
+ frame->f_exc_type = NULL;
786
+ frame->f_exc_value = NULL;
787
+ frame->f_exc_traceback = NULL;
788
+ #else
789
+ frame->f_trace_lines = 0;
790
+ frame->f_trace_opcodes = 0;
791
+ #endif
792
+
793
+ #if PYTHON_VERSION >= 0x3b0
794
+ result->m_ob_size = Py_SIZE(result);
795
+ #endif
796
+ frame->f_back = NULL;
797
+
798
+ Py_INCREF(dict_builtin);
799
+ locals_owner->f_builtins = (PyObject *)dict_builtin;
800
+
801
+ Py_INCREF(globals);
802
+ locals_owner->f_globals = globals;
803
+
804
+ // Note: Reference taking happens in calling function.
805
+ CHECK_OBJECT_X(f_locals);
806
+ locals_owner->f_locals = f_locals;
807
+
808
+ #if PYTHON_VERSION < 0x300
809
+ frame->f_tstate = PyThreadState_GET();
810
+ #endif
811
+
812
+ #if PYTHON_VERSION < 0x3b0
813
+ frame->f_lasti = -1;
814
+ frame->f_iblock = 0; // spell-checker: ignore iblock
815
+ #endif
816
+
817
+ frame->f_lineno = code->co_firstlineno;
818
+
819
+ #if PYTHON_VERSION >= 0x300
820
+ Nuitka_SetFrameGenerator(result, NULL);
821
+
822
+ Nuitka_Frame_MarkAsNotExecuting(result);
823
+ #endif
824
+
825
+ #if PYTHON_VERSION >= 0x3b0
826
+ result->m_interpreter_frame.frame_obj = &result->m_frame;
827
+ result->m_interpreter_frame.owner = FRAME_OWNED_BY_GENERATOR;
828
+ #if PYTHON_VERSION >= 0x3c0
829
+ result->m_interpreter_frame.f_funcobj = NULL; // spell-checker: ignore funcobj
830
+ #else
831
+ result->m_interpreter_frame.f_func = NULL;
832
+ #endif
833
+ #if PYTHON_VERSION < 0x3d0
834
+ result->m_interpreter_frame.prev_instr = _PyCode_CODE(code);
835
+ #else
836
+ result->m_interpreter_frame.instr_ptr = _PyCode_CODE(code);
837
+ #endif
838
+ result->m_frame.f_frame = &result->m_interpreter_frame;
839
+
840
+ assert(!_PyFrame_IsIncomplete(&result->m_interpreter_frame));
841
+ #endif
842
+
843
+ Nuitka_GC_Track(result);
844
+ return result;
845
+ }
846
+
847
+ struct Nuitka_FrameObject *MAKE_MODULE_FRAME(PyCodeObject *code, PyObject *module) {
848
+ PyObject *f_locals = ((PyModuleObject *)module)->md_dict;
849
+ Py_INCREF(f_locals);
850
+
851
+ return _MAKE_COMPILED_FRAME(code, module, f_locals, 0);
852
+ }
853
+
854
+ struct Nuitka_FrameObject *MAKE_FUNCTION_FRAME(PyThreadState *tstate, PyCodeObject *code, PyObject *module,
855
+ Py_ssize_t locals_size) {
856
+ PyObject *f_locals;
857
+
858
+ if (likely((code->co_flags & CO_OPTIMIZED) == CO_OPTIMIZED)) {
859
+ f_locals = NULL;
860
+ } else {
861
+ PyObject *kw_pairs[2] = {const_str_plain___module__, MODULE_NAME0(tstate, module)};
862
+ f_locals = MAKE_DICT(kw_pairs, 1);
863
+ }
864
+
865
+ return _MAKE_COMPILED_FRAME(code, module, f_locals, locals_size);
866
+ }
867
+
868
+ struct Nuitka_FrameObject *MAKE_CLASS_FRAME(PyThreadState *tstate, PyCodeObject *code, PyObject *module,
869
+ PyObject *f_locals, Py_ssize_t locals_size) {
870
+ // The frame template sets f_locals on usage itself, need not create it that way.
871
+ if (f_locals == NULL) {
872
+ PyObject *kw_pairs[2] = {const_str_plain___module__, MODULE_NAME0(tstate, module)};
873
+ f_locals = MAKE_DICT(kw_pairs, 1);
874
+ } else {
875
+ Py_INCREF(f_locals);
876
+ }
877
+
878
+ return _MAKE_COMPILED_FRAME(code, module, f_locals, locals_size);
879
+ }
880
+
881
+ // This is the backend of MAKE_CODE_OBJECT macro.
882
+ PyCodeObject *makeCodeObject(PyObject *filename, int line, int flags, PyObject *function_name,
883
+ #if PYTHON_VERSION >= 0x3b0
884
+ PyObject *function_qualname,
885
+ #endif
886
+ PyObject *arg_names, PyObject *free_vars, int arg_count
887
+ #if PYTHON_VERSION >= 0x300
888
+ ,
889
+ int kw_only_count
890
+ #endif
891
+ #if PYTHON_VERSION >= 0x380
892
+ ,
893
+ int pos_only_count
894
+ #endif
895
+ ) {
896
+
897
+ if (filename == Py_None) {
898
+ filename = const_str_empty;
899
+ }
900
+
901
+ // TODO: We don't do that anymore once new-code-objects
902
+ // is the default, then we don't need to pass it, since
903
+ // we create them incomplete anyway.
904
+ CHECK_OBJECT(filename);
905
+ assert(Nuitka_StringOrUnicode_CheckExact(filename));
906
+
907
+ CHECK_OBJECT(function_name);
908
+ assert(Nuitka_String_CheckExact(function_name));
909
+
910
+ #if PYTHON_VERSION < 0x300
911
+ PyObject *filename_str = NULL;
912
+
913
+ // TODO: Memory leak of filename, it might be intended transferred to the
914
+ // code object by using code.
915
+ if (PyUnicode_CheckExact(filename)) {
916
+ filename_str = PyUnicode_AsUTF8String(filename);
917
+ filename = filename_str;
918
+ } else {
919
+ filename_str = filename;
920
+ Py_INCREF(filename);
921
+ }
922
+ #endif
923
+
924
+ if (arg_names == NULL || arg_names == Py_None) {
925
+ arg_names = const_tuple_empty;
926
+ }
927
+ CHECK_OBJECT(arg_names);
928
+ assert(PyTuple_Check(arg_names));
929
+
930
+ if (free_vars == NULL || free_vars == Py_None) {
931
+ free_vars = const_tuple_empty;
932
+ }
933
+ CHECK_OBJECT(free_vars);
934
+ assert(PyTuple_Check(free_vars));
935
+
936
+ // The PyCode_New has funny code that interns, mutating the tuple that owns
937
+ // it. Really serious non-immutable shit. We have triggered that changes
938
+ // behind our back in the past.
939
+ #ifndef __NUITKA_NO_ASSERT__
940
+ // TODO: Reactivate once code object creation becomes un-streaming driven
941
+ // and we can pass the extra args with no worries.
942
+
943
+ // Py_hash_t hash = DEEP_HASH(arg_names);
944
+ #endif
945
+
946
+ // spell-checker: ignore lnotab
947
+ #if PYTHON_VERSION < 0x300
948
+ PyObject *code = const_str_empty;
949
+ PyObject *lnotab = const_str_empty;
950
+ PyObject *consts = const_tuple_empty;
951
+ PyObject *names = const_tuple_empty;
952
+ int stacksize = 0;
953
+ #elif PYTHON_VERSION < 0x3b0
954
+ PyObject *code = const_bytes_empty;
955
+ PyObject *lnotab = const_bytes_empty;
956
+ PyObject *consts = const_tuple_empty;
957
+ PyObject *names = const_tuple_empty;
958
+ int stacksize = 0;
959
+ #else
960
+ // Our code object needs to be recognizable, and Python doesn't store the
961
+ // length anymore, so we need a non-empty one.
962
+ static PyObject *empty_code = NULL;
963
+ static PyObject *lnotab = NULL;
964
+ static PyObject *consts = NULL;
965
+ static PyObject *names = NULL;
966
+ // TODO: Seems removable.
967
+ static PyObject *exception_table = NULL;
968
+ static int stacksize = 0;
969
+
970
+ if (empty_code == NULL) {
971
+ // Only needed once here.
972
+ PyThreadState *tstate = PyThreadState_GET();
973
+
974
+ PyObject *empty_code_module_object = Py_CompileString(
975
+ "def empty(): raise RuntimeError('Compiled function bytecode used')", "<exec>", Py_file_input);
976
+ NUITKA_MAY_BE_UNUSED PyObject *module =
977
+ PyImport_ExecCodeModule("nuitka_empty_function", empty_code_module_object);
978
+ CHECK_OBJECT(module);
979
+
980
+ PyObject *empty_function = PyObject_GetAttrString(module, "empty");
981
+ CHECK_OBJECT(empty_function);
982
+ PyObject *empty_code_object = PyObject_GetAttrString(empty_function, "__code__");
983
+ CHECK_OBJECT(empty_code_object);
984
+
985
+ NUITKA_MAY_BE_UNUSED bool bool_res = Nuitka_DelModuleString(tstate, "nuitka_empty_function");
986
+ assert(bool_res != false);
987
+
988
+ empty_code = PyObject_GetAttrString(empty_code_object, "co_code");
989
+ CHECK_OBJECT(empty_code);
990
+ #if PYTHON_VERSION >= 0x3c0
991
+ lnotab = ((PyCodeObject *)empty_code_object)->co_linetable; // spell-checker: ignore linetable
992
+ #else
993
+ lnotab = PyObject_GetAttrString(empty_code_object, "co_lnotab");
994
+ CHECK_OBJECT(lnotab);
995
+ #endif
996
+ consts = PyObject_GetAttrString(empty_code_object, "co_consts");
997
+ CHECK_OBJECT(consts);
998
+ names = PyObject_GetAttrString(empty_code_object, "co_names");
999
+ CHECK_OBJECT(names);
1000
+ exception_table = PyObject_GetAttrString(empty_code_object, "co_exceptiontable");
1001
+ CHECK_OBJECT(exception_table);
1002
+
1003
+ stacksize = (int)PyLong_AsLong(PyObject_GetAttrString(empty_code_object, "co_stacksize"));
1004
+ }
1005
+
1006
+ PyObject *code = empty_code;
1007
+ CHECK_OBJECT(empty_code);
1008
+ CHECK_OBJECT(lnotab);
1009
+ CHECK_OBJECT(consts);
1010
+ CHECK_OBJECT(names);
1011
+ CHECK_OBJECT(exception_table);
1012
+ #endif
1013
+
1014
+ // For Python 3.11 this value is checked, even if not used.
1015
+ #if PYTHON_VERSION >= 0x3b0
1016
+ int nlocals = (int)PyTuple_GET_SIZE(arg_names);
1017
+ #else
1018
+ int nlocals = 0;
1019
+ #endif
1020
+
1021
+ // Not using PyCode_NewEmpty, it doesn't given us much beyond this
1022
+ // and is not available for Python2.
1023
+
1024
+ #if PYTHON_VERSION >= 0x380
1025
+ PyCodeObject *result = PyCode_NewWithPosOnlyArgs(arg_count, // arg_count
1026
+ #else
1027
+ PyCodeObject *result = PyCode_New(arg_count, // arg_count
1028
+ #endif
1029
+
1030
+ #if PYTHON_VERSION >= 0x300
1031
+ #if PYTHON_VERSION >= 0x380
1032
+ pos_only_count, // pos-only count
1033
+ #endif
1034
+ kw_only_count, // kw-only count
1035
+ #endif
1036
+ nlocals, // nlocals
1037
+ stacksize, // stacksize
1038
+ flags, // flags
1039
+ code, // code (bytecode)
1040
+ consts, // consts (we are not going to be compatible)
1041
+ names, // names (we are not going to be compatible)
1042
+ arg_names, // var_names (we are not going to be compatible)
1043
+ free_vars, // free_vars
1044
+ const_tuple_empty, // cell_vars (we are not going to be compatible)
1045
+ filename, // filename
1046
+ function_name, // name
1047
+ #if PYTHON_VERSION >= 0x3b0
1048
+ function_qualname, // qualname
1049
+ #endif
1050
+ line, // first_lineno (offset of the code object)
1051
+ lnotab // lnotab (table to translate code object)
1052
+ #if PYTHON_VERSION >= 0x3b0
1053
+ ,
1054
+ exception_table // exception_table
1055
+ #endif
1056
+ );
1057
+
1058
+ // assert(DEEP_HASH(tstate, arg_names) == hash);
1059
+
1060
+ #if PYTHON_VERSION < 0x300
1061
+ Py_DECREF(filename_str);
1062
+ #endif
1063
+
1064
+ if (result == NULL) {
1065
+ PyErr_PrintEx(0);
1066
+ NUITKA_CANNOT_GET_HERE("Failed to create code object");
1067
+ }
1068
+
1069
+ return result;
1070
+ }
1071
+
1072
+ PyCodeObject *USE_CODE_OBJECT(PyThreadState *tstate, PyObject *code_object, PyObject *module_filename_obj) {
1073
+ assert(PyCode_Check(code_object));
1074
+ CHECK_OBJECT(module_filename_obj);
1075
+
1076
+ PyCodeObject *co = (PyCodeObject *)code_object;
1077
+ PyObject *old = co->co_filename;
1078
+
1079
+ if (old == const_str_empty) {
1080
+ // Set the filename, ignore the loss of a reference to empty string,
1081
+ // that's our singleton and immortal at least practically.
1082
+ co->co_filename = Py_NewRef(module_filename_obj);
1083
+
1084
+ #if PYTHON_VERSION >= 0x3b0
1085
+ // Also, make sure the qualname is completed from the partial
1086
+ // name.
1087
+ if (co->co_qualname != co->co_name) {
1088
+ PyObject *w = UNICODE_CONCAT(tstate, co->co_qualname, const_str_dot);
1089
+ co->co_qualname = UNICODE_CONCAT(tstate, w, co->co_name);
1090
+ Py_DECREF(w);
1091
+ }
1092
+ #endif
1093
+ }
1094
+
1095
+ return co;
1096
+ }
1097
+
1098
+ void Nuitka_Frame_AttachLocals(struct Nuitka_FrameObject *frame_object, char const *type_description, ...) {
1099
+ assert(Nuitka_Frame_CheckExact((PyObject *)frame_object));
1100
+ CHECK_OBJECT((PyObject *)frame_object);
1101
+ assert(_PyObject_GC_IS_TRACKED(frame_object));
1102
+ assertFrameObject(frame_object);
1103
+
1104
+ #if _DEBUG_FRAME
1105
+ PRINT_FORMAT("Attaching to frame 0x%lx %s\n", frame_object,
1106
+ Nuitka_String_AsString(PyObject_Repr((PyObject *)Nuitka_Frame_GetCodeObject(&frame_object->m_frame))));
1107
+ #endif
1108
+
1109
+ assert(frame_object->m_type_description == NULL);
1110
+
1111
+ // TODO: Do not call this if there is nothing to do. Instead make all the
1112
+ // places handle NULL pointer and recognize that there is nothing to do.
1113
+ // assert(type_description != NULL && assert(strlen(type_description)>0));
1114
+ if (type_description == NULL) {
1115
+ type_description = "";
1116
+ }
1117
+
1118
+ frame_object->m_type_description = type_description;
1119
+
1120
+ char const *w = type_description;
1121
+ char *t = frame_object->m_locals_storage;
1122
+
1123
+ va_list(ap);
1124
+ va_start(ap, type_description);
1125
+
1126
+ while (*w != 0) {
1127
+ switch (*w) {
1128
+ case NUITKA_TYPE_DESCRIPTION_OBJECT: {
1129
+ PyObject *value = va_arg(ap, PyObject *);
1130
+ memcpy(t, &value, sizeof(PyObject *));
1131
+ Py_XINCREF(value);
1132
+ t += sizeof(PyObject *);
1133
+
1134
+ break;
1135
+ }
1136
+ case NUITKA_TYPE_DESCRIPTION_OBJECT_PTR: {
1137
+ /* Note: We store the pointed object only, so this is only
1138
+ a shortcut for the calling side. */
1139
+ PyObject **value = va_arg(ap, PyObject **);
1140
+ CHECK_OBJECT_X(*value);
1141
+
1142
+ memcpy(t, value, sizeof(PyObject *));
1143
+
1144
+ Py_XINCREF(*value);
1145
+ t += sizeof(PyObject *);
1146
+
1147
+ break;
1148
+ }
1149
+ case NUITKA_TYPE_DESCRIPTION_CELL: {
1150
+ struct Nuitka_CellObject *value = va_arg(ap, struct Nuitka_CellObject *);
1151
+ assert(Nuitka_Cell_Check((PyObject *)value));
1152
+ CHECK_OBJECT(value);
1153
+ CHECK_OBJECT_X(value->ob_ref);
1154
+
1155
+ memcpy(t, &value, sizeof(struct Nuitka_CellObject *));
1156
+ // TODO: Reference count must become wrong here, should
1157
+ // be forced to one probably, or we should simply not
1158
+ // store cells, but their values. Take a ref off "value"
1159
+ // is probably not needed.
1160
+ // Py_SET_REFCNT((struct Nuitka_CellObject *)t, 1);
1161
+ Py_INCREF(value);
1162
+
1163
+ t += sizeof(struct Nuitka_CellObject *);
1164
+
1165
+ break;
1166
+ }
1167
+ case NUITKA_TYPE_DESCRIPTION_NULL: {
1168
+ NUITKA_MAY_BE_UNUSED void *value = va_arg(ap, struct Nuitka_CellObject *);
1169
+
1170
+ break;
1171
+ }
1172
+ case NUITKA_TYPE_DESCRIPTION_BOOL: {
1173
+ int value = va_arg(ap, int);
1174
+ memcpy(t, &value, sizeof(int));
1175
+
1176
+ t += sizeof(value);
1177
+
1178
+ break;
1179
+ }
1180
+ case NUITKA_TYPE_DESCRIPTION_NILONG: {
1181
+ nuitka_ilong value = va_arg(ap, nuitka_ilong);
1182
+ ENFORCE_NILONG_OBJECT_VALUE(&value);
1183
+
1184
+ CHECK_OBJECT(value.python_value);
1185
+ memcpy(t, &value.python_value, sizeof(PyObject *));
1186
+ Py_XINCREF(value.python_value);
1187
+ t += sizeof(PyObject *);
1188
+
1189
+ break;
1190
+ }
1191
+ default:
1192
+ NUITKA_CANNOT_GET_HERE("invalid type description");
1193
+ assert(false);
1194
+ }
1195
+
1196
+ w += 1;
1197
+ }
1198
+
1199
+ va_end(ap);
1200
+
1201
+ assert(t - frame_object->m_locals_storage <= Nuitka_Frame_GetSize(frame_object));
1202
+ }
1203
+
1204
+ // Make a dump of the active frame stack. For debugging purposes only.
1205
+ #if _DEBUG_FRAME
1206
+ void dumpFrameStack(void) {
1207
+ PyThreadState *tstate = PyThreadState_GET();
1208
+
1209
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
1210
+ FETCH_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
1211
+
1212
+ int total = 0;
1213
+
1214
+ #if PYTHON_VERSION < 0x3b0
1215
+ PyFrameObject *current = PyThreadState_GET()->frame;
1216
+ while (current != NULL) {
1217
+ total++;
1218
+ current = current->f_back;
1219
+ }
1220
+
1221
+ current = tstate->frame;
1222
+ #else
1223
+ _PyCFrame *current = tstate->cframe;
1224
+ while (current != NULL) {
1225
+ total++;
1226
+ current = current->previous;
1227
+ }
1228
+
1229
+ current = tstate->cframe;
1230
+ #endif
1231
+
1232
+ PRINT_STRING(">--------->\n");
1233
+
1234
+ while (current) {
1235
+ #if PYTHON_VERSION < 0x3b0
1236
+ PyObject *current_repr = PyObject_Str((PyObject *)current);
1237
+ PyObject *code_repr = PyObject_Str((PyObject *)current->f_code);
1238
+ #else
1239
+ PyObject *current_repr = NULL;
1240
+ if (current->current_frame->frame_obj != NULL) {
1241
+ current_repr = PyObject_Str((PyObject *)current->current_frame->frame_obj);
1242
+ } else {
1243
+ current_repr = const_str_empty;
1244
+ Py_INCREF(const_str_empty);
1245
+ }
1246
+ PyObject *code_repr = PyObject_Str((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(current->current_frame));
1247
+ #endif
1248
+
1249
+ PRINT_FORMAT("Frame stack %d: %s %d %s\n", total--, Nuitka_String_AsString(current_repr), Py_REFCNT(current),
1250
+ Nuitka_String_AsString(code_repr));
1251
+
1252
+ Py_DECREF(current_repr);
1253
+ Py_DECREF(code_repr);
1254
+
1255
+ #if PYTHON_VERSION < 0x3b0
1256
+ current = current->f_back;
1257
+ #else
1258
+ current = current->previous;
1259
+ #endif
1260
+ }
1261
+
1262
+ PRINT_STRING(">---------<\n");
1263
+
1264
+ RESTORE_ERROR_OCCURRED_STATE(tstate, &saved_exception_state);
1265
+ }
1266
+
1267
+ static void PRINT_UNCOMPILED_FRAME(char const *prefix, PyFrameObject *frame) {
1268
+ PRINT_STRING(prefix);
1269
+ PRINT_STRING(" ");
1270
+
1271
+ if (frame) {
1272
+ PyObject *frame_str = PyObject_Str((PyObject *)frame);
1273
+ PRINT_ITEM(frame_str);
1274
+ Py_DECREF(frame_str);
1275
+
1276
+ PyObject *code_object_str = PyObject_Repr((PyObject *)Nuitka_Frame_GetCodeObject(frame));
1277
+ PRINT_ITEM(code_object_str);
1278
+ Py_DECREF(code_object_str);
1279
+
1280
+ PRINT_REFCOUNT((PyObject *)frame);
1281
+ } else {
1282
+ PRINT_STRING("<NULL> no frame");
1283
+ }
1284
+
1285
+ PRINT_NEW_LINE();
1286
+ }
1287
+
1288
+ void PRINT_COMPILED_FRAME(char const *prefix, struct Nuitka_FrameObject *frame) {
1289
+ return PRINT_UNCOMPILED_FRAME(prefix, &frame->m_frame);
1290
+ }
1291
+
1292
+ void PRINT_INTERPRETER_FRAME(char const *prefix, Nuitka_ThreadStateFrameType *frame) {
1293
+ #if PYTHON_VERSION < 0x3b0
1294
+ PRINT_UNCOMPILED_FRAME(prefix, frame);
1295
+ #else
1296
+ PRINT_STRING(prefix);
1297
+ PRINT_STRING(" ");
1298
+
1299
+ if (frame) {
1300
+ PRINT_FORMAT("0x%lx ", frame);
1301
+
1302
+ PyObject *code_object_str = PyObject_Repr((PyObject *)Nuitka_InterpreterFrame_GetCodeObject(frame));
1303
+ PRINT_ITEM(code_object_str);
1304
+ Py_DECREF(code_object_str);
1305
+ } else {
1306
+ PRINT_STRING("<NULL> no frame");
1307
+ }
1308
+
1309
+ PRINT_NEW_LINE();
1310
+ #endif
1311
+ }
1312
+
1313
+ void PRINT_TOP_FRAME(char const *prefix) {
1314
+ PyThreadState *tstate = PyThreadState_GET();
1315
+
1316
+ #if PYTHON_VERSION < 0x3b0
1317
+ PRINT_UNCOMPILED_FRAME(prefix, tstate->frame);
1318
+ #else
1319
+ PRINT_INTERPRETER_FRAME(prefix, CURRENT_TSTATE_INTERPRETER_FRAME(tstate));
1320
+ #endif
1321
+ }
1322
+
1323
+ #endif
1324
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1325
+ // integrates with CPython, but also works on its own.
1326
+ //
1327
+ // Licensed under the Apache License, Version 2.0 (the "License");
1328
+ // you may not use this file except in compliance with the License.
1329
+ // You may obtain a copy of the License at
1330
+ //
1331
+ // http://www.apache.org/licenses/LICENSE-2.0
1332
+ //
1333
+ // Unless required by applicable law or agreed to in writing, software
1334
+ // distributed under the License is distributed on an "AS IS" BASIS,
1335
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1336
+ // See the License for the specific language governing permissions and
1337
+ // limitations under the License.