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,6 @@
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
+
3
+
18
4
  """ This tool is generating node variants from Jinja templates.
19
5
 
20
6
  """
@@ -26,15 +12,18 @@ nuitka.Options.is_full_compat = False
26
12
 
27
13
  # isort:start
28
14
 
15
+ import textwrap
29
16
  from collections import namedtuple
30
17
 
31
18
  import nuitka.code_generation.BinaryOperationHelperDefinitions
32
19
  import nuitka.code_generation.CodeGeneration
33
20
  import nuitka.code_generation.ComparisonCodes
34
21
  import nuitka.code_generation.Namify
22
+ import nuitka.nodes.NetworkxNodes
35
23
  import nuitka.nodes.PackageMetadataNodes
36
24
  import nuitka.nodes.PackageResourceNodes
37
25
  import nuitka.nodes.SideEffectNodes
26
+ import nuitka.nodes.TensorflowNodes
38
27
  import nuitka.specs.BuiltinBytesOperationSpecs
39
28
  import nuitka.specs.BuiltinDictOperationSpecs
40
29
  import nuitka.specs.BuiltinListOperationSpecs
@@ -260,22 +249,47 @@ lambda source_ref: wrapExpressionWithNodeSideEffects(
260
249
  )
261
250
  """
262
251
 
252
+ attribute_shape_empty[
253
+ "fromkeys", "tshape_dict"
254
+ ] = """
255
+ lambda source_ref: makeRaiseExceptionReplacementExpression(
256
+ expression=dict_arg,
257
+ exception_type="TypeError",
258
+ exception_value=getDictFromkeysNoArgErrorMessage(),
259
+ )
260
+ """
261
+
263
262
 
264
263
  def emitGenerationWarning(emit, doc_string, template_name):
265
- attribute_code_names = set(attribute_information.keys())
266
- attribute_code_names = set(
264
+ generate_names = set()
265
+
266
+ generate_names.update(attribute_information.keys())
267
+ generate_names.update(
267
268
  attribute_name.replace("_", "") for attribute_name in attribute_information
268
269
  )
269
270
 
270
- attribute_arg_names = set(sum(attribute_shape_args.values(), ()))
271
+ generate_names.update(sum(attribute_shape_args.values(), ()))
272
+
273
+ for spec_descriptions in getSpecVersions(nuitka.specs.HardImportSpecs):
274
+ spec = spec_descriptions[0][2]
275
+ generate_names.update(spec.getArgumentNames())
276
+
277
+ ignores = textwrap.fill(
278
+ " ".join(sorted(generate_names)),
279
+ width=90,
280
+ initial_indent="spell-checker: ignore ",
281
+ subsequent_indent="spell-checker: ignore ",
282
+ break_on_hyphens=False,
283
+ break_long_words=False,
284
+ expand_tabs=False,
285
+ replace_whitespace=False,
286
+ )
271
287
 
272
288
  emit(
273
289
  """
274
290
  # We are not avoiding these in generated code at all
275
- # pylint: disable=I0021,too-many-lines
276
- # pylint: disable=I0021,line-too-long
277
- # pylint: disable=I0021,too-many-instance-attributes
278
- # pylint: disable=I0021,too-many-return-statements
291
+ # pylint: disable=I0021,line-too-long,too-many-instance-attributes,too-many-lines
292
+ # pylint: disable=I0021,too-many-arguments,too-many-return-statements,too-many-statements
279
293
  """
280
294
  )
281
295
 
@@ -285,17 +299,11 @@ def emitGenerationWarning(emit, doc_string, template_name):
285
299
 
286
300
  WARNING, this code is GENERATED. Modify the template %s instead!
287
301
 
288
- spell-checker: ignore %s
289
- spell-checker: ignore %s
302
+ %s
290
303
  """
291
304
 
