Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.4.8__cp311-cp311-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 (704) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.4.8.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/METADATA +4 -3
  4. Nuitka_winsvc-2.4.8.dist-info/RECORD +954 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +18 -17
  7. nuitka/BytecodeCaching.py +24 -20
  8. nuitka/Bytecodes.py +23 -19
  9. nuitka/CacheCleanup.py +28 -23
  10. nuitka/Constants.py +19 -17
  11. nuitka/Errors.py +23 -17
  12. nuitka/HardImportRegistry.py +400 -0
  13. nuitka/MainControl.py +200 -112
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +368 -175
  16. nuitka/Options.py +632 -213
  17. nuitka/OutputDirectories.py +40 -21
  18. nuitka/PostProcessing.py +73 -50
  19. nuitka/Progress.py +58 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +106 -19
  23. nuitka/Serialization.py +68 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +108 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +21 -7
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +202 -140
  33. nuitka/build/CCompilerVersion.scons +39 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +50 -54
  36. nuitka/build/SconsCaching.py +93 -90
  37. nuitka/build/SconsCompilerSettings.py +157 -69
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +154 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +147 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +105 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +18 -18
  47. nuitka/build/include/nuitka/checkers.h +17 -18
  48. nuitka/build/include/nuitka/checksum_tools.h +14 -19
  49. nuitka/build/include/nuitka/compiled_asyncgen.h +18 -18
  50. nuitka/build/include/nuitka/compiled_cell.h +33 -18
  51. nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
  52. nuitka/build/include/nuitka/compiled_frame.h +91 -53
  53. nuitka/build/include/nuitka/compiled_function.h +42 -20
  54. nuitka/build/include/nuitka/compiled_generator.h +24 -18
  55. nuitka/build/include/nuitka/compiled_method.h +17 -18
  56. nuitka/build/include/nuitka/constants.h +29 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/environment_variables.h +30 -0
  59. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  60. nuitka/build/include/nuitka/exception_groups.h +23 -26
  61. nuitka/build/include/nuitka/exceptions.h +593 -190
  62. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  63. nuitka/build/include/nuitka/freelists.h +38 -18
  64. nuitka/build/include/nuitka/helper/attributes.h +24 -18
  65. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  68. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  74. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  75. nuitka/build/include/nuitka/helper/complex.h +17 -17
  76. nuitka/build/include/nuitka/helper/dictionaries.h +24 -22
  77. nuitka/build/include/nuitka/helper/floats.h +17 -18
  78. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  79. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  80. nuitka/build/include/nuitka/helper/ints.h +32 -20
  81. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  82. nuitka/build/include/nuitka/helper/lists.h +26 -24
  83. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  84. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  85. nuitka/build/include/nuitka/helper/operations.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  116. nuitka/build/include/nuitka/helper/raising.h +29 -17
  117. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  118. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  119. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  120. nuitka/build/include/nuitka/helper/sets.h +11 -12
  121. nuitka/build/include/nuitka/helper/slices.h +31 -25
  122. nuitka/build/include/nuitka/helper/strings.h +16 -17
  123. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  124. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  125. nuitka/build/include/nuitka/helpers.h +38 -20
  126. nuitka/build/include/nuitka/importing.h +28 -21
  127. nuitka/build/include/nuitka/jit_sources.h +25 -0
  128. nuitka/build/include/nuitka/prelude.h +128 -46
  129. nuitka/build/include/nuitka/printing.h +22 -17
  130. nuitka/build/include/nuitka/python_pgo.h +19 -18
  131. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  132. nuitka/build/include/nuitka/threading.h +32 -33
  133. nuitka/build/include/nuitka/tracing.h +28 -18
  134. nuitka/build/include/nuitka/type_aliases.h +27 -0
  135. nuitka/build/include/nuitka/unfreezing.h +29 -23
  136. nuitka/build/inline_copy/bin/scons.py +14 -0
  137. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  138. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  139. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  140. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  141. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  142. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  143. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  144. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  145. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  146. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  147. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  160. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  161. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  162. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  163. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  164. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  165. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  166. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  167. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  168. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  169. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  170. nuitka/build/static_src/CompiledAsyncgenType.c +176 -182
  171. nuitka/build/static_src/CompiledCellType.c +63 -40
  172. nuitka/build/static_src/CompiledCodeHelpers.c +181 -128
  173. nuitka/build/static_src/CompiledCoroutineType.c +196 -203
  174. nuitka/build/static_src/CompiledFrameType.c +287 -133
  175. nuitka/build/static_src/CompiledFunctionType.c +389 -95
  176. nuitka/build/static_src/CompiledGeneratorType.c +376 -252
  177. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +185 -198
  178. nuitka/build/static_src/CompiledMethodType.c +83 -71
  179. nuitka/build/static_src/HelpersAllocator.c +88 -19
  180. nuitka/build/static_src/HelpersAttributes.c +33 -54
  181. nuitka/build/static_src/HelpersBuiltin.c +43 -33
  182. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  183. nuitka/build/static_src/HelpersBytes.c +19 -20
  184. nuitka/build/static_src/HelpersCalling.c +33 -30
  185. nuitka/build/static_src/HelpersCallingGenerated.c +1000 -181
  186. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  187. nuitka/build/static_src/HelpersClasses.c +17 -17
  188. nuitka/build/static_src/HelpersComparisonEq.c +518 -492
  189. nuitka/build/static_src/HelpersComparisonEqUtils.c +21 -19
  190. nuitka/build/static_src/HelpersComparisonGe.c +513 -497
  191. nuitka/build/static_src/HelpersComparisonGt.c +512 -496
  192. nuitka/build/static_src/HelpersComparisonLe.c +513 -497
  193. nuitka/build/static_src/HelpersComparisonLt.c +512 -496
  194. nuitka/build/static_src/HelpersComparisonNe.c +520 -492
  195. nuitka/build/static_src/HelpersConsole.c +96 -0
  196. nuitka/build/static_src/HelpersConstantsBlob.c +542 -519
  197. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  198. nuitka/build/static_src/HelpersDictionaries.c +51 -29
  199. nuitka/build/static_src/HelpersDictionariesGenerated.c +177 -68
  200. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  201. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  202. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  203. nuitka/build/static_src/HelpersExceptions.c +161 -50
  204. nuitka/build/static_src/HelpersFiles.c +37 -17
  205. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  206. nuitka/build/static_src/HelpersFloats.c +37 -31
  207. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  208. nuitka/build/static_src/HelpersImport.c +48 -20
  209. nuitka/build/static_src/HelpersImportHard.c +53 -17
  210. nuitka/build/static_src/HelpersJitSources.c +46 -0
  211. nuitka/build/static_src/HelpersLists.c +140 -50
  212. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  213. nuitka/build/static_src/HelpersMappings.c +17 -17
  214. nuitka/build/static_src/HelpersMatching.c +137 -51
  215. nuitka/build/static_src/HelpersOperationBinaryAdd.c +173 -146
  216. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +99 -52
  217. nuitka/build/static_src/HelpersOperationBinaryBitand.c +50 -50
  218. nuitka/build/static_src/HelpersOperationBinaryBitor.c +50 -50
  219. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +50 -50
  220. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +41 -41
  221. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  222. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +41 -41
  223. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  224. nuitka/build/static_src/HelpersOperationBinaryLshift.c +47 -47
  225. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +24 -24
  226. nuitka/build/static_src/HelpersOperationBinaryMod.c +107 -107
  227. nuitka/build/static_src/HelpersOperationBinaryMult.c +81 -75
  228. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  229. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +41 -41
  230. nuitka/build/static_src/HelpersOperationBinaryPow.c +44 -44
  231. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  232. nuitka/build/static_src/HelpersOperationBinaryRshift.c +47 -47
  233. nuitka/build/static_src/HelpersOperationBinarySub.c +80 -80
  234. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +41 -41
  235. nuitka/build/static_src/HelpersOperationInplaceAdd.c +171 -153
  236. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  237. nuitka/build/static_src/HelpersOperationInplaceBitand.c +53 -53
  238. nuitka/build/static_src/HelpersOperationInplaceBitor.c +53 -53
  239. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +53 -53
  240. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +62 -62
  241. nuitka/build/static_src/HelpersOperationInplaceLshift.c +44 -44
  242. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +37 -37
  243. nuitka/build/static_src/HelpersOperationInplaceMod.c +134 -134
  244. nuitka/build/static_src/HelpersOperationInplaceMult.c +78 -78
  245. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +62 -62
  246. nuitka/build/static_src/HelpersOperationInplacePow.c +62 -62
  247. nuitka/build/static_src/HelpersOperationInplaceRshift.c +44 -44
  248. nuitka/build/static_src/HelpersOperationInplaceSub.c +112 -112
  249. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +62 -62
  250. nuitka/build/static_src/HelpersProfiling.c +24 -23
  251. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  252. nuitka/build/static_src/HelpersRaising.c +88 -20
  253. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  254. nuitka/build/static_src/HelpersSequences.c +18 -19
  255. nuitka/build/static_src/HelpersSlices.c +29 -23
  256. nuitka/build/static_src/HelpersStrings.c +234 -37
  257. nuitka/build/static_src/HelpersTuples.c +46 -34
  258. nuitka/build/static_src/HelpersTypes.c +68 -23
  259. nuitka/build/static_src/InspectPatcher.c +108 -27
  260. nuitka/build/static_src/MainProgram.c +359 -263
  261. nuitka/build/static_src/MetaPathBasedLoader.c +367 -242
  262. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  263. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  264. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +97 -22
  265. nuitka/build/static_src/OnefileBootstrap.c +276 -164
  266. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  267. nuitka/code_generation/AsyncgenCodes.py +19 -17
  268. nuitka/code_generation/AttributeCodes.py +31 -27
  269. nuitka/code_generation/BinaryOperationHelperDefinitions.py +24 -20
  270. nuitka/code_generation/BranchCodes.py +19 -17
  271. nuitka/code_generation/BuiltinCodes.py +20 -17
  272. nuitka/code_generation/CallCodes.py +19 -17
  273. nuitka/code_generation/ClassCodes.py +19 -17
  274. nuitka/code_generation/CodeGeneration.py +48 -27
  275. nuitka/code_generation/CodeHelperSelection.py +19 -17
  276. nuitka/code_generation/CodeHelpers.py +24 -20
  277. nuitka/code_generation/CodeObjectCodes.py +34 -24
  278. nuitka/code_generation/ComparisonCodes.py +38 -20
  279. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  280. nuitka/code_generation/ConditionalCodes.py +19 -17
  281. nuitka/code_generation/ConstantCodes.py +82 -28
  282. nuitka/code_generation/Contexts.py +152 -26
  283. nuitka/code_generation/CoroutineCodes.py +19 -17
  284. nuitka/code_generation/CtypesCodes.py +19 -17
  285. nuitka/code_generation/DictCodes.py +25 -23
  286. nuitka/code_generation/Emission.py +21 -18
  287. nuitka/code_generation/ErrorCodes.py +27 -33
  288. nuitka/code_generation/EvalCodes.py +24 -20
  289. nuitka/code_generation/ExceptionCodes.py +27 -18
  290. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +20 -17
  291. nuitka/code_generation/ExpressionCodes.py +19 -17
  292. nuitka/code_generation/FrameCodes.py +24 -20
  293. nuitka/code_generation/FunctionCodes.py +24 -21
  294. nuitka/code_generation/GeneratorCodes.py +23 -20
  295. nuitka/code_generation/GlobalConstants.py +43 -23
  296. nuitka/code_generation/GlobalsLocalsCodes.py +21 -19
  297. nuitka/code_generation/IdCodes.py +19 -17
  298. nuitka/code_generation/ImportCodes.py +90 -50
  299. nuitka/code_generation/Indentation.py +23 -22
  300. nuitka/code_generation/IndexCodes.py +19 -17
  301. nuitka/code_generation/InjectCCodes.py +14 -12
  302. nuitka/code_generation/IntegerCodes.py +19 -17
  303. nuitka/code_generation/IteratorCodes.py +19 -17
  304. nuitka/code_generation/JitCodes.py +44 -0
  305. nuitka/code_generation/LabelCodes.py +19 -17
  306. nuitka/code_generation/LineNumberCodes.py +19 -17
  307. nuitka/code_generation/ListCodes.py +32 -36
  308. nuitka/code_generation/LoaderCodes.py +22 -17
  309. nuitka/code_generation/LocalsDictCodes.py +56 -32
  310. nuitka/code_generation/LoopCodes.py +19 -17
  311. nuitka/code_generation/MatchCodes.py +42 -22
  312. nuitka/code_generation/ModuleCodes.py +43 -25
  313. nuitka/code_generation/Namify.py +27 -23
  314. nuitka/code_generation/NetworkxCodes.py +51 -0
  315. nuitka/code_generation/OperationCodes.py +29 -31
  316. nuitka/code_generation/PackageResourceCodes.py +59 -23
  317. nuitka/code_generation/PrintCodes.py +19 -17
  318. nuitka/code_generation/PythonAPICodes.py +19 -17
  319. nuitka/code_generation/RaisingCodes.py +19 -17
  320. nuitka/code_generation/Reports.py +19 -17
  321. nuitka/code_generation/ReturnCodes.py +19 -17
  322. nuitka/code_generation/SetCodes.py +19 -17
  323. nuitka/code_generation/SliceCodes.py +22 -20
  324. nuitka/code_generation/StringCodes.py +19 -17
  325. nuitka/code_generation/SubscriptCodes.py +24 -30
  326. nuitka/code_generation/TensorflowCodes.py +54 -0
  327. nuitka/code_generation/TryCodes.py +19 -17
  328. nuitka/code_generation/TupleCodes.py +20 -18
  329. nuitka/code_generation/TypeAliasCodes.py +71 -0
  330. nuitka/code_generation/VariableCodes.py +26 -22
  331. nuitka/code_generation/VariableDeclarations.py +20 -17
  332. nuitka/code_generation/YieldCodes.py +22 -20
  333. nuitka/code_generation/__init__.py +5 -4
  334. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  335. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  336. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  337. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  338. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  339. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  340. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -18
  341. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  342. nuitka/code_generation/c_types/CTypePyObjectPointers.py +27 -25
  343. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  344. nuitka/code_generation/c_types/__init__.py +5 -4
  345. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  346. nuitka/code_generation/templates/CodeTemplatesConstants.py +132 -36
  347. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  348. nuitka/code_generation/templates/CodeTemplatesExceptions.py +19 -18
  349. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  350. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  351. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +19 -17
  352. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -18
  353. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  354. nuitka/code_generation/templates/CodeTemplatesModules.py +244 -165
  355. nuitka/code_generation/templates/CodeTemplatesVariables.py +42 -27
  356. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  357. nuitka/code_generation/templates/__init__.py +5 -4
  358. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  359. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +18 -18
  360. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +76 -25
  361. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  362. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  363. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  364. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  365. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +121 -48
  366. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +18 -18
  367. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +18 -18
  368. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  369. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  370. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  371. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +28 -28
  372. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  373. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  374. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +44 -32
  375. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +20 -20
  376. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +28 -28
  377. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +24 -24
  378. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +33 -29
  379. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  380. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +27 -27
  381. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  382. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  384. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  385. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  386. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +26 -24
  387. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  388. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  389. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  390. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  391. nuitka/containers/Namedtuples.py +19 -18
  392. nuitka/containers/OrderedSetsFallback.py +19 -17
  393. nuitka/containers/__init__.py +5 -4
  394. nuitka/distutils/Build.py +19 -18
  395. nuitka/distutils/DistutilCommands.py +34 -23
  396. nuitka/distutils/__init__.py +5 -4
  397. nuitka/finalizations/Finalization.py +20 -17
  398. nuitka/finalizations/FinalizeMarkups.py +21 -41
  399. nuitka/finalizations/__init__.py +5 -4
  400. nuitka/freezer/DependsExe.py +48 -28
  401. nuitka/freezer/DllDependenciesCommon.py +47 -20
  402. nuitka/freezer/DllDependenciesMacOS.py +147 -57
  403. nuitka/freezer/DllDependenciesPosix.py +29 -19
  404. nuitka/freezer/DllDependenciesWin32.py +29 -21
  405. nuitka/freezer/ImportDetection.py +20 -17
  406. nuitka/freezer/IncludedDataFiles.py +118 -47
  407. nuitka/freezer/IncludedEntryPoints.py +102 -38
  408. nuitka/freezer/Onefile.py +32 -22
  409. nuitka/freezer/Standalone.py +105 -50
  410. nuitka/freezer/__init__.py +5 -4
  411. nuitka/importing/IgnoreListing.py +19 -17
  412. nuitka/importing/ImportCache.py +24 -21
  413. nuitka/importing/ImportResolving.py +103 -95
  414. nuitka/importing/Importing.py +286 -92
  415. nuitka/importing/PreloadedPackages.py +21 -18
  416. nuitka/importing/Recursion.py +131 -47
  417. nuitka/importing/StandardLibrary.py +46 -28
  418. nuitka/importing/__init__.py +5 -4
  419. nuitka/nodes/AsyncgenNodes.py +19 -17
  420. nuitka/nodes/AttributeLookupNodes.py +19 -17
  421. nuitka/nodes/AttributeNodes.py +19 -17
  422. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  423. nuitka/nodes/BuiltinAllNodes.py +19 -17
  424. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  425. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  426. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  427. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  428. nuitka/nodes/BuiltinDictNodes.py +19 -17
  429. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  430. nuitka/nodes/BuiltinHashNodes.py +19 -17
  431. nuitka/nodes/BuiltinInputNodes.py +19 -17
  432. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  433. nuitka/nodes/BuiltinIteratorNodes.py +24 -20
  434. nuitka/nodes/BuiltinLenNodes.py +19 -17
  435. nuitka/nodes/BuiltinNextNodes.py +19 -17
  436. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  437. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  438. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  439. nuitka/nodes/BuiltinRefNodes.py +68 -19
  440. nuitka/nodes/BuiltinSumNodes.py +20 -18
  441. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  442. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  443. nuitka/nodes/BytesNodes.py +19 -17
  444. nuitka/nodes/CallNodes.py +19 -17
  445. nuitka/nodes/Checkers.py +19 -17
  446. nuitka/nodes/ChildrenHavingMixins.py +1250 -302
  447. nuitka/nodes/ClassNodes.py +49 -29
  448. nuitka/nodes/CodeObjectSpecs.py +29 -18
  449. nuitka/nodes/ComparisonNodes.py +19 -17
  450. nuitka/nodes/ConditionalNodes.py +21 -23
  451. nuitka/nodes/ConstantRefNodes.py +57 -17
  452. nuitka/nodes/ContainerMakingNodes.py +19 -17
  453. nuitka/nodes/ContainerOperationNodes.py +19 -17
  454. nuitka/nodes/CoroutineNodes.py +19 -17
  455. nuitka/nodes/CtypesNodes.py +19 -18
  456. nuitka/nodes/DictionaryNodes.py +19 -18
  457. nuitka/nodes/ExceptionNodes.py +29 -17
  458. nuitka/nodes/ExecEvalNodes.py +19 -17
  459. nuitka/nodes/ExpressionBases.py +34 -26
  460. nuitka/nodes/ExpressionBasesGenerated.py +54 -32
  461. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  462. nuitka/nodes/FrameNodes.py +19 -17
  463. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  464. nuitka/nodes/FunctionNodes.py +81 -35
  465. nuitka/nodes/FutureSpecs.py +35 -20
  466. nuitka/nodes/GeneratorNodes.py +21 -19
  467. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  468. nuitka/nodes/HardImportNodesGenerated.py +545 -129
  469. nuitka/nodes/ImportHardNodes.py +46 -38
  470. nuitka/nodes/ImportNodes.py +436 -446
  471. nuitka/nodes/IndicatorMixins.py +19 -17
  472. nuitka/nodes/InjectCNodes.py +19 -18
  473. nuitka/nodes/IterationHandles.py +55 -34
  474. nuitka/nodes/KeyValuePairNodes.py +19 -17
  475. nuitka/nodes/ListOperationNodes.py +33 -21
  476. nuitka/nodes/LocalsDictNodes.py +19 -17
  477. nuitka/nodes/LocalsScopes.py +41 -41
  478. nuitka/nodes/LoopNodes.py +28 -17
  479. nuitka/nodes/MatchNodes.py +37 -24
  480. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  481. nuitka/nodes/ModuleNodes.py +90 -31
  482. nuitka/nodes/NetworkxNodes.py +45 -0
  483. nuitka/nodes/NodeBases.py +45 -43
  484. nuitka/nodes/NodeMakingHelpers.py +21 -19
  485. nuitka/nodes/NodeMetaClasses.py +45 -28
  486. nuitka/nodes/OperatorNodes.py +28 -26
  487. nuitka/nodes/OperatorNodesUnary.py +20 -17
  488. nuitka/nodes/OsSysNodes.py +66 -18
  489. nuitka/nodes/OutlineNodes.py +22 -20
  490. nuitka/nodes/PackageMetadataNodes.py +37 -27
  491. nuitka/nodes/PackageResourceNodes.py +29 -23
  492. nuitka/nodes/PrintNodes.py +19 -17
  493. nuitka/nodes/ReturnNodes.py +20 -18
  494. nuitka/nodes/SideEffectNodes.py +19 -17
  495. nuitka/nodes/SliceNodes.py +20 -18
  496. nuitka/nodes/StatementBasesGenerated.py +125 -77
  497. nuitka/nodes/StatementNodes.py +19 -17
  498. nuitka/nodes/StrNodes.py +19 -17
  499. nuitka/nodes/StringConcatenationNodes.py +20 -17
  500. nuitka/nodes/SubscriptNodes.py +26 -24
  501. nuitka/nodes/TensorflowNodes.py +38 -0
  502. nuitka/nodes/TryNodes.py +19 -17
  503. nuitka/nodes/TypeMatchNodes.py +19 -17
  504. nuitka/nodes/TypeNodes.py +40 -17
  505. nuitka/nodes/VariableAssignNodes.py +122 -64
  506. nuitka/nodes/VariableDelNodes.py +19 -17
  507. nuitka/nodes/VariableNameNodes.py +19 -17
  508. nuitka/nodes/VariableRefNodes.py +63 -26
  509. nuitka/nodes/VariableReleaseNodes.py +19 -17
  510. nuitka/nodes/YieldNodes.py +21 -19
  511. nuitka/nodes/__init__.py +5 -4
  512. nuitka/nodes/shapes/BuiltinTypeShapes.py +145 -39
  513. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  514. nuitka/nodes/shapes/ShapeMixins.py +40 -17
  515. nuitka/nodes/shapes/StandardShapes.py +27 -20
  516. nuitka/nodes/shapes/__init__.py +5 -4
  517. nuitka/optimizations/BytecodeDemotion.py +19 -17
  518. nuitka/optimizations/FunctionInlining.py +22 -23
  519. nuitka/optimizations/Graphs.py +19 -17
  520. nuitka/optimizations/Optimization.py +39 -35
  521. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  522. nuitka/optimizations/Tags.py +19 -18
  523. nuitka/optimizations/TraceCollections.py +67 -24
  524. nuitka/optimizations/ValueTraces.py +92 -25
  525. nuitka/optimizations/__init__.py +5 -4
  526. nuitka/pgo/PGO.py +33 -23
  527. nuitka/pgo/__init__.py +5 -4
  528. nuitka/plugins/PluginBase.py +610 -109
  529. nuitka/plugins/Plugins.py +241 -58
  530. nuitka/plugins/YamlPluginBase.py +121 -0
  531. nuitka/plugins/__init__.py +5 -4
  532. nuitka/plugins/standard/AntiBloatPlugin.py +357 -129
  533. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  534. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  535. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  536. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  537. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  538. nuitka/plugins/standard/DillPlugin.py +42 -134
  539. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  540. nuitka/plugins/standard/EnumPlugin.py +19 -17
  541. nuitka/plugins/standard/EventletPlugin.py +19 -17
  542. nuitka/plugins/standard/GeventPlugin.py +19 -17
  543. nuitka/plugins/standard/GiPlugin.py +44 -28
  544. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  545. nuitka/plugins/standard/ImplicitImports.py +407 -46
  546. nuitka/plugins/standard/KivyPlugin.py +30 -17
  547. nuitka/plugins/standard/MatplotlibPlugin.py +88 -42
  548. nuitka/plugins/standard/MultiprocessingPlugin.py +25 -20
  549. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  550. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  551. nuitka/plugins/standard/PbrPlugin.py +21 -19
  552. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  553. nuitka/plugins/standard/PmwPlugin.py +30 -27
  554. nuitka/plugins/standard/PySidePyQtPlugin.py +74 -80
  555. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  556. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  557. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  558. nuitka/plugins/standard/TkinterPlugin.py +103 -53
  559. nuitka/plugins/standard/TorchPlugin.py +20 -17
  560. nuitka/plugins/standard/TransformersPlugin.py +94 -30
  561. nuitka/plugins/standard/TrioPlugin.py +18 -15
  562. nuitka/plugins/standard/UpxPlugin.py +21 -19
  563. nuitka/plugins/standard/__init__.py +5 -4
  564. nuitka/plugins/standard/standard.nuitka-package.config.yml +3449 -1299
  565. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  566. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +121 -66
  567. nuitka/reports/CompilationReportReader.py +67 -0
  568. nuitka/reports/LicenseReport.rst.j2 +21 -21
  569. nuitka/reports/Reports.py +352 -76
  570. nuitka/reports/__init__.py +5 -4
  571. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  572. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  573. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  574. nuitka/specs/BuiltinParameterSpecs.py +30 -20
  575. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  576. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  577. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  578. nuitka/specs/HardImportSpecs.py +67 -22
  579. nuitka/specs/ParameterSpecs.py +56 -41
  580. nuitka/specs/__init__.py +5 -4
  581. nuitka/tools/Basics.py +20 -18
  582. nuitka/tools/__init__.py +5 -4
  583. nuitka/tools/commercial/__init__.py +7 -6
  584. nuitka/tools/data_composer/DataComposer.py +78 -62
  585. nuitka/tools/data_composer/__init__.py +5 -4
  586. nuitka/tools/data_composer/__main__.py +18 -17
  587. nuitka/tools/environments/CreateEnvironment.py +20 -17
  588. nuitka/tools/environments/Virtualenv.py +60 -32
  589. nuitka/tools/environments/__init__.py +5 -4
  590. nuitka/tools/general/__init__.py +5 -4
  591. nuitka/tools/general/dll_report/__init__.py +5 -4
  592. nuitka/tools/general/dll_report/__main__.py +19 -21
  593. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  594. nuitka/tools/general/find_module/__init__.py +5 -4
  595. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  596. nuitka/tools/onefile_compressor/__init__.py +5 -4
  597. nuitka/tools/onefile_compressor/__main__.py +18 -17
  598. nuitka/tools/podman/Podman.py +19 -17
  599. nuitka/tools/podman/__init__.py +5 -4
  600. nuitka/tools/podman/__main__.py +35 -19
  601. nuitka/tools/profiler/__init__.py +5 -4
  602. nuitka/tools/profiler/__main__.py +18 -17
  603. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  604. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  605. nuitka/tools/scanning/__init__.py +5 -4
  606. nuitka/tools/specialize/CTypeDescriptions.py +93 -71
  607. nuitka/tools/specialize/Common.py +18 -17
  608. nuitka/tools/specialize/SpecializeC.py +31 -27
  609. nuitka/tools/specialize/SpecializePython.py +108 -45
  610. nuitka/tools/specialize/__init__.py +5 -4
  611. nuitka/tools/testing/Common.py +106 -52
  612. nuitka/tools/testing/Constructs.py +19 -17
  613. nuitka/tools/testing/OutputComparison.py +54 -18
  614. nuitka/tools/testing/Pythons.py +19 -18
  615. nuitka/tools/testing/RuntimeTracing.py +20 -19
  616. nuitka/tools/testing/SearchModes.py +26 -20
  617. nuitka/tools/testing/Valgrind.py +19 -17
  618. nuitka/tools/testing/__init__.py +5 -4
  619. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  620. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  621. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  622. nuitka/tools/testing/compare_with_cpython/__main__.py +36 -29
  623. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  624. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  625. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  626. nuitka/tools/testing/measure_construct_performance/__main__.py +22 -25
  627. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  628. nuitka/tools/testing/run_nuitka_tests/__main__.py +57 -40
  629. nuitka/tools/watch/AutoStage.py +144 -0
  630. nuitka/tools/watch/GitHub.py +113 -0
  631. nuitka/tools/watch/__init__.py +5 -4
  632. nuitka/tools/watch/__main__.py +322 -91
  633. nuitka/tree/Building.py +176 -147
  634. nuitka/tree/ComplexCallHelperFunctions.py +80 -58
  635. nuitka/tree/Extractions.py +19 -17
  636. nuitka/tree/InternalModule.py +29 -20
  637. nuitka/tree/Operations.py +19 -17
  638. nuitka/tree/ReformulationAssertStatements.py +20 -17
  639. nuitka/tree/ReformulationAssignmentStatements.py +92 -91
  640. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  641. nuitka/tree/ReformulationCallExpressions.py +20 -18
  642. nuitka/tree/ReformulationClasses.py +45 -39
  643. nuitka/tree/ReformulationClasses3.py +146 -98
  644. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  645. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  646. nuitka/tree/ReformulationDictionaryCreation.py +40 -35
  647. nuitka/tree/ReformulationExecStatements.py +42 -39
  648. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  649. nuitka/tree/ReformulationFunctionStatements.py +58 -54
  650. nuitka/tree/ReformulationImportStatements.py +34 -29
  651. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  652. nuitka/tree/ReformulationMatchStatements.py +244 -92
  653. nuitka/tree/ReformulationMultidist.py +22 -18
  654. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  655. nuitka/tree/ReformulationPrintStatements.py +23 -24
  656. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  657. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  658. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  659. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  660. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  661. nuitka/tree/ReformulationWithStatements.py +39 -41
  662. nuitka/tree/ReformulationYieldExpressions.py +21 -19
  663. nuitka/tree/SourceHandling.py +76 -31
  664. nuitka/tree/SyntaxErrors.py +19 -17
  665. nuitka/tree/TreeHelpers.py +33 -20
  666. nuitka/tree/VariableClosure.py +35 -39
  667. nuitka/tree/__init__.py +5 -4
  668. nuitka/utils/AppDirs.py +41 -20
  669. nuitka/utils/CStrings.py +66 -21
  670. nuitka/utils/CommandLineOptions.py +84 -19
  671. nuitka/utils/Distributions.py +445 -54
  672. nuitka/utils/Download.py +89 -57
  673. nuitka/utils/Execution.py +73 -34
  674. nuitka/utils/FileOperations.py +318 -74
  675. nuitka/utils/Hashing.py +55 -33
  676. nuitka/utils/Images.py +26 -19
  677. nuitka/utils/Importing.py +118 -24
  678. nuitka/utils/InstalledPythons.py +80 -75
  679. nuitka/utils/InstanceCounters.py +20 -17
  680. nuitka/utils/Jinja2.py +30 -22
  681. nuitka/utils/Json.py +19 -17
  682. nuitka/utils/MacOSApp.py +26 -18
  683. nuitka/utils/MemoryUsage.py +20 -18
  684. nuitka/utils/ModuleNames.py +42 -26
  685. nuitka/utils/ReExecute.py +50 -28
  686. nuitka/utils/Rest.py +20 -17
  687. nuitka/utils/SharedLibraries.py +161 -75
  688. nuitka/utils/Shebang.py +20 -17
  689. nuitka/utils/Signing.py +63 -18
  690. nuitka/utils/SlotMetaClasses.py +57 -0
  691. nuitka/utils/StaticLibraries.py +83 -56
  692. nuitka/utils/ThreadedExecutor.py +18 -17
  693. nuitka/utils/Timing.py +22 -20
  694. nuitka/utils/Utils.py +115 -25
  695. nuitka/utils/WindowsFileUsage.py +22 -20
  696. nuitka/utils/WindowsResources.py +25 -18
  697. nuitka/utils/Yaml.py +62 -24
  698. nuitka/utils/__init__.py +5 -4
  699. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  700. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  701. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  702. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/LICENSE.txt +0 -0
  703. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/entry_points.txt +0 -0
  704. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.4.8.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,5 @@
