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,1483 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ This tool is generating code variants for helper codes from Jinja templates.
5
+
6
+ """
7
+
8
+ import nuitka.Options
9
+
10
+ nuitka.Options.is_full_compat = False
11
+
12
+ # isort:start
13
+
14
+ import os
15
+
16
+ import nuitka.specs.BuiltinBytesOperationSpecs
17
+ import nuitka.specs.BuiltinDictOperationSpecs
18
+ import nuitka.specs.BuiltinListOperationSpecs
19
+ import nuitka.specs.BuiltinStrOperationSpecs
20
+ import nuitka.specs.BuiltinUnicodeOperationSpecs
21
+ from nuitka.code_generation.BinaryOperationHelperDefinitions import (
22
+ getSpecializedBinaryOperations,
23
+ isCommutativeOperation,
24
+ parseTypesFromHelper,
25
+ )
26
+ from nuitka.code_generation.c_types.CTypePyObjectPointers import (
27
+ make_list_constant_direct_threshold,
28
+ make_list_constant_hinted_threshold,
29
+ )
30
+ from nuitka.code_generation.CallCodes import (
31
+ getQuickCallCode,
32
+ getQuickMethodCallCode,
33
+ getQuickMethodDescriptorCallCode,
34
+ getQuickMixedCallCode,
35
+ getTemplateCodeDeclaredFunction,
36
+ max_quick_call,
37
+ )
38
+ from nuitka.code_generation.ComparisonHelperDefinitions import (
39
+ getSpecializedComparisonOperations,
40
+ )
41
+ from nuitka.code_generation.ImportCodes import getImportModuleHardCodeName
42
+ from nuitka.containers.OrderedSets import OrderedSet
43
+ from nuitka.HardImportRegistry import (
44
+ hard_modules,
45
+ hard_modules_non_stdlib,
46
+ hard_modules_version,
47
+ )
48
+ from nuitka.nodes.shapes.BuiltinTypeShapes import (
49
+ tshape_bool,
50
+ tshape_bytes,
51
+ tshape_dict,
52
+ tshape_int,
53
+ tshape_list,
54
+ tshape_none,
55
+ tshape_str,
56
+ tshape_tuple,
57
+ )
58
+ from nuitka.utils.Jinja2 import getTemplateC
59
+
60
+ from .Common import (
61
+ formatArgs,
62
+ getMethodVariations,
63
+ python2_dict_methods,
64
+ python2_list_methods,
65
+ python2_str_methods,
66
+ python2_unicode_methods,
67
+ python3_bytes_methods,
68
+ python3_dict_methods,
69
+ python3_list_methods,
70
+ python3_str_methods,
71
+ withFileOpenedAndAutoFormatted,
72
+ writeLine,
73
+ )
74
+ from .CTypeDescriptions import (
75
+ bytes_desc,
76
+ c_bool_desc,
77
+ c_digit_desc,
78
+ c_float_desc,
79
+ c_long_desc,
80
+ dict_desc,
81
+ float_desc,
82
+ int_desc,
83
+ list_desc,
84
+ long_desc,
85
+ n_bool_desc,
86
+ n_ilong_desc,
87
+ object_desc,
88
+ set_desc,
89
+ str_desc,
90
+ tuple_desc,
91
+ unicode_desc,
92
+ )
93
+
94
+
95
+ def getDoExtensionUsingTemplateC(template_name):
96
+ return getTemplateC(
97
+ package_name="nuitka.code_generation",
98
+ template_subdir="templates_c",
99
+ template_name=template_name,
100
+ extensions=("jinja2.ext.do",),
101
+ )
102
+
103
+
104
+ class AlternativeTypeBase(object):
105
+ # TODO: Base class for alternative types
106
+ pass
107
+
108
+
109
+ class AlternativeIntOrClong(AlternativeTypeBase):
110
+ # TODO: Base class for alternative type int or clong.
111
+ pass
112
+
113
+
114
+ types = (
115
+ int_desc,
116
+ str_desc,
117
+ unicode_desc,
118
+ float_desc,
119
+ tuple_desc,
120
+ list_desc,
121
+ set_desc,
122
+ dict_desc,
123
+ bytes_desc,
124
+ long_desc,
125
+ c_long_desc,
126
+ c_digit_desc,
127
+ c_float_desc,
128
+ c_bool_desc,
129
+ n_bool_desc,
130
+ n_ilong_desc,
131
+ object_desc,
132
+ )
133
+
134
+
135
+ def findTypeFromCodeName(code_name):
136
+ for candidate in types:
137
+ if candidate.getHelperCodeName() == code_name:
138
+ return candidate
139
+
140
+
141
+ op_slot_codes = set()
142
+
143
+ # Reverse operation mapping.
144
+ reversed_args_compare_op_codes = {
145
+ "LE": "GE",
146
+ "LT": "GT",
147
+ "EQ": "EQ",
148
+ "NE": "NE",
149
+ "GT": "LT",
150
+ "GE": "LE",
151
+ }
152
+
153
+ inverse_compare_op_code = {
154
+ "LE": "GT",
155
+ "LT": "GE",
156
+ "EQ": "NE",
157
+ "NE": "EQ",
158
+ "GT": "LE",
159
+ "GE": "LT",
160
+ }
161
+
162
+ standard_template_context = {
163
+ "isCommutativeOperation": isCommutativeOperation,
164
+ "object_desc": object_desc,
165
+ "int_desc": int_desc,
166
+ "long_desc": long_desc,
167
+ "float_desc": float_desc,
168
+ "list_desc": list_desc,
169
+ "tuple_desc": tuple_desc,
170
+ "set_desc": set_desc,
171
+ "str_desc": str_desc,
172
+ "unicode_desc": unicode_desc,
173
+ "bytes_desc": bytes_desc,
174
+ "c_long_desc": c_long_desc,
175
+ "c_digit_desc": c_digit_desc,
176
+ "c_bool_desc": c_bool_desc,
177
+ "n_bool_desc": n_bool_desc,
178
+ "n_ilong_desc": n_ilong_desc,
179
+ }
180
+
181
+
182
+ def makeCompareSlotCode(operator, op_code, target, left, right, emit):
183
+ # Many variations to consider, pylint: disable=too-many-branches
184
+
185
+ key = operator, op_code, target, left, right
186
+ if key in op_slot_codes:
187
+ return
188
+
189
+ int_types_family = (int_desc, c_long_desc)
190
+ long_types_family = (int_desc, long_desc, c_long_desc, c_digit_desc)
191
+ float_types_family = (int_desc, long_desc, float_desc, c_long_desc, c_float_desc)
192
+
193
+ # Special casing variant that makes no sense and is actively avoided in the templates.
194
+ if {left, right} == {c_long_desc, c_digit_desc}:
195
+ return
196
+
197
+ if left in int_types_family and right in int_types_family:
198
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonInt.c.j2")
199
+ elif left in long_types_family and right in long_types_family:
200
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonLong.c.j2")
201
+ elif left in float_types_family and right in float_types_family:
202
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonFloat.c.j2")
203
+ elif left == int_desc:
204
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonInt.c.j2")
205
+ elif left == long_desc:
206
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonLong.c.j2")
207
+ elif left == float_desc:
208
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonFloat.c.j2")
209
+ elif left == tuple_desc:
210
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonTuple.c.j2")
211
+ elif left == list_desc:
212
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonList.c.j2")
213
+ # elif left == set_desc:
214
+ # template = env.get_template("HelperOperationComparisonSet.c.j2")
215
+ elif left == bytes_desc:
216
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonBytes.c.j2")
217
+ elif left == str_desc:
218
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonStr.c.j2")
219
+ elif left == unicode_desc:
220
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonUnicode.c.j2")
221
+ else:
222
+ return
223
+
224
+ assert left is not int_desc or right is not int_desc or target is not n_bool_desc
225
+
226
+ python_requirement = _parseRequirements(op_code, target, left, right, emit)
227
+
228
+ code = template.render(
229
+ operator=operator,
230
+ target=target,
231
+ left=left,
232
+ right=right,
233
+ op_code=op_code,
234
+ reversed_args_op_code=reversed_args_compare_op_codes[op_code],
235
+ inverse_compare_op_code=inverse_compare_op_code[op_code],
236
+ name=template.name,
237
+ **standard_template_context
238
+ )
239
+
240
+ emit(code)
241
+
242
+ if python_requirement:
243
+ emit("#endif")
244
+
245
+ op_slot_codes.add(key)
246
+
247
+
248
+ mul_repeats = set()
249
+
250
+
251
+ def makeMulRepeatCode(target, left, right, emit):
252
+ key = right, left
253
+ if key in mul_repeats:
254
+ return
255
+
256
+ template = getDoExtensionUsingTemplateC("HelperOperationMulRepeatSlot.c.j2")
257
+
258
+ code = template.render(target=target, left=left, right=right)
259
+
260
+ emit(code)
261
+
262
+ mul_repeats.add(key)
263
+
264
+
265
+ def _getNbSlotFromOperand(operand, op_code):
266
+ # pylint: disable=too-many-branches,too-many-return-statements
267
+
268
+ if operand == "+":
269
+ return "nb_add"
270
+ elif operand == "*":
271
+ return "nb_multiply"
272
+ elif operand == "-":
273
+ return "nb_subtract"
274
+ elif operand == "//":
275
+ return "nb_floor_divide"
276
+ elif operand == "/":
277
+ if op_code == "TRUEDIV":
278
+ return "nb_true_divide"
279
+ else:
280
+ return "nb_divide"
281
+ elif operand == "%":
282
+ return "nb_remainder"
283
+ elif operand == "**":
284
+ return "nb_power"
285
+ elif operand == "<<":
286
+ return "nb_lshift"
287
+ elif operand == ">>":
288
+ return "nb_rshift"
289
+ elif operand == "|":
290
+ return "nb_or"
291
+ elif operand == "&":
292
+ return "nb_and"
293
+ elif operand == "^":
294
+ return "nb_xor"
295
+ elif operand == "@":
296
+ return "nb_matrix_multiply"
297
+ elif operand == "divmod":
298
+ return "nb_divmod"
299
+ else:
300
+ assert False, operand
301
+
302
+
303
+ def _getNbInplaceSlotFromOperand(operand, op_code):
304
+ if operand == "divmod":
305
+ return None
306
+
307
+ nb_slot = _getNbSlotFromOperand(operand, op_code)
308
+ return nb_slot.replace("nb_", "nb_inplace_")
309
+
310
+
311
+ def _parseTypesFromHelper(helper_name):
312
+ (
313
+ target_code,
314
+ left_code,
315
+ right_code,
316
+ ) = parseTypesFromHelper(helper_name)
317
+
318
+ if target_code is not None:
319
+ target = findTypeFromCodeName(target_code)
320
+ assert target is not None, target_code
321
+
322
+ else:
323
+ target = None
324
+
325
+ left = findTypeFromCodeName(left_code)
326
+ right = findTypeFromCodeName(right_code)
327
+
328
+ return target_code, target, left, right
329
+
330
+
331
+ def _parseRequirements(op_code, target, left, right, emit):
332
+ python_requirement = set()
333
+
334
+ # There is an obsolete Python2 operation too, making sure it's guarded in code.
335
+ if op_code == "OLDDIV":
336
+ python_requirement.add(int_desc.python_requirement)
337
+ if op_code == "MATMULT":
338
+ python_requirement.add("PYTHON_VERSION >= 0x350")
339
+ if target is not None and target.python_requirement:
340
+ python_requirement.add(target.python_requirement)
341
+ if left.python_requirement:
342
+ python_requirement.add(left.python_requirement)
343
+ if right.python_requirement:
344
+ python_requirement.add(right.python_requirement)
345
+
346
+ if python_requirement:
347
+ assert len(python_requirement) == 1, (target, left, right)
348
+ python_requirement = python_requirement.pop()
349
+
350
+ emit("#if %s" % python_requirement)
351
+
352
+ return python_requirement
353
+
354
+
355
+ def makeHelperOperations(
356
+ template, in_place, helpers_set, operator, op_code, emit_h, emit_c, emit
357
+ ):
358
+ # Complexity comes natural, pylint: disable=too-many-locals
359
+
360
+ emit(
361
+ '/* C helpers for type %s "%s" (%s) operations */'
362
+ % ("in-place" if in_place else "specialized", operator, op_code)
363
+ )
364
+ emit()
365
+
366
+ for helper_name in helpers_set:
367
+ target_code, target, left, right = _parseTypesFromHelper(helper_name)
368
+ assert left is not None, helper_name
369
+
370
+ assert target is None or not in_place, (target_code, in_place)
371
+
372
+ python_requirement = _parseRequirements(op_code, target, left, right, emit)
373
+
374
+ emit(
375
+ '/* Code referring to "%s" corresponds to %s and "%s" to %s. */'
376
+ % (
377
+ left.getHelperCodeName(),
378
+ left.type_desc,
379
+ right.getHelperCodeName(),
380
+ right.type_desc,
381
+ )
382
+ )
383
+
384
+ if operator == "+":
385
+ sq_slot = "sq_concat"
386
+ elif operator == "*":
387
+ sq_slot = "sq_repeat"
388
+ else:
389
+ sq_slot = None
390
+
391
+ if in_place and sq_slot is not None:
392
+ sq_inplace_slot = sq_slot.replace("sq_", "sq_inplace_")
393
+ else:
394
+ sq_inplace_slot = None
395
+
396
+ code = template.render(
397
+ target=target,
398
+ left=left,
399
+ right=right,
400
+ op_code=op_code,
401
+ operator=operator,
402
+ nb_slot=_getNbSlotFromOperand(operator, op_code),
403
+ nb_inplace_slot=(
404
+ _getNbInplaceSlotFromOperand(operator, op_code) if in_place else None
405
+ ),
406
+ sq_slot=sq_slot,
407
+ sq_inplace_slot=sq_inplace_slot,
408
+ **standard_template_context
409
+ )
410
+
411
+ emit_c(code)
412
+ emit_h(getTemplateCodeDeclaredFunction(code))
413
+
414
+ if python_requirement:
415
+ emit("#endif")
416
+
417
+ emit()
418
+
419
+
420
+ def makeHelperComparisons(
421
+ template, helpers_set, operator, op_code, emit_h, emit_c, emit
422
+ ):
423
+ # Details to look for, pylint: disable=too-many-locals
424
+
425
+ emit(
426
+ '/* C helpers for type specialized "%s" (%s) comparisons */'
427
+ % (operator, op_code)
428
+ )
429
+ emit()
430
+
431
+ for target in (object_desc, c_bool_desc):
432
+ makeCompareSlotCode(operator, op_code, target, int_desc, int_desc, emit_c)
433
+
434
+ for helper_name in helpers_set:
435
+ assert helper_name.split("_")[:2] == ["RICH", "COMPARE"], (helper_name,)
436
+
437
+ # Filter for the operation.
438
+ if helper_name.split("_")[2] != op_code:
439
+ continue
440
+
441
+ _target_code, target, left, right = _parseTypesFromHelper(helper_name)
442
+
443
+ assert target is not None, helper_name
444
+ assert left is not None, helper_name
445
+ assert right is not None, helper_name
446
+
447
+ (
448
+ code,
449
+ helper_target,
450
+ type_desc1,
451
+ type_desc2,
452
+ _operand1,
453
+ _operand2,
454
+ ) = left.getTypeComparisonSpecializationHelper(
455
+ other=right,
456
+ op_code=op_code,
457
+ target=target,
458
+ operand1="operand1",
459
+ operand2="operand2",
460
+ )
461
+
462
+ if left.isDualType() or right.isDualType():
463
+ if op_code in ("LT", "LE", "EQ"):
464
+ makeCompareSlotCode(
465
+ operator,
466
+ op_code,
467
+ helper_target,
468
+ left.getDualType("C"),
469
+ right.getDualType("C"),
470
+ emit_c,
471
+ )
472
+ else:
473
+ if code:
474
+ makeCompareSlotCode(
475
+ operator, op_code, helper_target, type_desc1, type_desc2, emit_c
476
+ )
477
+
478
+ python_requirement = _parseRequirements(op_code, target, left, right, emit)
479
+
480
+ emit(
481
+ '/* Code referring to "%s" corresponds to %s and "%s" to %s. */'
482
+ % (
483
+ left.getHelperCodeName(),
484
+ left.type_desc,
485
+ right.getHelperCodeName(),
486
+ right.type_desc,
487
+ )
488
+ )
489
+
490
+ if not python_requirement:
491
+ is_py3_only = False
492
+ is_py2_only = False
493
+ elif python_requirement == "PYTHON_VERSION < 0x300":
494
+ is_py3_only = False
495
+ is_py2_only = True
496
+ elif python_requirement == "PYTHON_VERSION >= 0x300":
497
+ is_py3_only = True
498
+ is_py2_only = False
499
+ else:
500
+ assert False, python_requirement
501
+
502
+ code = template.render(
503
+ target=target,
504
+ left=left,
505
+ right=right,
506
+ op_code=op_code,
507
+ reversed_args_op_code=reversed_args_compare_op_codes[op_code],
508
+ inverse_compare_op_code=inverse_compare_op_code[op_code],
509
+ operator=operator,
510
+ is_py3_only=is_py3_only,
511
+ is_py2_only=is_py2_only,
512
+ object_desc=object_desc,
513
+ int_desc=int_desc,
514
+ n_bool_desc=n_bool_desc,
515
+ c_bool_desc=c_bool_desc,
516
+ c_long_desc=c_long_desc,
517
+ c_digit_desc=c_digit_desc,
518
+ n_ilong_desc=n_ilong_desc,
519
+ )
520
+
521
+ emit_c(code)
522
+ emit_h(getTemplateCodeDeclaredFunction(code))
523
+
524
+ if python_requirement:
525
+ emit("#endif")
526
+
527
+ emit()
528
+
529
+
530
+ def emitGenerationWarning(emit, template_name):
531
+ emit(
532
+ "/* WARNING, this code is GENERATED. Modify the template %s instead! */"
533
+ % template_name
534
+ )
535
+
536
+
537
+ def emitIDE(emit):
538
+ emit(
539
+ """
540
+ /* This file is included from another C file, help IDEs to still parse it on its own. */
541
+ #ifdef __IDE_ONLY__
542
+ #include "nuitka/prelude.h"
543
+ #endif
544
+ """
545
+ )
546
+
547
+
548
+ def _getSpecializedComparisonOperations(dual):
549
+ return OrderedSet(
550
+ helper
551
+ for helper in getSpecializedComparisonOperations()
552
+ if dual == any(part in helper for part in ("NILONG", "NFLOAT"))
553
+ )
554
+
555
+
556
+ def makeHelpersComparisonOperation(operand, op_code):
557
+ specialized_cmp_helpers_set = _getSpecializedComparisonOperations(dual=False)
558
+
559
+ template = getDoExtensionUsingTemplateC("HelperOperationComparison.c.j2")
560
+
561
+ filename_c = "nuitka/build/static_src/HelpersComparison%s.c" % op_code.capitalize()
562
+ filename_h = "nuitka/build/include/nuitka/helper/comparisons_%s.h" % op_code.lower()
563
+
564
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
565
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
566
+
567
+ def emit_h(*args):
568
+ writeLine(output_h, *args)
569
+
570
+ def emit_c(*args):
571
+ writeLine(output_c, *args)
572
+
573
+ def emit(*args):
574
+ emit_h(*args)
575
+ emit_c(*args)
576
+
577
+ emitGenerationWarning(emit, template.name)
578
+
579
+ emitIDE(emit)
580
+
581
+ filename_utils = filename_c[:-2] + "Utils.c"
582
+
583
+ if os.path.exists(filename_utils):
584
+ emit_c('#include "%s"' % os.path.basename(filename_utils))
585
+
586
+ makeHelperComparisons(
587
+ template,
588
+ specialized_cmp_helpers_set,
589
+ operand,
590
+ op_code,
591
+ emit_h,
592
+ emit_c,
593
+ emit,
594
+ )
595
+
596
+
597
+ def makeHelpersComparisonDualOperation(operand, op_code):
598
+ specialized_cmp_helpers_set = _getSpecializedComparisonOperations(dual=True)
599
+
600
+ template = getDoExtensionUsingTemplateC("HelperOperationComparisonDual.c.j2")
601
+
602
+ filename_c = (
603
+ "nuitka/build/static_src/HelpersComparisonDual%s.c" % op_code.capitalize()
604
+ )
605
+ filename_h = (
606
+ "nuitka/build/include/nuitka/helper/comparisons_dual_%s.h" % op_code.lower()
607
+ )
608
+
609
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
610
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
611
+
612
+ def emit_h(*args):
613
+ writeLine(output_h, *args)
614
+
615
+ def emit_c(*args):
616
+ writeLine(output_c, *args)
617
+
618
+ def emit(*args):
619
+ emit_h(*args)
620
+ emit_c(*args)
621
+
622
+ emitGenerationWarning(emit, template.name)
623
+
624
+ emitIDE(emit)
625
+
626
+ filename_utils = filename_c[:-2] + "Utils.c"
627
+
628
+ if os.path.exists(filename_utils):
629
+ emit_c('#include "%s"' % os.path.basename(filename_utils))
630
+
631
+ makeHelperComparisons(
632
+ template,
633
+ specialized_cmp_helpers_set,
634
+ operand,
635
+ op_code,
636
+ emit_h,
637
+ emit_c,
638
+ emit,
639
+ )
640
+
641
+
642
+ def _getSpecializedBinaryOperations(op_code, dual):
643
+ return OrderedSet(
644
+ helper
645
+ for helper in getSpecializedBinaryOperations(op_code)
646
+ if dual == any(part in helper for part in ("NILONG", "NFLOAT"))
647
+ )
648
+
649
+
650
+ def makeHelpersBinaryOperation(operator, op_code):
651
+ specialized_op_helpers_set = _getSpecializedBinaryOperations(
652
+ op_code=op_code,
653
+ dual=False,
654
+ )
655
+
656
+ template = getDoExtensionUsingTemplateC("HelperOperationBinary.c.j2")
657
+
658
+ filename_c = (
659
+ "nuitka/build/static_src/HelpersOperationBinary%s.c" % op_code.capitalize()
660
+ )
661
+ filename_h = (
662
+ "nuitka/build/include/nuitka/helper/operations_binary_%s.h" % op_code.lower()
663
+ )
664
+
665
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
666
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
667
+
668
+ def emit_h(*args):
669
+ writeLine(output_h, *args)
670
+
671
+ def emit_c(*args):
672
+ writeLine(output_c, *args)
673
+
674
+ def emit(*args):
675
+ emit_h(*args)
676
+ emit_c(*args)
677
+
678
+ emitGenerationWarning(emit, template.name)
679
+
680
+ emitIDE(emit)
681
+
682
+ filename_utils = filename_c[:-2] + "Utils.c"
683
+
684
+ if os.path.exists(filename_utils):
685
+ emit_c('#include "%s"' % os.path.basename(filename_utils))
686
+
687
+ makeHelperOperations(
688
+ template=template,
689
+ in_place=False,
690
+ helpers_set=specialized_op_helpers_set,
691
+ operator=operator,
692
+ op_code=op_code,
693
+ emit_h=emit_h,
694
+ emit_c=emit_c,
695
+ emit=emit,
696
+ )
697
+
698
+
699
+ def makeHelpersInplaceOperation(operator, op_code):
700
+ specialized_op_helpers_set = getSpecializedBinaryOperations("I" + op_code)
701
+
702
+ template = getDoExtensionUsingTemplateC("HelperOperationInplace.c.j2")
703
+
704
+ filename_c = (
705
+ "nuitka/build/static_src/HelpersOperationInplace%s.c" % op_code.capitalize()
706
+ )
707
+ filename_h = (
708
+ "nuitka/build/include/nuitka/helper/operations_inplace_%s.h" % op_code.lower()
709
+ )
710
+
711
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
712
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
713
+
714
+ def emit_h(*args):
715
+ writeLine(output_h, *args)
716
+
717
+ def emit_c(*args):
718
+ writeLine(output_c, *args)
719
+
720
+ def emit(*args):
721
+ emit_h(*args)
722
+ emit_c(*args)
723
+
724
+ emitGenerationWarning(emit, template.name)
725
+
726
+ emitIDE(emit)
727
+
728
+ filename_utils = filename_c[:-2] + "Utils.c"
729
+
730
+ if os.path.exists(filename_utils):
731
+ emit_c('#include "%s"' % os.path.basename(filename_utils))
732
+
733
+ makeHelperOperations(
734
+ template=template,
735
+ in_place=True,
736
+ helpers_set=specialized_op_helpers_set,
737
+ operator=operator,
738
+ op_code=op_code,
739
+ emit_h=emit_h,
740
+ emit_c=emit_c,
741
+ emit=emit,
742
+ )
743
+
744
+
745
+ def makeHelpersBinaryDualOperation(operand, op_code):
746
+ specialized_op_helpers_set = _getSpecializedBinaryOperations(
747
+ op_code=op_code,
748
+ dual=True,
749
+ )
750
+
751
+ template = getDoExtensionUsingTemplateC("HelperOperationBinaryDual.c.j2")
752
+
753
+ filename_c = (
754
+ "nuitka/build/static_src/HelpersOperationBinaryDual%s.c" % op_code.capitalize()
755
+ )
756
+ filename_h = (
757
+ "nuitka/build/include/nuitka/helper/operations_binary_dual_%s.h"
758
+ % op_code.lower()
759
+ )
760
+
761
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
762
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
763
+
764
+ def emit_h(*args):
765
+ writeLine(output_h, *args)
766
+
767
+ def emit_c(*args):
768
+ writeLine(output_c, *args)
769
+
770
+ def emit(*args):
771
+ emit_h(*args)
772
+ emit_c(*args)
773
+
774
+ emitGenerationWarning(emit, template.name)
775
+
776
+ emitIDE(emit)
777
+
778
+ filename_utils = filename_c[:-2] + "Utils.c"
779
+
780
+ if os.path.exists(filename_utils):
781
+ emit_c('#include "%s"' % os.path.basename(filename_utils))
782
+
783
+ makeHelperOperations(
784
+ template=template,
785
+ in_place=False,
786
+ helpers_set=specialized_op_helpers_set,
787
+ operator=operand,
788
+ op_code=op_code,
789
+ emit_h=emit_h,
790
+ emit_c=emit_c,
791
+ emit=emit,
792
+ )
793
+
794
+
795
+ def makeHelpersImportHard():
796
+ filename_c = "nuitka/build/static_src/HelpersImportHard.c"
797
+ filename_h = "nuitka/build/include/nuitka/helper/import_hard.h"
798
+
799
+ template = getDoExtensionUsingTemplateC("HelperImportHard.c.j2")
800
+
801
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
802
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
803
+
804
+ def emit_h(*args):
805
+ writeLine(output_h, *args)
806
+
807
+ def emit_c(*args):
808
+ writeLine(output_c, *args)
809
+
810
+ def emit(*args):
811
+ emit_h(*args)
812
+ emit_c(*args)
813
+
814
+ emitGenerationWarning(emit, template.name)
815
+
816
+ emitIDE(emit)
817
+
818
+ for module_name in sorted(hard_modules):
819
+ makeHelperImportModuleHard(
820
+ template,
821
+ module_name,
822
+ emit_h,
823
+ emit_c,
824
+ emit,
825
+ )
826
+
827
+
828
+ def makeHelperImportModuleHard(template, module_name, emit_h, emit_c, emit):
829
+ emit('/* C helper for hard import of module "%s" import. */' % module_name)
830
+
831
+ python_min_max_os_version = hard_modules_version.get(module_name)
832
+
833
+ if python_min_max_os_version is not None:
834
+ assert len(python_min_max_os_version) == 3, module_name
835
+ python_min_version, python_max_version, os_limit = python_min_max_os_version
836
+
837
+ parts = []
838
+
839
+ if python_min_version is not None:
840
+ parts.append("PYTHON_VERSION >= %s" % hex(python_min_version))
841
+ if python_max_version is not None:
842
+ parts.append("PYTHON_VERSION < %s" % hex(python_max_version))
843
+ if os_limit is not None:
844
+ parts.append({"win32": "defined(_WIN32)"}[os_limit])
845
+
846
+ python_requirement = " && ".join(parts)
847
+
848
+ else:
849
+ python_requirement = None
850
+
851
+ if python_requirement:
852
+ emit("#if %s" % python_requirement)
853
+
854
+ code = template.render(
855
+ module_name=module_name,
856
+ module_code_name=getImportModuleHardCodeName(module_name),
857
+ name=template.name,
858
+ target=object_desc,
859
+ is_stdlib=module_name not in hard_modules_non_stdlib,
860
+ )
861
+
862
+ emit_c(code)
863
+ emit_h(getTemplateCodeDeclaredFunction(code))
864
+
865
+ if python_requirement:
866
+ emit("#endif")
867
+
868
+ emit()
869
+
870
+
871
+ def makeHelperCalls():
872
+ filename_c = "nuitka/build/static_src/HelpersCallingGenerated.c"
873
+ filename_h = "nuitka/build/include/nuitka/helper/calling_generated.h"
874
+
875
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
876
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
877
+
878
+ def emit_h(*args):
879
+ assert args[0] != "extern "
880
+ writeLine(output_h, *args)
881
+
882
+ def emit_c(*args):
883
+ writeLine(output_c, *args)
884
+
885
+ def emit(*args):
886
+ emit_h(*args)
887
+ emit_c(*args)
888
+
889
+ template = getTemplateC(
890
+ "nuitka.code_generation", "CodeTemplateCallsPositional.c.j2"
891
+ )
892
+
893
+ emitGenerationWarning(emit, template.name)
894
+
895
+ emitIDE(emit)
896
+
897
+ for args_count in range(max_quick_call + 1):
898
+ code = getQuickCallCode(args_count=args_count, has_tuple_arg=False)
899
+
900
+ emit_c(code)
901
+ emit_h(getTemplateCodeDeclaredFunction(code))
902
+
903
+ if args_count >= 1:
904
+ code = getQuickCallCode(args_count=args_count, has_tuple_arg=True)
905
+
906
+ emit_c(code)
907
+ emit_h(getTemplateCodeDeclaredFunction(code))
908
+
909
+ template = getTemplateC(
910
+ "nuitka.code_generation", "CodeTemplateCallsMixed.c.j2"
911
+ )
912
+
913
+ # Only keywords, but not positional arguments, via split args.
914
+ code = getQuickMixedCallCode(
915
+ args_count=0,
916
+ has_tuple_arg=False,
917
+ has_dict_values=True,
918
+ )
919
+
920
+ emit_c(code)
921
+ emit_h(getTemplateCodeDeclaredFunction(code))
922
+
923
+ for args_count in range(1, max_quick_call + 1):
924
+ for has_tuple_arg in (False, True):
925
+ for has_dict_values in (False, True):
926
+ # We do not do that.
927
+ if not has_dict_values and has_tuple_arg:
928
+ continue
929
+
930
+ code = getQuickMixedCallCode(
931
+ args_count=args_count,
932
+ has_tuple_arg=has_tuple_arg,
933
+ has_dict_values=has_dict_values,
934
+ )
935
+
936
+ emit_c(code)
937
+ emit_h(getTemplateCodeDeclaredFunction(code))
938
+
939
+ for args_count in range(1, 5):
940
+ code = getQuickMethodDescriptorCallCode(args_count=args_count)
941
+
942
+ emit_c(code)
943
+ emit_h(getTemplateCodeDeclaredFunction(code))
944
+
945
+ for args_count in range(max_quick_call + 1):
946
+ code = getQuickMethodCallCode(args_count=args_count)
947
+
948
+ emit_c(code)
949
+ emit_h(getTemplateCodeDeclaredFunction(code))
950
+
951
+
952
+ def makeHelperLists():
953
+ filename_c = "nuitka/build/static_src/HelpersListsGenerated.c"
954
+ filename_h = "nuitka/build/include/nuitka/helper/lists_generated.h"
955
+
956
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
957
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
958
+
959
+ def emit_h(*args):
960
+ assert args[0] != "extern "
961
+ writeLine(output_h, *args)
962
+
963
+ def emit_c(*args):
964
+ writeLine(output_c, *args)
965
+
966
+ def emit(*args):
967
+ emit_h(*args)
968
+ emit_c(*args)
969
+
970
+ template = getTemplateC(
971
+ "nuitka.code_generation", "CodeTemplateMakeListSmall.c.j2"
972
+ )
973
+
974
+ emitGenerationWarning(emit, template.name)
975
+
976
+ emitIDE(emit)
977
+
978
+ for args_count in range(1, make_list_constant_direct_threshold):
979
+ code = template.render(args_count=args_count)
980
+
981
+ emit_c(code)
982
+ emit_h(getTemplateCodeDeclaredFunction(code))
983
+
984
+ template = getTemplateC(
985
+ "nuitka.code_generation", "CodeTemplateMakeListHinted.c.j2"
986
+ )
987
+
988
+ for args_count in range(
989
+ make_list_constant_direct_threshold, make_list_constant_hinted_threshold
990
+ ):
991
+ code = template.render(args_count=args_count)
992
+
993
+ emit_c(code)
994
+ emit_h(getTemplateCodeDeclaredFunction(code))
995
+
996
+
997
+ def _makeHelperBuiltinTypeAttributes(
998
+ type_prefix, type_name, python2_methods, python3_methods, emit_c, emit_h
999
+ ):
1000
+ # many cases to deal with, pylint: disable=too-many-branches
1001
+
1002
+ def getVarName(method_name):
1003
+ return "%s_builtin_%s" % (type_prefix, method_name)
1004
+
1005
+ for method_name in sorted(set(python2_methods + python3_methods)):
1006
+ is_public = method_name in (
1007
+ "format",
1008
+ "fromkeys",
1009
+ )
1010
+
1011
+ if method_name in python2_methods and method_name not in python3_methods:
1012
+ emit_c("#if PYTHON_VERSION < 0x300")
1013
+ if is_public:
1014
+ emit_h("#if PYTHON_VERSION < 0x300")
1015
+ needs_endif = True
1016
+ elif method_name not in python2_methods and method_name in python3_methods:
1017
+ emit_c("#if PYTHON_VERSION >= 0x300")
1018
+ if is_public:
1019
+ emit_h("#if PYTHON_VERSION >= 0x300")
1020
+ needs_endif = True
1021
+ else:
1022
+ needs_endif = False
1023
+
1024
+ if not is_public:
1025
+ emit_c("static")
1026
+
1027
+ emit_c("PyObject *%s = NULL;" % getVarName(method_name))
1028
+
1029
+ if is_public:
1030
+ emit_h("extern PyObject *%s;" % getVarName(method_name))
1031
+
1032
+ if needs_endif:
1033
+ emit_c("#endif")
1034
+
1035
+ if is_public:
1036
+ emit_h("#endif")
1037
+
1038
+ if not python3_methods:
1039
+ emit_c("#if PYTHON_VERSION < 0x300")
1040
+ if not python2_methods:
1041
+ emit_c("#if PYTHON_VERSION >= 0x300")
1042
+
1043
+ emit_c("static void _init%sBuiltinMethods(void) {" % type_prefix.capitalize())
1044
+ for method_name in sorted(set(python2_methods + python3_methods)):
1045
+ if (
1046
+ method_name in python2_methods
1047
+ and method_name not in python3_methods
1048
+ and python3_methods
1049
+ ):
1050
+ emit_c("#if PYTHON_VERSION < 0x300")
1051
+ needs_endif = True
1052
+ elif (
1053
+ method_name not in python2_methods
1054
+ and method_name in python3_methods
1055
+ and python2_methods
1056
+ ):
1057
+ emit_c("#if PYTHON_VERSION >= 0x300")
1058
+ needs_endif = True
1059
+ else:
1060
+ needs_endif = False
1061
+
1062
+ emit_c(
1063
+ '%s = PyObject_GetAttrString((PyObject *)&%s, "%s");'
1064
+ % (getVarName(method_name), type_name, method_name)
1065
+ )
1066
+
1067
+ if needs_endif:
1068
+ emit_c("#endif")
1069
+
1070
+ emit_c("}")
1071
+
1072
+ if not python2_methods or not python3_methods:
1073
+ emit_c("#endif")
1074
+
1075
+
1076
+ generate_builtin_type_operations = [
1077
+ # TODO: For these, we would need an implementation for adding/deleting dictionary values. That
1078
+ # has turned out to be too hard so far and these are very good friends, not doing hashing
1079
+ # multiple times when reading and writing, so can't do it unless we add something for the
1080
+ # Nuitka-Python eventually.
1081
+ (
1082
+ "tshape_dict",
1083
+ dict_desc,
1084
+ nuitka.specs.BuiltinDictOperationSpecs,
1085
+ ("pop", "popitem", "setdefault"),
1086
+ ),
1087
+ (
1088
+ "tshape_list",
1089
+ list_desc,
1090
+ nuitka.specs.BuiltinListOperationSpecs,
1091
+ (
1092
+ "pop",
1093
+ # TODO: template doesn't do positional only yet.
1094
+ # "sort",
1095
+ ),
1096
+ ),
1097
+ # TODO: These are very complex things using "string lib" code in CPython,
1098
+ # that we do not have easy access to, but we might one day for Nuitka-Python
1099
+ # expose it for the static linking of it and then we could in fact call
1100
+ # these directly.
1101
+ (
1102
+ "tshape_str",
1103
+ str_desc,
1104
+ nuitka.specs.BuiltinStrOperationSpecs,
1105
+ (
1106
+ "strip",
1107
+ "rstrip",
1108
+ "lstrip",
1109
+ "partition",
1110
+ "rpartition",
1111
+ "find",
1112
+ "rfind",
1113
+ "index",
1114
+ "rindex",
1115
+ "capitalize",
1116
+ "upper",
1117
+ "lower",
1118
+ "swapcase",
1119
+ "title",
1120
+ "isalnum",
1121
+ "isalpha",
1122
+ "isdigit",
1123
+ "islower",
1124
+ "isupper",
1125
+ "isspace",
1126
+ "istitle",
1127
+ "split",
1128
+ "rsplit",
1129
+ "startswith",
1130
+ "endswith",
1131
+ "replace",
1132
+ "encode",
1133
+ "decode",
1134
+ "count",
1135
+ "expandtabs",
1136
+ "translate",
1137
+ "ljust",
1138
+ "rjust",
1139
+ "center",
1140
+ "zfill",
1141
+ "splitlines",
1142
+ ),
1143
+ ),
1144
+ # TODO: This is using Python2 spec module for Python3 strings, that will be a problem down the
1145
+ # road, when version specifics come in.
1146
+ (
1147
+ "tshape_unicode",
1148
+ unicode_desc,
1149
+ nuitka.specs.BuiltinUnicodeOperationSpecs,
1150
+ (
1151
+ "strip",
1152
+ "rstrip",
1153
+ "lstrip",
1154
+ "find",
1155
+ "rfind",
1156
+ "index",
1157
+ "rindex",
1158
+ "capitalize",
1159
+ "upper",
1160
+ "lower",
1161
+ "swapcase",
1162
+ "title",
1163
+ "isalnum",
1164
+ "isalpha",
1165
+ "isdigit",
1166
+ "islower",
1167
+ "isupper",
1168
+ "isspace",
1169
+ "istitle",
1170
+ "split",
1171
+ "rsplit",
1172
+ "startswith",
1173
+ "endswith",
1174
+ "replace",
1175
+ "encode",
1176
+ "count",
1177
+ "expandtabs",
1178
+ "translate",
1179
+ "ljust",
1180
+ "rjust",
1181
+ "center",
1182
+ "zfill",
1183
+ "splitlines",
1184
+ ),
1185
+ ),
1186
+ (
1187
+ "tshape_bytes",
1188
+ bytes_desc,
1189
+ nuitka.specs.BuiltinBytesOperationSpecs,
1190
+ (
1191
+ "capitalize",
1192
+ "center",
1193
+ "count",
1194
+ "decode",
1195
+ "endswith",
1196
+ "expandtabs",
1197
+ "find",
1198
+ "index",
1199
+ "isalnum",
1200
+ "isalpha",
1201
+ "isdigit",
1202
+ "islower",
1203
+ "isspace",
1204
+ "istitle",
1205
+ "isupper",
1206
+ "join",
1207
+ "ljust",
1208
+ "lower",
1209
+ "lstrip",
1210
+ "partition",
1211
+ "replace",
1212
+ "rfind",
1213
+ "rindex",
1214
+ "rjust",
1215
+ "rpartition",
1216
+ "rsplit",
1217
+ "rstrip",
1218
+ "split",
1219
+ "splitlines",
1220
+ "startswith",
1221
+ "strip",
1222
+ "swapcase",
1223
+ "title",
1224
+ "translate",
1225
+ "upper",
1226
+ "zfill",
1227
+ ),
1228
+ ),
1229
+ ]
1230
+
1231
+
1232
+ def makeDictCopyHelperCodes():
1233
+ filename_c = "nuitka/build/static_src/HelpersDictionariesGenerated.c"
1234
+
1235
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
1236
+
1237
+ def emit(*args):
1238
+ writeLine(output_c, *args)
1239
+
1240
+ emitIDE(emit)
1241
+
1242
+ template = getDoExtensionUsingTemplateC("HelperDictionaryCopy.c.j2")
1243
+
1244
+ emitGenerationWarning(emit, template.name)
1245
+
1246
+ code = template.render()
1247
+
1248
+ emit(code)
1249
+
1250
+
1251
+ def _getCheckForShape(shape):
1252
+ # Return driven for better debugging experience, pylint: disable=too-many-return-statements
1253
+
1254
+ if shape is tshape_str:
1255
+ return "Nuitka_String_CheckExact"
1256
+ elif shape is tshape_list:
1257
+ return "PyList_CheckExact"
1258
+ elif shape is tshape_tuple:
1259
+ return "PyTuple_CheckExact"
1260
+ elif shape is tshape_int:
1261
+ # TODO: Not defined a version independent one yet in prelude.h
1262
+ return None
1263
+ elif shape is tshape_bool:
1264
+ return "PyBool_Check"
1265
+ elif shape is tshape_none:
1266
+ # TODO: Not defined one in prelude.h yet
1267
+ return None
1268
+ elif shape is tshape_dict:
1269
+ return "PyDict_CheckExact"
1270
+ elif shape is tshape_bytes:
1271
+ return "PyBytes_CheckExact"
1272
+ else:
1273
+ assert False, shape
1274
+
1275
+
1276
+ def makeHelperBuiltinTypeMethods():
1277
+ # Many details, pylint: disable=too-many-locals
1278
+ filename_c = "nuitka/build/static_src/HelpersBuiltinTypeMethods.c"
1279
+ filename_h = "nuitka/build/include/nuitka/helper/operations_builtin_types.h"
1280
+ with withFileOpenedAndAutoFormatted(filename_c) as output_c:
1281
+ with withFileOpenedAndAutoFormatted(filename_h) as output_h:
1282
+
1283
+ def emit_h(*args):
1284
+ writeLine(output_h, *args)
1285
+
1286
+ def emit_c(*args):
1287
+ writeLine(output_c, *args)
1288
+
1289
+ def emit(*args):
1290
+ emit_h(*args)
1291
+ emit_c(*args)
1292
+
1293
+ template = getDoExtensionUsingTemplateC("HelperBuiltinMethodOperation.c.j2")
1294
+
1295
+ emitGenerationWarning(emit, template.name)
1296
+
1297
+ emitIDE(emit)
1298
+
1299
+ # TODO: Isn't this creating more than necessary, we don't use all of them, e.g.
1300
+ # not with lists and dicts.
1301
+ _makeHelperBuiltinTypeAttributes(
1302
+ "str", "PyString_Type", python2_str_methods, (), emit_c, emit_h
1303
+ )
1304
+ _makeHelperBuiltinTypeAttributes(
1305
+ "bytes", "PyBytes_Type", (), python3_bytes_methods, emit_c, emit_h
1306
+ )
1307
+ _makeHelperBuiltinTypeAttributes(
1308
+ "unicode",
1309
+ "PyUnicode_Type",
1310
+ python2_unicode_methods,
1311
+ python3_str_methods,
1312
+ emit_c,
1313
+ emit_h,
1314
+ )
1315
+ _makeHelperBuiltinTypeAttributes(
1316
+ "dict",
1317
+ "PyDict_Type",
1318
+ python2_dict_methods,
1319
+ python3_dict_methods,
1320
+ emit_c,
1321
+ emit_h,
1322
+ )
1323
+ _makeHelperBuiltinTypeAttributes(
1324
+ "list",
1325
+ "PyList_Type",
1326
+ python2_list_methods,
1327
+ python3_list_methods,
1328
+ emit_c,
1329
+ emit_h,
1330
+ )
1331
+
1332
+ for (
1333
+ shape_name,
1334
+ type_desc,
1335
+ spec_module,
1336
+ method_names,
1337
+ ) in generate_builtin_type_operations:
1338
+ if type_desc.python_requirement:
1339
+ emit("#if %s" % type_desc.python_requirement)
1340
+
1341
+ for method_name in sorted(method_names):
1342
+ (
1343
+ present,
1344
+ arg_names,
1345
+ _arg_tests,
1346
+ arg_name_mapping,
1347
+ arg_counts,
1348
+ result_shape,
1349
+ ) = getMethodVariations(
1350
+ spec_module=spec_module,
1351
+ shape_name=shape_name,
1352
+ method_name=method_name,
1353
+ must_exist=True,
1354
+ )
1355
+
1356
+ assert present, method_name
1357
+
1358
+ def formatArgumentDeclaration(arg_types, arg_names, starting):
1359
+ return formatArgs(
1360
+ [
1361
+ arg_type.getVariableDecl(arg_name)
1362
+ for arg_type, arg_name in zip(arg_types, arg_names)
1363
+ ],
1364
+ starting=starting,
1365
+ )
1366
+
1367
+ # Function is used immediately in same loop, pylint: disable=cell-var-from-loop
1368
+ def replaceArgNameForC(arg_name):
1369
+ if arg_name in arg_name_mapping:
1370
+ arg_name = arg_name_mapping[arg_name]
1371
+
1372
+ if arg_name in ("default", "new", "delete"):
1373
+ return arg_name + "_value"
1374
+ else:
1375
+ return arg_name
1376
+
1377
+ for arg_count in arg_counts:
1378
+ variant_args = [
1379
+ replaceArgNameForC(arg_name)
1380
+ for arg_name in arg_names[:arg_count]
1381
+ ]
1382
+
1383
+ code = template.render(
1384
+ object_desc=object_desc,
1385
+ builtin_type=type_desc,
1386
+ builtin_arg_name=type_desc.type_name,
1387
+ method_name=method_name,
1388
+ api_suffix=(
1389
+ str(arg_count + 1) if len(arg_counts) > 1 else ""
1390
+ ),
1391
+ arg_names=variant_args,
1392
+ arg_types=[object_desc] * len(variant_args),
1393
+ formatArgumentDeclaration=formatArgumentDeclaration,
1394
+ extra_check=(
1395
+ _getCheckForShape(result_shape)
1396
+ if result_shape is not None
1397
+ else None
1398
+ ),
1399
+ zip=zip,
1400
+ len=len,
1401
+ name=template.name,
1402
+ )
1403
+
1404
+ emit_c(code)
1405
+ emit_h(getTemplateCodeDeclaredFunction(code))
1406
+ if type_desc.python_requirement:
1407
+ emit("#endif")
1408
+
1409
+
1410
+ def main():
1411
+ makeHelpersBinaryDualOperation("+", "ADD")
1412
+
1413
+ makeDictCopyHelperCodes()
1414
+
1415
+ # Cover many things once first, then cover all for quicker turnaround during development.
1416
+ makeHelpersBinaryOperation("+", "ADD")
1417
+ makeHelpersInplaceOperation("+", "ADD")
1418
+
1419
+ makeHelperBuiltinTypeMethods()
1420
+
1421
+ makeHelpersImportHard()
1422
+
1423
+ makeHelperCalls()
1424
+ makeHelperLists()
1425
+
1426
+ makeHelpersBinaryOperation("-", "SUB")
1427
+ makeHelpersBinaryOperation("*", "MULT")
1428
+ makeHelpersBinaryOperation("%", "MOD")
1429
+ makeHelpersBinaryOperation("|", "BITOR")
1430
+ makeHelpersBinaryOperation("&", "BITAND")
1431
+ makeHelpersBinaryOperation("^", "BITXOR")
1432
+ makeHelpersBinaryOperation("<<", "LSHIFT")
1433
+ makeHelpersBinaryOperation(">>", "RSHIFT")
1434
+ makeHelpersBinaryOperation("//", "FLOORDIV")
1435
+ makeHelpersBinaryOperation("/", "TRUEDIV")
1436
+ makeHelpersBinaryOperation("/", "OLDDIV")
1437
+ makeHelpersBinaryOperation("divmod", "DIVMOD")
1438
+ makeHelpersBinaryOperation("**", "POW")
1439
+ makeHelpersBinaryOperation("@", "MATMULT")
1440
+
1441
+ makeHelpersInplaceOperation("-", "SUB")
1442
+ makeHelpersInplaceOperation("*", "MULT")
1443
+ makeHelpersInplaceOperation("%", "MOD")
1444
+ makeHelpersInplaceOperation("|", "BITOR")
1445
+ makeHelpersInplaceOperation("&", "BITAND")
1446
+ makeHelpersInplaceOperation("^", "BITXOR")
1447
+ makeHelpersInplaceOperation("<<", "LSHIFT")
1448
+ makeHelpersInplaceOperation(">>", "RSHIFT")
1449
+ makeHelpersInplaceOperation("//", "FLOORDIV")
1450
+ makeHelpersInplaceOperation("/", "TRUEDIV")
1451
+ makeHelpersInplaceOperation("/", "OLDDIV")
1452
+ makeHelpersInplaceOperation("**", "POW")
1453
+ makeHelpersInplaceOperation("@", "MATMULT")
1454
+
1455
+ makeHelpersComparisonOperation("==", "EQ")
1456
+ makeHelpersComparisonOperation("!=", "NE")
1457
+ makeHelpersComparisonOperation("<=", "LE")
1458
+ makeHelpersComparisonOperation(">=", "GE")
1459
+ makeHelpersComparisonOperation(">", "GT")
1460
+ makeHelpersComparisonOperation("<", "LT")
1461
+
1462
+ makeHelpersComparisonDualOperation("==", "EQ")
1463
+ makeHelpersComparisonDualOperation("!=", "NE")
1464
+ makeHelpersComparisonDualOperation("<=", "LE")
1465
+ makeHelpersComparisonDualOperation(">=", "GE")
1466
+ makeHelpersComparisonDualOperation(">", "GT")
1467
+ makeHelpersComparisonDualOperation("<", "LT")
1468
+
1469
+
1470
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1471
+ # integrates with CPython, but also works on its own.
1472
+ #
1473
+ # Licensed under the Apache License, Version 2.0 (the "License");
1474
+ # you may not use this file except in compliance with the License.
1475
+ # You may obtain a copy of the License at
1476
+ #
1477
+ # http://www.apache.org/licenses/LICENSE-2.0
1478
+ #
1479
+ # Unless required by applicable law or agreed to in writing, software
1480
+ # distributed under the License is distributed on an "AS IS" BASIS,
1481
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1482
+ # See the License for the specific language governing permissions and
1483
+ # limitations under the License.