292
305
  '''
293
- % (
294
- doc_string,
295
- template_name,
296
- " ".join(sorted(attribute_code_names)),
297
- " ".join(sorted(attribute_arg_names)),
298
- )
306
+ % (doc_string, template_name, ignores)
299
307
  )
300
308
 
301
309
 
@@ -360,7 +368,12 @@ def makeAttributeNodes():
360
368
 
361
369
  emit("from nuitka.nodes.ConstantRefNodes import makeConstantRefNode")
362
370
  emit(
363
- "from nuitka.nodes.NodeMakingHelpers import wrapExpressionWithNodeSideEffects"
371
+ """\
372
+ from nuitka.nodes.NodeMakingHelpers import (
373
+ wrapExpressionWithNodeSideEffects,
374
+ makeRaiseExceptionReplacementExpression
375
+ )
376
+ """
364
377
  )
365
378
 
366
379
  emit(
@@ -369,6 +382,8 @@ def makeAttributeNodes():
369
382
 
370
383
  emit("from nuitka.nodes.AttributeNodes import makeExpressionAttributeLookup")
371
384
 
385
+ emit("from nuitka.PythonVersions import getDictFromkeysNoArgErrorMessage")
386
+
372
387
  # TODO: Maybe generate its effect instead of using a base class.
373
388
  emit("from .NodeBases import SideEffectsFromChildrenMixin")
374
389
 
@@ -464,6 +479,8 @@ def makeCodeCased(value):
464
479
 
465
480
 
466
481
  def getCallModuleName(module_name, function_name):
482
+ # return driven, pylint: disable=too-many-return-statements
483
+
467
484
  if module_name in ("pkg_resources", "importlib.metadata", "importlib_metadata"):
468
485
  if function_name in ("resource_stream", "resource_string"):
469
486
  return "PackageResourceNodes"
@@ -475,6 +492,15 @@ def getCallModuleName(module_name, function_name):
475
492
  return "OsSysNodes"
476
493
  if module_name == "ctypes":
477
494
  return "CtypesNodes"
495
+ if module_name == "builtins":
496
+ if function_name == "open":
497
+ return "BuiltinOpenNodes"
498
+
499
+ if module_name == "tensorflow":
500
+ return "TensorflowNodes"
501
+
502
+ if module_name.startswith("networkx"):
503
+ return "NetworkxNodes"
478
504
 
479
505
  assert False, (module_name, function_name)
480
506
 
@@ -627,14 +653,14 @@ def _parseNamedChildrenSpec(named_children):
627
653
  named_children_checkers[named_child] = "convertNoneConstantToNone"
628
654
  elif named_child_property == "auto_none_empty_str":
629
655
  named_children_types[named_child] = "optional"
630
- named_children_checkers[
631
- named_child
632
- ] = "convertEmptyStrConstantToNone"
656
+ named_children_checkers[named_child] = (
657
+ "convertEmptyStrConstantToNone"
658
+ )
633
659
  elif named_child_property == "statements_or_none":
634
660
  named_children_types[named_child] = "optional"
635
- named_children_checkers[
636
- named_child
637
- ] = "checkStatementsSequenceOrNone"
661
+ named_children_checkers[named_child] = (
662
+ "checkStatementsSequenceOrNone"
663
+ )
638
664
  elif named_child_property == "statements":
639
665
  named_children_checkers[named_child] = "checkStatementsSequence"
640
666
  elif named_child_property == "optional":
@@ -723,12 +749,16 @@ def addFromNodes():
723
749
  _addFromNode(node_class)
724
750
 
725
751
  # Fake factories:
726
- node_factory_translations[
727
- "ExpressionImportlibMetadataMetadataCall"
728
- ] = "makeExpressionImportlibMetadataMetadataCall"
729
- node_factory_translations[
730
- "ExpressionImportlibMetadataBackportMetadataCall"
731
- ] = "makeExpressionImportlibMetadataBackportMetadataCall"
752
+ node_factory_translations["ExpressionImportlibMetadataMetadataCall"] = (
753
+ "makeExpressionImportlibMetadataMetadataCall"
754
+ )
755
+ node_factory_translations["ExpressionImportlibMetadataBackportMetadataCall"] = (
756
+ "makeExpressionImportlibMetadataBackportMetadataCall"
757
+ )
758
+ node_factory_translations["ExpressionBuiltinsOpenCall"] = (
759
+ "makeExpressionBuiltinsOpenCall"
760
+ )
761
+ node_factory_translations["ExpressionSysExitCall"] = "makeExpressionSysExitCall"
732
762
 
733
763
 
734
764
  addFromNodes()
@@ -1031,9 +1061,16 @@ hard_import_node_classes = {}
1031
1061
  assert optional_name not in named_children_types
1032
1062
  named_children_types[optional_name] = "optional"
1033
1063
 
1064
+ if spec.getStarListArgumentName():
1065
+ named_children_types[spec.getStarListArgumentName()] = "tuple"
1066
+
1034
1067
  if spec.getStarDictArgumentName():
1035
1068
  named_children_types[spec.getStarDictArgumentName()] = "tuple"
1036
1069
 
1070
+ for kw_only_name in spec.getKwOnlyParameterNames():
1071
+ assert kw_only_name not in named_children_types
1072
+ named_children_types[kw_only_name] = "optional"
1073
+
1037
1074
  if parameter_names:
1038
1075
  mixin_name = addChildrenMixin(
1039
1076
  True,
@@ -1068,6 +1105,16 @@ hard_import_node_classes = {}
1068
1105
  function_name_title=function_name_title,
1069
1106
  function_name_code=makeCodeCased(function_name),
1070
1107
  module_name=module_name,
1108
+ is_stdlib_module=module_name
1109
+ in (
1110
+ "builtins",
1111
+ "os",
1112
+ "os.path",
1113
+ "pkgutil",
1114
+ "ctypes",
1115
+ "importlib.metadata",
1116
+ "importlib.resources",
1117
+ ),
1071
1118
  module_name_code=makeCodeCased(adaptModuleName(module_name)),
1072
1119
  module_name_title=module_name_title,
1073
1120
  call_node_module_name=getCallModuleName(module_name, function_name),
@@ -1082,3 +1129,19 @@ def main():
1082
1129
  makeAttributeNodes()
1083
1130
  makeBuiltinOperationNodes()
1084
1131
  makeChildrenHavingMixinNodes()
1132
+
1133
+
1134
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1135
+ # integrates with CPython, but also works on its own.
1136
+ #
1137
+ # Licensed under the Apache License, Version 2.0 (the "License");
1138
+ # you may not use this file except in compliance with the License.
1139
+ # You may obtain a copy of the License at
1140
+ #
1141
+ # http://www.apache.org/licenses/LICENSE-2.0
1142
+ #
1143
+ # Unless required by applicable law or agreed to in writing, software
1144
+ # distributed under the License is distributed on an "AS IS" BASIS,
1145
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1146
+ # See the License for the specific language governing permissions and
1147
+ # limitations under the License.
@@ -1,5 +1,8 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Dummy file to make this directory a package. """
5
+
3
6
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
7
  # integrates with CPython, but also works on its own.
5
8
  #
@@ -14,5 +17,3 @@
14
17
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
18
  # See the License for the specific language governing permissions and
16
19
  # limitations under the License.
17
- #
18
- """ Dummy file to make this directory a package. """
@@ -1,26 +1,11 @@
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
+
3
+
18
4
  """ Common test infrastructure functions. To be used by test runners. """
19
5
 
20
6
  import ast
21
7
  import atexit
22
8
  import gc
23
- import hashlib
24
9
  import os
25
10
  import re
26
11
  import shutil
@@ -32,7 +17,7 @@ import time
32
17
  from contextlib import contextmanager
33
18
  from optparse import OptionParser
34
19
 
35
- from nuitka.__past__ import subprocess
20
+ from nuitka.__past__ import md5, subprocess
36
21
  from nuitka.PythonVersions import getTestExecutionPythonVersions, isDebugPython
37
22
  from nuitka.Tracing import OurLogger, my_print
38
23
  from nuitka.tree.SourceHandling import readSourceCodeFromFilename
@@ -40,6 +25,7 @@ from nuitka.utils.AppDirs import getCacheDir
40
25
  from nuitka.utils.Execution import (
41
26
  check_output,
42
27
  createProcess,
28
+ executeProcess,
43
29
  getNullInput,
44
30
  getNullOutput,
45
31
  )
@@ -49,6 +35,7 @@ from nuitka.utils.FileOperations import (
49
35
  getFileContentByLine,
50
36
  getFileContents,
51
37
  getFileList,
38
+ getParentDirectories,
52
39
  isFilenameSameAsOrBelowPath,
53
40
  makePath,
54
41
  openTextFile,
@@ -56,7 +43,7 @@ from nuitka.utils.FileOperations import (
56
43
  )
57
44
  from nuitka.utils.InstalledPythons import findInstalledPython
58
45
  from nuitka.utils.Jinja2 import getTemplate
59
- from nuitka.utils.Utils import getOS, isMacOS, isWin32Windows
46
+ from nuitka.utils.Utils import isFreeBSD, isLinux, isMacOS, isWin32Windows
60
47
 
61
48
  from .SearchModes import (
62
49
  SearchModeByPattern,
@@ -220,11 +207,16 @@ def getTempDir():
220
207
  os.path.dirname(os.path.abspath(sys.modules["__main__"].__file__))
221
208
  )
222
209
  + "-",
223
- dir=tempfile.gettempdir() if not os.path.exists("/var/tmp") else "/var/tmp",
210
+ dir=None if not (isLinux() and os.path.exists("/var/tmp")) else "/var/tmp",
224
211
  )
225
212
 
226
213
  def removeTempDir():
227
- removeDirectory(path=tmp_dir, ignore_errors=True)
214
+ removeDirectory(
215
+ path=tmp_dir,
216
+ logger=test_logger,
217
+ ignore_errors=True,
218
+ extra_recommendation=None,
219
+ )
228
220
 
229
221
  atexit.register(removeTempDir)
230
222
 
@@ -324,6 +316,10 @@ def decideFilenameVersionSkip(filename):
324
316
  if filename.endswith("_37.py") and _python_version >= (3, 8):
325
317
  return False
326
318
 
319
+ # Skip tests that require Python 3.11 at maximum.
320
+ if filename.endswith("_311.py") and _python_version >= (3, 8):
321
+ return False
322
+
327
323
  # Skip tests that require Python 3.2 at least.
328
324
  if filename.endswith("32.py") and _python_version < (3, 2):
329
325
  return False
@@ -364,6 +360,10 @@ def decideFilenameVersionSkip(filename):
364
360
  if filename.endswith("311.py") and _python_version < (3, 11):
365
361
  return False
366
362
 
363
+ # Skip tests that require Python 3.12 at least.
364
+ if filename.endswith("312.py") and _python_version < (3, 12):
365
+ return False
366
+
367
367
  return True
368
368
 
369
369
 
@@ -375,7 +375,12 @@ def _removeCPythonTestSuiteDir():
375
375
  # Cleanup, some tests apparently forget that.
376
376
  try:
377
377
  if os.path.isdir("@test"):
378
- removeDirectory("@test", ignore_errors=False)
378
+ removeDirectory(
379
+ "@test",
380
+ logger=test_logger,
381
+ ignore_errors=False,
382
+ extra_recommendation=None,
383
+ )
379
384
  elif os.path.isfile("@test"):
380
385
  os.unlink("@test")
381
386
  except OSError:
@@ -477,9 +482,13 @@ def checkCompilesNotWithCPython(dirname, filename, search_mode):
477
482
  def checkSucceedsWithCPython(filename):
478
483
  command = [_python_executable, filename]
479
484
 
480
- result = subprocess.call(command, stdout=getNullOutput(), stderr=subprocess.STDOUT)
485
+ stdout, stderr, exit_code = executeProcess(command)
481
486
 
482
- return result == 0
487
+ if exit_code != 0:
488
+ my_print("stdout", stdout)
489
+ my_print("stderr", stderr)
490
+
491
+ return exit_code == 0
483
492
 
484
493
 
485
494
  def getDebugPython():
@@ -527,7 +536,7 @@ def displayRuntimeTraces(logger, path):
527
536
 
528
537
  if os.name == "posix":
529
538
  # Run with traces to help debugging, specifically in CI environment.
530
- if getOS() in ("Darwin", "FreeBSD"):
539
+ if isMacOS() or isFreeBSD():
531
540
  test_logger.info("dtruss:")
532
541
  os.system("sudo dtruss %s" % path)
533
542
  else:
@@ -717,7 +726,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
717
726
  my_print("extra:", m1[key], key)
718
727
  elif m1[key] != m2[key]:
719
728
  my_print("*" * 80)
720
- my_print(m1[key], "->", m2[key], key)
729
+ my_print(m1[key], "->", m2[key], repr(key))
721
730
  else:
722
731
  pass
723
732
 
@@ -738,6 +747,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
738
747
 
739
748
  def createSearchMode():
740
749
  # Dealing with many options, pylint: disable=too-many-branches
750
+ # Return driven, pylint: disable=too-many-return-statements
741
751
 
742
752
  parser = OptionParser()
743
753
 
@@ -811,7 +821,9 @@ Defaults to off.""",
811
821
  else:
812
822
  return SearchModeImmediate()
813
823
  elif mode == "resume":
814
- return SearchModeResume(sys.modules["__main__"].__file__)
824
+ return SearchModeResume(sys.modules["__main__"].__file__, skip=False)
825
+ elif mode == "skip":
826
+ return SearchModeResume(sys.modules["__main__"].__file__, skip=True)
815
827
  elif mode == "only":
816
828
  if options.pattern:
817
829
  pattern = options.pattern.replace("/", os.path.sep)
@@ -820,9 +832,9 @@ Defaults to off.""",
820
832
  assert False
821
833
  elif mode == "coverage":
822
834
  return SearchModeCoverage(
823
- start_at=options.pattern.replace("/", os.path.sep)
824
- if options.pattern
825
- else None
835
+ start_at=(
836
+ options.pattern.replace("/", os.path.sep) if options.pattern else None
837
+ )
826
838
  )
827
839
  else:
828
840
  test_logger.sysexit("Error, using unknown search mode %r" % mode)
@@ -840,7 +852,7 @@ def executeReferenceChecked(
840
852
  ):
841
853
  gc.disable()
842
854
 
843
- extract_number = lambda name: int(name.replace(prefix, ""))
855
+ extract_number = lambda name: int(name.replace(prefix, "") or "0")
844
856
 
845
857
  # Find the function names.
846
858
  matching_names = tuple(
@@ -925,7 +937,7 @@ def withPythonPathChange(python_path):
925
937
 
926
938
 
927
939
  def addExtendedExtraOptions(*args):
928
- old_value = os.environ.get("NUITKA_EXTRA_OPTIONS")
940
+ old_value = os.getenv("NUITKA_EXTRA_OPTIONS")
929
941
 
930
942
  value = old_value
931
943
 
@@ -956,7 +968,8 @@ def withExtendedExtraOptions(*args):
956
968
 
957
969
  def indentedCode(codes, count):
958
970
  """Indent code, used for generating test codes."""
959
- return "\n".join(" " * count + line if line else "" for line in codes)
971
+ indent = " " * count
972
+ return "\n".join(indent + line if line else "" for line in codes)
960
973
 
961
974
 
962
975
  def convertToPython(doctests, line_filter=None):
@@ -1179,19 +1192,15 @@ def async_iterate(g):
1179
1192
 
1180
1193
 
1181
1194
  def getTestingCacheDir():
1182
- cache_dir = getCacheDir()
1183
-
1184
- result = os.path.join(cache_dir, "tests_state")
1185
- makePath(result)
1186
- return result
1195
+ cache_dir = getCacheDir("tests_state")
1196
+ makePath(cache_dir)
1197
+ return cache_dir
1187
1198
 
1188
1199
 
1189
1200
  def getTestingCPythonOutputsCacheDir():
1190
- cache_dir = getCacheDir()
1201
+ cache_dir = getCacheDir("cpython_outputs")
1191
1202
 
1192
- result = os.path.join(
1193
- cache_dir, "cpython_outputs", os.environ.get("NUITKA_TEST_SUITE", "")
1194
- )
1203
+ result = os.path.join(cache_dir, os.getenv("NUITKA_TEST_SUITE", ""))
1195
1204
 
1196
1205
  makePath(result)
1197
1206
  return result
@@ -1203,7 +1212,7 @@ def scanDirectoryForTestCases(dirname, template_context=None):
1203
1212
  filenames = [
1204
1213
  filename
1205
1214
  for filename in filenames
1206
- if (filename.endswith(".py") and not filename + ".j2" in filenames)
1215
+ if (filename.endswith(".py") and filename + ".j2" not in filenames)
1207
1216
  or filename.endswith(".j2")
1208
1217
  ]
1209
1218
 
@@ -1273,9 +1282,9 @@ def setupCacheHashSalt(test_code_path):
1273
1282
  stdout_git, stderr_git = process.communicate()
1274
1283
  assert process.returncode == 0, stderr_git
1275
1284
 
1276
- salt_value = hashlib.md5(stdout_git)
1285
+ salt_value = md5(stdout_git)
1277
1286
  else:
1278
- salt_value = hashlib.md5()
1287
+ salt_value = md5()
1279
1288
 
1280
1289
  for filename in getFileList(test_code_path):
1281
1290
  if filename.endswith(".py"):
@@ -1330,6 +1339,8 @@ def checkTestRequirements(filename):
1330
1339
 
1331
1340
  if os.path.isfile(candidate):
1332
1341
  filename = candidate
1342
+ else:
1343
+ filename = os.path.join(filename, getMainProgramFilename(filename))
1333
1344
 
1334
1345
  for line in readSourceCodeFromFilename(None, filename).splitlines():
1335
1346
  if line.startswith("# nuitka-skip-unless-"):
@@ -1399,6 +1410,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1399
1410
  current_dir = os.path.normpath(current_dir)
1400
1411
  current_dir = os.path.normcase(current_dir)
1401
1412
  current_dir_ext = os.path.normcase(getExternalUsePath(current_dir))
1413
+ current_dir_real = os.path.realpath(current_dir)
1402
1414
 
1403
1415
  illegal_accesses = []
1404
1416
 
@@ -1443,6 +1455,17 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1443
1455
  if loaded_filename.startswith(current_dir_ext):
1444
1456
  continue
1445
1457
 
1458
+ if loaded_filename.startswith(current_dir_real):
1459
+ continue
1460
+
1461
+ # Parent directories are OK too
1462
+ if (
1463
+ loaded_filename in getParentDirectories(current_dir)
1464
+ or loaded_filename in getParentDirectories(current_dir_ext)
1465
+ or loaded_filename in getParentDirectories(current_dir_real)
1466
+ ):
1467
+ continue
1468
+
1446
1469
  ignore = True
1447
1470
  for ignored_dir in (
1448
1471
  # System configuration is OK
@@ -1463,6 +1486,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1463
1486
  # Themes may of course be loaded.
1464
1487
  "/usr/share/themes",
1465
1488
  # Terminal info files are OK too.
1489
+ "/usr/share/terminfo",
1466
1490
  "/lib/terminfo",
1467
1491
  ):
1468
1492
  if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
@@ -1620,7 +1644,14 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1620
1644
  # Loading from home directories is OK too.
1621
1645
  if any(
1622
1646
  isFilenameSameAsOrBelowPath(path, loaded_filename)
1623
- for path in ("/home", "/data", "/root", "/Users", "/Library/Preferences")
1647
+ for path in (
1648
+ "/home",
1649
+ "/data",
1650
+ "/root",
1651
+ "/Users",
1652
+ "/Library/Preferences",
1653
+ "/agent", # Azure
1654
+ )
1624
1655
  ):
1625
1656
  continue
1626
1657
 
@@ -1762,10 +1793,12 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1762
1793
 
1763
1794
  # macOS uses these:
1764
1795
  if loaded_basename in (
1796
+ "libc.dylib",
1765
1797
  "libcrypto.1.0.0.dylib",
1766
1798
  "libssl.1.0.0.dylib",
1767
1799
  "libcrypto.1.1.dylib",
1768
1800
  "libffi.dylib",
1801
+ "libfribidi.dylib",
1769
1802
  ):
1770
1803
  continue
1771
1804
 
@@ -1780,13 +1813,11 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1780
1813
  if isMacOS():
1781
1814
  ignore = True
1782
1815
  for ignored_dir in (
1783
- "/System/Library/PrivateFrameworks",
1784
- "/System/Library/CoreServices",
1785
- "/System/Library/Frameworks/",
1786
- "/System/Library/dyld",
1816
+ "/System/Library",
1787
1817
  "/AppleInternal",
1788
1818
  "/System/Volumes/Preboot",
1789
1819
  "/usr/lib/system/",
1820
+ "/usr/libexec/swift",
1790
1821
  ):
1791
1822
  if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
1792
1823
  ignore = False
@@ -1794,6 +1825,9 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1794
1825
  if not ignore:
1795
1826
  continue
1796
1827
 
1828
+ if loaded_filename == "/System/Library":
1829
+ continue
1830
+
1797
1831
  if loaded_filename == "/usr/libexec/rosetta/runtime":
1798
1832
  continue
1799
1833
 
@@ -1884,7 +1918,11 @@ def getLocalWebServerDir(base_dir):
1884
1918
  web_dir = os.path.join(getTempDir(), "local-web-server", base_dir)
1885
1919
 
1886
1920
  if _web_server_process is None:
1887
- web_server_directory_supporting_pythons = ("3.11", "3.10", "3.9", "3.8", "3.7")
1921
+ web_server_directory_supporting_pythons = tuple(
1922
+ python_version
1923
+ for python_version in getTestExecutionPythonVersions()
1924
+ if python_version not in ("3.6", "3.5", "3.4", "2.7", "2.6")
1925
+ )
1888
1926
 
1889
1927
  web_server_python = findInstalledPython(
1890
1928
  python_versions=web_server_directory_supporting_pythons,
@@ -1935,3 +1973,19 @@ def extractNuitkaVersionFromFilePath(version_filename):
1935
1973
  (version_line,) = [line for line in option_lines if line.startswith("Nuitka V")]
1936
1974
 
1937
1975
  return version_line[8:].rstrip()
1976
+
1977
+
1978
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1979
+ # integrates with CPython, but also works on its own.
1980
+ #
1981
+ # Licensed under the Apache License, Version 2.0 (the "License");
1982
+ # you may not use this file except in compliance with the License.
1983
+ # You may obtain a copy of the License at
1984
+ #
1985
+ # http://www.apache.org/licenses/LICENSE-2.0
1986
+ #
1987
+ # Unless required by applicable law or agreed to in writing, software
1988
+ # distributed under the License is distributed on an "AS IS" BASIS,
1989
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1990
+ # See the License for the specific language governing permissions and
1991
+ # limitations under the License.