1
- // Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- //
3
- // Part of "Nuitka", an optimizing Python compiler that is compatible and
4
- // integrates with CPython, but also works on its own.
5
- //
6
- // Licensed under the Apache License, Version 2.0 (the "License");
7
- // you may not use this file except in compliance with the License.
8
- // You may obtain a copy of the License at
9
- //
10
- // http://www.apache.org/licenses/LICENSE-2.0
11
- //
12
- // Unless required by applicable law or agreed to in writing, software
13
- // distributed under the License is distributed on an "AS IS" BASIS,
14
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- // See the License for the specific language governing permissions and
16
- // limitations under the License.
17
- //
1
+ // Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
18
3
  /* Implementations of compiled code helpers.
19
4
 
20
5
  * The definition of a compiled code helper is that it's being used in
@@ -45,7 +30,7 @@ static void _initBuiltinTypeMethods(void) {
45
30
  _initListBuiltinMethods();
46
31
  }
47
32
 
48
- #if PYTHON_VERSION >= 0x3b0
33
+ #if PYTHON_VERSION >= 0x350
49
34
  #include "HelpersAllocator.c"
50
35
  #endif
51
36
 
@@ -67,6 +52,7 @@ static void _initBuiltinTypeMethods(void) {
67
52
  #include "HelpersStrings.c"
68
53
  #include "HelpersTuples.c"
69
54
 
55
+ #include "HelpersEnvironmentVariables.c"
70
56
  #include "HelpersFilesystemPaths.c"
71
57
  #include "HelpersSafeStrings.c"
72
58
 
@@ -95,7 +81,7 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
95
81
  size = ESTIMATE_RANGE(high, low, -step);
96
82
  }
97
83
 
98
- PyObject *result = MAKE_LIST_EMPTY(size);
84
+ PyObject *result = MAKE_LIST_EMPTY(tstate, size);
99
85
 
100
86
  long current = low;
101
87
 
@@ -110,7 +96,7 @@ static PyObject *_BUILTIN_RANGE_INT3(long low, long high, long step) {
110
96
  static PyObject *_BUILTIN_RANGE_INT2(long low, long high) { return _BUILTIN_RANGE_INT3(low, high, 1); }
111
97
 
112
98
  static PyObject *_BUILTIN_RANGE_INT(long boundary) {
113
- PyObject *result = MAKE_LIST_EMPTY(boundary > 0 ? boundary : 0);
99
+ PyObject *result = MAKE_LIST_EMPTY(tstate, boundary > 0 ? boundary : 0);
114
100
 
115
101
  for (int i = 0; i < boundary; i++) {
116
102
  PyList_SET_ITEM(result, i, PyInt_FromLong(i));
@@ -205,7 +191,7 @@ PyObject *BUILTIN_RANGE2(PyThreadState *tstate, PyObject *low, PyObject *high) {
205
191
 
206
192
  if (fallback) {
207
193
  // Transfers references to tuple.
208
- PyObject *pos_args = MAKE_TUPLE2_0(low_temp, high_temp);
194
+ PyObject *pos_args = MAKE_TUPLE2_0(tstate, low_temp, high_temp);
209
195
  NUITKA_ASSIGN_BUILTIN(range);
210
196
 
211
197
  PyObject *result = CALL_FUNCTION_WITH_POSARGS2(tstate, NUITKA_ACCESS_BUILTIN(range), pos_args);
@@ -264,7 +250,7 @@ PyObject *BUILTIN_RANGE3(PyThreadState *tstate, PyObject *low, PyObject *high, P
264
250
  }
265
251
 
266
252
  if (fallback) {
267
- PyObject *pos_args = MAKE_TUPLE3_0(low_temp, high_temp, step_temp);
253
+ PyObject *pos_args = MAKE_TUPLE3_0(tstate, low_temp, high_temp, step_temp);
268
254
 
269
255
  NUITKA_ASSIGN_BUILTIN(range);
270
256
 
@@ -599,7 +585,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
599
585
 
600
586
  if (cmp == 0) {
601
587
  Py_DECREF(it);
602
- Py_INCREF(Py_False);
588
+ Py_INCREF_IMMORTAL(Py_False);
603
589
  return Py_False;
604
590
  }
605
591
  }
@@ -610,7 +596,7 @@ PyObject *BUILTIN_ALL(PyThreadState *tstate, PyObject *value) {
610
596
  return NULL;
611
597
  }
612
598
 
613
- Py_INCREF(Py_True);
599
+ Py_INCREF_IMMORTAL(Py_True);
614
600
  return Py_True;
615
601
  }
616
602
 
@@ -649,7 +635,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
649
635
  }
650
636
  if (cmp > 0) {
651
637
  Py_DECREF(it);
652
- Py_INCREF(Py_True);
638
+ Py_INCREF_IMMORTAL(Py_True);
653
639
  return Py_True;
654
640
  }
655
641
  }
@@ -659,7 +645,7 @@ PyObject *BUILTIN_ANY(PyThreadState *tstate, PyObject *value) {
659
645
  return NULL;
660
646
  }
661
647
 
662
- Py_INCREF(Py_False);
648
+ Py_INCREF_IMMORTAL(Py_False);
663
649
  return Py_False;
664
650
  }
665
651
 
@@ -688,7 +674,7 @@ PyObject *BUILTIN_FORMAT(PyThreadState *tstate, PyObject *value, PyObject *forma
688
674
  }
689
675
 
690
676
  // Helper functions for print. Need to play nice with Python softspace
691
- // behaviour.
677
+ // behavior.
692
678
 
693
679
  #if PYTHON_VERSION >= 0x300
694
680
  NUITKA_DEFINE_BUILTIN(print);
@@ -724,10 +710,9 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
724
710
  #else
725
711
  NUITKA_ASSIGN_BUILTIN(print);
726
712
 
727
- PyObject *exception_type, *exception_value;
728
- PyTracebackObject *exception_tb;
713
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
729
714
 
730
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
715
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
731
716
 
732
717
  PyObject *result;
733
718
 
@@ -746,7 +731,7 @@ bool PRINT_NEW_LINE_TO(PyObject *file) {
746
731
 
747
732
  Py_XDECREF(result);
748
733
 
749
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
734
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
750
735
 
751
736
  return result != NULL;
752
737
  #endif
@@ -818,13 +803,12 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
818
803
  #else
819
804
  NUITKA_ASSIGN_BUILTIN(print);
820
805
 
821
- PyObject *exception_type, *exception_value;
822
- PyTracebackObject *exception_tb;
806
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
823
807
 
824
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
808
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
825
809
 
826
810
  // TODO: Have a helper that creates a dictionary for PyObject **
827
- PyObject *print_kw = MAKE_DICT_EMPTY();
811
+ PyObject *print_kw = MAKE_DICT_EMPTY(tstate);
828
812
  DICT_SET_ITEM(print_kw, const_str_plain_end, const_str_empty);
829
813
 
830
814
  if (file == NULL) {
@@ -833,7 +817,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
833
817
  DICT_SET_ITEM(print_kw, const_str_plain_file, file);
834
818
  }
835
819
 
836
- PyObject *print_args = MAKE_TUPLE1(object);
820
+ PyObject *print_args = MAKE_TUPLE1(tstate, object);
837
821
 
838
822
  PyObject *result = CALL_FUNCTION(tstate, NUITKA_ACCESS_BUILTIN(print), print_args, print_kw);
839
823
 
@@ -842,7 +826,7 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
842
826
 
843
827
  Py_XDECREF(result);
844
828
 
845
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
829
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
846
830
 
847
831
  return result != NULL;
848
832
  #endif
@@ -850,12 +834,18 @@ bool PRINT_ITEM_TO(PyObject *file, PyObject *object) {
850
834
 
851
835
  void PRINT_REFCOUNT(PyObject *object) {
852
836
  if (object) {
837
+ #if PYTHON_VERSION >= 0x3c0
838
+ if (_Py_IsImmortal(object)) {
839
+ PRINT_STRING(" recnf IMMORTAL");
840
+ return;
841
+ }
842
+ #endif
853
843
  char buffer[1024];
854
844
  snprintf(buffer, sizeof(buffer) - 1, " refcnt %" PY_FORMAT_SIZE_T "d ", Py_REFCNT(object));
855
845
 
856
846
  PRINT_STRING(buffer);
857
847
  } else {
858
- PRINT_STRING("<null>");
848
+ PRINT_STRING(" <null>");
859
849
  }
860
850
  }
861
851
 
@@ -870,6 +860,17 @@ bool PRINT_STRING(char const *str) {
870
860
  }
871
861
  }
872
862
 
863
+ bool PRINT_STRING_W(wchar_t const *str) {
864
+ if (str) {
865
+ PyObject *tmp = NuitkaUnicode_FromWideChar(str, -1);
866
+ bool res = PRINT_ITEM(tmp);
867
+ Py_DECREF(tmp);
868
+ return res;
869
+ } else {
870
+ return PRINT_STRING("<nullstr>");
871
+ }
872
+ }
873
+
873
874
  bool PRINT_FORMAT(char const *fmt, ...) {
874
875
  va_list args;
875
876
  va_start(args, fmt);
@@ -878,16 +879,17 @@ bool PRINT_FORMAT(char const *fmt, ...) {
878
879
  char buffer[4096];
879
880
 
880
881
  vsprintf(buffer, fmt, args);
882
+ va_end(args);
883
+
881
884
  return PRINT_STRING(buffer);
882
885
  }
883
886
 
884
887
  bool PRINT_REPR(PyObject *object) {
885
- PyObject *exception_type, *exception_value;
886
- PyTracebackObject *exception_tb;
887
-
888
888
  PyThreadState *tstate = PyThreadState_GET();
889
889
 
890
- FETCH_ERROR_OCCURRED_UNTRACED(tstate, &exception_type, &exception_value, &exception_tb);
890
+ struct Nuitka_ExceptionPreservationItem saved_exception_state;
891
+
892
+ FETCH_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
891
893
 
892
894
  bool res;
893
895
 
@@ -904,7 +906,7 @@ bool PRINT_REPR(PyObject *object) {
904
906
  res = PRINT_NULL();
905
907
  }
906
908
 
907
- RESTORE_ERROR_OCCURRED_UNTRACED(tstate, exception_type, exception_value, exception_tb);
909
+ RESTORE_ERROR_OCCURRED_STATE_UNTRACED(tstate, &saved_exception_state);
908
910
 
909
911
  return res;
910
912
  }
@@ -949,7 +951,11 @@ void PRINT_CURRENT_EXCEPTION(void) {
949
951
  PyThreadState *tstate = PyThreadState_GET();
950
952
 
951
953
  PRINT_STRING("current_exc=");
954
+ #if PYTHON_VERSION < 0x3c0
952
955
  PRINT_EXCEPTION(tstate->curexc_type, tstate->curexc_value, (PyTracebackObject *)tstate->curexc_traceback);
956
+ #else
957
+ _PRINT_EXCEPTION(tstate->exc_info->exc_value);
958
+ #endif
953
959
  }
954
960
 
955
961
  void PRINT_PUBLISHED_EXCEPTION(void) {
@@ -974,7 +980,7 @@ void PRINT_TRACEBACK(PyTracebackObject *traceback) {
974
980
  PyFrameObject *frame = traceback->tb_frame;
975
981
 
976
982
  while (frame != NULL) {
977
- printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)frame->f_code)));
983
+ printf(" Frame at %s\n", PyString_AsString(PyObject_Str((PyObject *)Nuitka_Frame_GetCodeObject(frame))));
978
984
 
979
985
  frame = frame->f_back;
980
986
  }
@@ -1023,6 +1029,8 @@ bool PRINT_ITEM(PyObject *object) {
1023
1029
  }
1024
1030
  }
1025
1031
 
1032
+ bool PRINT_ITEM_LINE(PyObject *object) { return PRINT_ITEM(object) && PRINT_NEW_LINE(); }
1033
+
1026
1034
  #if PYTHON_VERSION < 0x300
1027
1035
 
1028
1036
  static void set_slot(PyObject **slot, PyObject *value) {
@@ -1032,26 +1040,26 @@ static void set_slot(PyObject **slot, PyObject *value) {
1032
1040
  Py_XDECREF(temp);
1033
1041
  }
1034
1042
 
1035
- static void set_attr_slots(PyClassObject *klass) {
1036
- set_slot(&klass->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___getattr__));
1037
- set_slot(&klass->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___setattr__));
1038
- set_slot(&klass->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(klass, const_str_plain___delattr__));
1043
+ static void set_attr_slots(PyClassObject *class_object) {
1044
+ set_slot(&class_object->cl_getattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___getattr__));
1045
+ set_slot(&class_object->cl_setattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___setattr__));
1046
+ set_slot(&class_object->cl_delattr, FIND_ATTRIBUTE_IN_CLASS(class_object, const_str_plain___delattr__));
1039
1047
  }
1040
1048
 
1041
- static bool set_dict(PyClassObject *klass, PyObject *value) {
1049
+ static bool set_dict(PyClassObject *class_object, PyObject *value) {
1042
1050
  if (value == NULL || !PyDict_Check(value)) {
1043
1051
  PyThreadState *tstate = PyThreadState_GET();
1044
1052
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError, "__dict__ must be a dictionary object");
1045
1053
  return false;
1046
1054
  } else {
1047
- set_slot(&klass->cl_dict, value);
1048
- set_attr_slots(klass);
1055
+ set_slot(&class_object->cl_dict, value);
1056
+ set_attr_slots(class_object);
1049
1057
 
1050
1058
  return true;
1051
1059
  }
1052
1060
  }
1053
1061
 
1054
- static bool set_bases(PyClassObject *klass, PyObject *value) {
1062
+ static bool set_bases(PyClassObject *class_object, PyObject *value) {
1055
1063
  if (value == NULL || !PyTuple_Check(value)) {
1056
1064
 
1057
1065
  PyThreadState *tstate = PyThreadState_GET();
@@ -1071,7 +1079,7 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1071
1079
  return false;
1072
1080
  }
1073
1081
 
1074
- if (unlikely(PyClass_IsSubclass(base, (PyObject *)klass))) {
1082
+ if (unlikely(PyClass_IsSubclass(base, (PyObject *)class_object))) {
1075
1083
  PyThreadState *tstate = PyThreadState_GET();
1076
1084
 
1077
1085
  SET_CURRENT_EXCEPTION_TYPE0_STR(tstate, PyExc_TypeError,
@@ -1080,14 +1088,14 @@ static bool set_bases(PyClassObject *klass, PyObject *value) {
1080
1088
  }
1081
1089
  }
1082
1090
 
1083
- set_slot(&klass->cl_bases, value);
1084
- set_attr_slots(klass);
1091
+ set_slot(&class_object->cl_bases, value);
1092
+ set_attr_slots(class_object);
1085
1093
 
1086
1094
  return true;
1087
1095
  }
1088
1096
  }
1089
1097
 
1090
- static bool set_name(PyClassObject *klass, PyObject *value) {
1098
+ static bool set_name(PyClassObject *class_object, PyObject *value) {
1091
1099
  if (value == NULL || !PyDict_Check(value)) {
1092
1100
  PyThreadState *tstate = PyThreadState_GET();
1093
1101
 
@@ -1102,11 +1110,11 @@ static bool set_name(PyClassObject *klass, PyObject *value) {
1102
1110
  return false;
1103
1111
  }
1104
1112
 
1105
- set_slot(&klass->cl_name, value);
1113
+ set_slot(&class_object->cl_name, value);
1106
1114
  return true;
1107
1115
  }
1108
1116
 
1109
- static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObject *value) {
1117
+ static int nuitka_class_setattr(PyClassObject *class_object, PyObject *attr_name, PyObject *value) {
1110
1118
  char const *sattr_name = PyString_AsString(attr_name);
1111
1119
 
1112
1120
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
@@ -1114,72 +1122,72 @@ static int nuitka_class_setattr(PyClassObject *klass, PyObject *attr_name, PyObj
1114
1122
 
1115
1123
  if (sattr_name[n - 2] == '_' && sattr_name[n - 1] == '_') {
1116
1124
  if (strcmp(sattr_name, "__dict__") == 0) {
1117
- if (set_dict(klass, value) == false) {
1125
+ if (set_dict(class_object, value) == false) {
1118
1126
  return -1;
1119
1127
  } else {
1120
1128
  return 0;
1121
1129
  }
1122
1130
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1123
- if (set_bases(klass, value) == false) {
1131
+ if (set_bases(class_object, value) == false) {
1124
1132
  return -1;
1125
1133
  } else {
1126
1134
  return 0;
1127
1135
  }
1128
1136
  } else if (strcmp(sattr_name, "__name__") == 0) {
1129
- if (set_name(klass, value) == false) {
1137
+ if (set_name(class_object, value) == false) {
1130
1138
  return -1;
1131
1139
  } else {
1132
1140
  return 0;
1133
1141
  }
1134
1142
  } else if (strcmp(sattr_name, "__getattr__") == 0) {
1135
- set_slot(&klass->cl_getattr, value);
1143
+ set_slot(&class_object->cl_getattr, value);
1136
1144
  } else if (strcmp(sattr_name, "__setattr__") == 0) {
1137
- set_slot(&klass->cl_setattr, value);
1145
+ set_slot(&class_object->cl_setattr, value);
1138
1146
  } else if (strcmp(sattr_name, "__delattr__") == 0) {
1139
- set_slot(&klass->cl_delattr, value);
1147
+ set_slot(&class_object->cl_delattr, value);
1140
1148
  }
1141
1149
  }
1142
1150
  }
1143
1151
 
1144
1152
  if (value == NULL) {
1145
- int status = DICT_REMOVE_ITEM(klass->cl_dict, attr_name);
1153
+ int status = DICT_REMOVE_ITEM(class_object->cl_dict, attr_name);
1146
1154
 
1147
1155
  if (status < 0) {
1148
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1149
- sattr_name);
1156
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'",
1157
+ PyString_AS_STRING(class_object->cl_name), sattr_name);
1150
1158
  }
1151
1159
 
1152
1160
  return status;
1153
1161
  } else {
1154
- return DICT_SET_ITEM(klass->cl_dict, attr_name, value) ? 0 : -1;
1162
+ return DICT_SET_ITEM(class_object->cl_dict, attr_name, value) ? 0 : -1;
1155
1163
  }
1156
1164
  }
1157
1165
 
1158
- static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name) {
1166
+ static PyObject *nuitka_class_getattr(PyClassObject *class_object, PyObject *attr_name) {
1159
1167
  char const *sattr_name = PyString_AsString(attr_name);
1160
1168
 
1161
1169
  if (sattr_name[0] == '_' && sattr_name[1] == '_') {
1162
1170
  if (strcmp(sattr_name, "__dict__") == 0) {
1163
- Py_INCREF(klass->cl_dict);
1164
- return klass->cl_dict;
1171
+ Py_INCREF(class_object->cl_dict);
1172
+ return class_object->cl_dict;
1165
1173
  } else if (strcmp(sattr_name, "__bases__") == 0) {
1166
- Py_INCREF(klass->cl_bases);
1167
- return klass->cl_bases;
1174
+ Py_INCREF(class_object->cl_bases);
1175
+ return class_object->cl_bases;
1168
1176
  } else if (strcmp(sattr_name, "__name__") == 0) {
1169
- if (klass->cl_name == NULL) {
1170
- Py_INCREF(Py_None);
1177
+ if (class_object->cl_name == NULL) {
1178
+ Py_INCREF_IMMORTAL(Py_None);
1171
1179
  return Py_None;
1172
1180
  } else {
1173
- Py_INCREF(klass->cl_name);
1174
- return klass->cl_name;
1181
+ Py_INCREF(class_object->cl_name);
1182
+ return class_object->cl_name;
1175
1183
  }
1176
1184
  }
1177
1185
  }
1178
1186
 
1179
- PyObject *value = FIND_ATTRIBUTE_IN_CLASS(klass, attr_name);
1187
+ PyObject *value = FIND_ATTRIBUTE_IN_CLASS(class_object, attr_name);
1180
1188
 
1181
1189
  if (unlikely(value == NULL)) {
1182
- PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(klass->cl_name),
1190
+ PyErr_Format(PyExc_AttributeError, "class %s has no attribute '%s'", PyString_AS_STRING(class_object->cl_name),
1183
1191
  sattr_name);
1184
1192
  return NULL;
1185
1193
  }
@@ -1192,7 +1200,7 @@ static PyObject *nuitka_class_getattr(PyClassObject *klass, PyObject *attr_name)
1192
1200
  Py_INCREF(value);
1193
1201
  return value;
1194
1202
  } else {
1195
- return tp_descr_get(value, (PyObject *)NULL, (PyObject *)klass);
1203
+ return tp_descr_get(value, (PyObject *)NULL, (PyObject *)class_object);
1196
1204
  }
1197
1205
  }
1198
1206
 
@@ -1389,7 +1397,7 @@ PyObject *BUILTIN_SUM1(PyThreadState *tstate, PyObject *sequence) {
1389
1397
  #endif
1390
1398
 
1391
1399
  if (item == Py_False) {
1392
- Py_DECREF(item);
1400
+ Py_DECREF_IMMORTAL(item);
1393
1401
  continue;
1394
1402
  }
1395
1403
 
@@ -1466,7 +1474,7 @@ PyObject *BUILTIN_SUM2(PyThreadState *tstate, PyObject *sequence, PyObject *star
1466
1474
  CHECK_OBJECT(sequence);
1467
1475
  CHECK_OBJECT(start);
1468
1476
 
1469
- PyObject *pos_args = MAKE_TUPLE2(sequence, start);
1477
+ PyObject *pos_args = MAKE_TUPLE2(tstate, sequence, start);
1470
1478
 
1471
1479
  PyObject *result = CALL_FUNCTION_WITH_POSARGS2(tstate, NUITKA_ACCESS_BUILTIN(sum), pos_args);
1472
1480
 
@@ -1753,7 +1761,7 @@ static PyObject *getBinaryFilenameObject(bool resolve_symlinks) {
1753
1761
  }
1754
1762
  #endif
1755
1763
 
1756
- static PyObject *getBinaryDirectoryObject(bool resolve_symlinks) {
1764
+ PyObject *getBinaryDirectoryObject(bool resolve_symlinks) {
1757
1765
  static PyObject *binary_directory = NULL;
1758
1766
  static PyObject *binary_directory_resolved = NULL;
1759
1767
 
@@ -1824,57 +1832,76 @@ static HMODULE getDllModuleHandle(void) {
1824
1832
  }
1825
1833
  #endif
1826
1834
 
1835
+ static filename_char_t const *getDllDirectory(void) {
1827
1836
  #if defined(_WIN32)
1828
- // Replacement for RemoveFileSpecA, slightly smaller.
1829
- static void stripFilenameA(char *path) {
1830
- char *last_slash = NULL;
1837
+ static WCHAR path[MAXPATHLEN + 1];
1838
+ path[0] = 0;
1831
1839
 
1832
- while (*path != 0) {
1833
- if (*path == '\\') {
1834
- last_slash = path;
1835
- }
1840
+ int res = GetModuleFileNameW(getDllModuleHandle(), path, MAXPATHLEN);
1841
+ assert(res != 0);
1836
1842
 
1837
- path++;
1838
- }
1843
+ stripFilenameW(path);
1839
1844
 
1840
- if (last_slash != NULL) {
1841
- *last_slash = 0;
1845
+ return path;
1846
+ #else
1847
+ Dl_info where;
1848
+
1849
+ {
1850
+ NUITKA_MAY_BE_UNUSED int res = dladdr((void *)getDllDirectory, &where);
1851
+ assert(res != 0);
1842
1852
  }
1843
- }
1853
+
1854
+ return dirname((char *)where.dli_fname);
1844
1855
  #endif
1856
+ }
1857
+ static PyObject *getDllDirectoryObject(void) {
1858
+ static PyObject *dll_directory = NULL;
1845
1859
 
1846
- static char const *getDllDirectory(void) {
1847
- #if defined(_WIN32)
1848
- static char path[MAXPATHLEN + 1];
1849
- path[0] = '\0';
1860
+ if (dll_directory == NULL) {
1861
+ filename_char_t const *dll_directory_filename = getDllDirectory();
1850
1862
 
1851
- #if PYTHON_VERSION >= 0x300
1852
- WCHAR path2[MAXPATHLEN + 1];
1853
- path2[0] = 0;
1863
+ dll_directory = Nuitka_String_FromFilename(dll_directory_filename);
1854
1864
 
1855
- int res = GetModuleFileNameW(getDllModuleHandle(), path2, MAXPATHLEN + 1);
1856
- assert(res != 0);
1865
+ #if PYTHON_VERSION < 0x300
1866
+ // Avoid unnecessary unicode values.
1867
+ PyObject *decoded_dll_directory = PyObject_Str(dll_directory);
1857
1868
 
1858
- int res2 = WideCharToMultiByte(CP_UTF8, 0, path2, -1, path, MAXPATHLEN + 1, NULL, NULL);
1859
- assert(res2 != 0);
1860
- #else
1861
- int res = GetModuleFileNameA(getDllModuleHandle(), path, MAXPATHLEN + 1);
1862
- assert(res != 0);
1869
+ if (decoded_dll_directory == NULL) {
1870
+ PyThreadState *tstate = PyThreadState_GET();
1871
+ DROP_ERROR_OCCURRED(tstate);
1872
+ } else {
1873
+ Py_DECREF(dll_directory);
1874
+ dll_directory = decoded_dll_directory;
1875
+ }
1863
1876
  #endif
1877
+ }
1864
1878
 
1865
- stripFilenameA(path);
1879
+ CHECK_OBJECT(dll_directory);
1866
1880
 
1867
- return path;
1881
+ return dll_directory;
1882
+ }
1883
+ #endif
1868
1884
 
1869
- #else
1870
- Dl_info where;
1871
- int res = dladdr((void *)getDllDirectory, &where);
1872
- assert(res != 0);
1885
+ PyObject *getContainingDirectoryObject(bool resolve_symlinks) {
1886
+ #if defined(_NUITKA_EXE)
1887
+ #if defined(_NUITKA_ONEFILE_MODE)
1888
+ environment_char_t const *onefile_binary = getEnvironmentVariable("NUITKA_ONEFILE_BINARY");
1889
+ if (onefile_binary != NULL) {
1890
+ PyObject *result = Nuitka_String_FromFilename(onefile_binary);
1891
+ unsetEnvironmentVariable("NUITKA_ONEFILE_BINARY");
1873
1892
 
1874
- return dirname((char *)where.dli_fname);
1893
+ PyThreadState *tstate = PyThreadState_GET();
1894
+ return OS_PATH_DIRNAME(tstate, result);
1895
+ }
1896
+
1897
+ return getBinaryDirectoryObject(resolve_symlinks);
1898
+ #else
1899
+ return getBinaryDirectoryObject(resolve_symlinks);
1875
1900
  #endif
1876
- }
1901
+ #else
1902
+ return getDllDirectoryObject();
1877
1903
  #endif
1904
+ }
1878
1905
 
1879
1906
  static void _initDeepCopy(void);
1880
1907
 
@@ -1902,10 +1929,13 @@ void _initBuiltinModule(void) {
1902
1929
  assert(PyDict_Check(dict_builtin));
1903
1930
 
1904
1931
  #ifdef _NUITKA_STANDALONE
1905
- int res = PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_dir", getBinaryDirectoryObject(true));
1906
- assert(res == 0);
1907
- PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_exe", getBinaryFilenameObject(true));
1908
- assert(res == 0);
1932
+ {
1933
+ NUITKA_MAY_BE_UNUSED int res =
1934
+ PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_dir", getBinaryDirectoryObject(true));
1935
+ assert(res == 0);
1936
+ PyDict_SetItemString((PyObject *)dict_builtin, "__nuitka_binary_exe", getBinaryFilenameObject(true));
1937
+ assert(res == 0);
1938
+ }
1909
1939
  #endif
1910
1940
 
1911
1941
  // init Nuitka_BuiltinModule_Type, PyType_Ready won't copy all member from
@@ -1927,7 +1957,7 @@ void _initBuiltinModule(void) {
1927
1957
  Nuitka_BuiltinModule_Type.tp_alloc = PyModule_Type.tp_alloc;
1928
1958
  Nuitka_BuiltinModule_Type.tp_new = PyModule_Type.tp_new;
1929
1959
  Nuitka_BuiltinModule_Type.tp_free = PyModule_Type.tp_free;
1930
- int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
1960
+ NUITKA_MAY_BE_UNUSED int res2 = PyType_Ready(&Nuitka_BuiltinModule_Type);
1931
1961
  assert(res2 >= 0);
1932
1962
 
1933
1963
  // Replace type of builtin module to take over.
@@ -1943,11 +1973,7 @@ PyObject *MAKE_RELATIVE_PATH(PyObject *relative) {
1943
1973
  static PyObject *our_path_object = NULL;
1944
1974
 
1945
1975
  if (our_path_object == NULL) {
1946
- #if defined(_NUITKA_EXE)
1947
- our_path_object = getBinaryDirectoryObject(true);
1948
- #else
1949
- our_path_object = Nuitka_String_FromString(getDllDirectory());
1950
- #endif
1976
+ our_path_object = getContainingDirectoryObject(true);
1951
1977
  }
1952
1978
 
1953
1979
  return JOIN_PATH2(our_path_object, relative);
@@ -1991,7 +2017,9 @@ volatile int _Py_Ticker = _Py_CheckInterval;
1991
2017
  iternextfunc default_iternext;
1992
2018
 
1993
2019
  void _initSlotIterNext(void) {
1994
- PyObject *pos_args = MAKE_TUPLE1((PyObject *)&PyBaseObject_Type);
2020
+ PyThreadState *tstate = PyThreadState_GET();
2021
+
2022
+ PyObject *pos_args = MAKE_TUPLE1(tstate, (PyObject *)&PyBaseObject_Type);
1995
2023
 
1996
2024
  // Note: Not using MAKE_DICT_EMPTY on purpose, this is called early on.
1997
2025
  PyObject *kw_args = PyDict_New();
@@ -2099,3 +2127,28 @@ PyObject *MAKE_UNION_TYPE(PyObject *args) {
2099
2127
  #endif
2100
2128
 
2101
2129
  #include "MetaPathBasedLoader.c"
2130
+
2131
+ #ifdef _NUITKA_EXPERIMENTAL_DUMP_C_TRACEBACKS
2132
+ #include "HelpersDumpBacktraces.c"
2133
+ #endif
2134
+
2135
+ #ifdef _NUITKA_INLINE_COPY_HACL
2136
+ #include "Hacl_Hash_SHA2.c"
2137
+ #endif
2138
+
2139
+ #include "HelpersJitSources.c"
2140
+
2141
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
2142
+ // integrates with CPython, but also works on its own.
2143
+ //
2144
+ // Licensed under the Apache License, Version 2.0 (the "License");
2145
+ // you may not use this file except in compliance with the License.
2146
+ // You may obtain a copy of the License at
2147
+ //
2148
+ // http://www.apache.org/licenses/LICENSE-2.0
2149
+ //
2150
+ // Unless required by applicable law or agreed to in writing, software
2151
+ // distributed under the License is distributed on an "AS IS" BASIS,
2152
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2153
+ // See the License for the specific language governing permissions and
2154
+ // limitations under the License.