Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__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 (728) hide show
  1. Nuitka_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
  2. Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
  3. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
  4. Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
  5. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
  6. nuitka/Builtins.py +49 -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 +408 -0
  13. nuitka/MainControl.py +209 -116
  14. nuitka/ModuleRegistry.py +83 -20
  15. nuitka/OptionParsing.py +467 -221
  16. nuitka/Options.py +701 -225
  17. nuitka/OutputDirectories.py +47 -23
  18. nuitka/PostProcessing.py +133 -79
  19. nuitka/Progress.py +73 -24
  20. nuitka/PythonFlavors.py +141 -32
  21. nuitka/PythonOperators.py +18 -17
  22. nuitka/PythonVersions.py +107 -19
  23. nuitka/Serialization.py +70 -55
  24. nuitka/SourceCodeReferences.py +19 -17
  25. nuitka/Tracing.py +176 -70
  26. nuitka/TreeXML.py +31 -26
  27. nuitka/Variables.py +39 -41
  28. nuitka/Version.py +22 -8
  29. nuitka/__init__.py +5 -4
  30. nuitka/__main__.py +95 -29
  31. nuitka/__past__.py +44 -34
  32. nuitka/build/Backend.scons +243 -141
  33. nuitka/build/CCompilerVersion.scons +45 -31
  34. nuitka/build/DataComposerInterface.py +20 -17
  35. nuitka/build/Onefile.scons +56 -54
  36. nuitka/build/SconsCaching.py +105 -92
  37. nuitka/build/SconsCompilerSettings.py +167 -68
  38. nuitka/build/SconsHacks.py +25 -19
  39. nuitka/build/SconsInterface.py +155 -54
  40. nuitka/build/SconsProgress.py +19 -18
  41. nuitka/build/SconsSpawn.py +62 -33
  42. nuitka/build/SconsUtils.py +152 -55
  43. nuitka/build/__init__.py +5 -4
  44. nuitka/build/include/nuitka/allocator.h +228 -22
  45. nuitka/build/include/nuitka/builtins.h +17 -17
  46. nuitka/build/include/nuitka/calling.h +24 -24
  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 +28 -25
  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 +93 -54
  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 +35 -18
  57. nuitka/build/include/nuitka/constants_blob.h +17 -17
  58. nuitka/build/include/nuitka/debug_settings.h +60 -0
  59. nuitka/build/include/nuitka/environment_variables.h +30 -0
  60. nuitka/build/include/nuitka/environment_variables_system.h +45 -0
  61. nuitka/build/include/nuitka/exception_groups.h +23 -26
  62. nuitka/build/include/nuitka/exceptions.h +717 -171
  63. nuitka/build/include/nuitka/filesystem_paths.h +26 -20
  64. nuitka/build/include/nuitka/freelists.h +38 -18
  65. nuitka/build/include/nuitka/helper/attributes.h +24 -22
  66. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  67. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  68. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  69. nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
  70. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  74. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  75. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  76. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  77. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  78. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  79. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  80. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  81. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  82. nuitka/build/include/nuitka/helper/complex.h +17 -17
  83. nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
  84. nuitka/build/include/nuitka/helper/floats.h +17 -18
  85. nuitka/build/include/nuitka/helper/import_hard.h +25 -17
  86. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  87. nuitka/build/include/nuitka/helper/ints.h +115 -54
  88. nuitka/build/include/nuitka/helper/iterators.h +99 -51
  89. nuitka/build/include/nuitka/helper/lists.h +26 -24
  90. nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
  91. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  92. nuitka/build/include/nuitka/helper/operations.h +20 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
  108. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  115. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  116. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  117. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  118. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  119. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  120. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  121. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  122. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
  123. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  124. nuitka/build/include/nuitka/helper/raising.h +68 -37
  125. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  126. nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
  127. nuitka/build/include/nuitka/helper/sequences.h +19 -13
  128. nuitka/build/include/nuitka/helper/sets.h +11 -12
  129. nuitka/build/include/nuitka/helper/slices.h +31 -25
  130. nuitka/build/include/nuitka/helper/strings.h +16 -17
  131. nuitka/build/include/nuitka/helper/subscripts.h +18 -201
  132. nuitka/build/include/nuitka/helper/tuples.h +64 -52
  133. nuitka/build/include/nuitka/helpers.h +50 -22
  134. nuitka/build/include/nuitka/importing.h +28 -21
  135. nuitka/build/include/nuitka/jit_sources.h +25 -0
  136. nuitka/build/include/nuitka/prelude.h +163 -71
  137. nuitka/build/include/nuitka/printing.h +29 -22
  138. nuitka/build/include/nuitka/python_pgo.h +19 -18
  139. nuitka/build/include/nuitka/safe_string_ops.h +20 -18
  140. nuitka/build/include/nuitka/threading.h +45 -32
  141. nuitka/build/include/nuitka/tracing.h +28 -18
  142. nuitka/build/include/nuitka/type_aliases.h +30 -0
  143. nuitka/build/include/nuitka/unfreezing.h +29 -23
  144. nuitka/build/inline_copy/bin/scons.py +14 -0
  145. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
  146. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
  147. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  148. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  149. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  150. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  151. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  152. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  153. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  154. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  155. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  156. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  157. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  158. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  159. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  160. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  161. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  162. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  163. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  164. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  165. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  166. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  167. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  168. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  169. nuitka/build/inline_copy/stubgen/six.py +998 -0
  170. nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
  171. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
  172. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
  173. nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
  174. nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
  175. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  176. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  177. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  178. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  179. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  180. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  181. nuitka/build/static_src/CompiledAsyncgenType.c +221 -221
  182. nuitka/build/static_src/CompiledCellType.c +69 -44
  183. nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
  184. nuitka/build/static_src/CompiledCoroutineType.c +229 -226
  185. nuitka/build/static_src/CompiledFrameType.c +323 -138
  186. nuitka/build/static_src/CompiledFunctionType.c +547 -231
  187. nuitka/build/static_src/CompiledGeneratorType.c +416 -290
  188. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
  189. nuitka/build/static_src/CompiledMethodType.c +91 -82
  190. nuitka/build/static_src/HelpersAllocator.c +352 -45
  191. nuitka/build/static_src/HelpersAttributes.c +30 -72
  192. nuitka/build/static_src/HelpersBuiltin.c +65 -46
  193. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  194. nuitka/build/static_src/HelpersBytes.c +19 -20
  195. nuitka/build/static_src/HelpersCalling.c +40 -37
  196. nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
  197. nuitka/build/static_src/HelpersChecksumTools.c +35 -21
  198. nuitka/build/static_src/HelpersClasses.c +17 -17
  199. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  200. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  201. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  202. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  203. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  204. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  205. nuitka/build/static_src/HelpersComparisonEq.c +536 -496
  206. nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
  207. nuitka/build/static_src/HelpersComparisonGe.c +531 -501
  208. nuitka/build/static_src/HelpersComparisonGt.c +530 -500
  209. nuitka/build/static_src/HelpersComparisonLe.c +531 -501
  210. nuitka/build/static_src/HelpersComparisonLt.c +530 -500
  211. nuitka/build/static_src/HelpersComparisonNe.c +538 -496
  212. nuitka/build/static_src/HelpersConsole.c +122 -0
  213. nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
  214. nuitka/build/static_src/HelpersDeepcopy.c +33 -33
  215. nuitka/build/static_src/HelpersDictionaries.c +232 -63
  216. nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
  217. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  218. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  219. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
  220. nuitka/build/static_src/HelpersExceptions.c +147 -62
  221. nuitka/build/static_src/HelpersFiles.c +116 -22
  222. nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
  223. nuitka/build/static_src/HelpersFloats.c +37 -31
  224. nuitka/build/static_src/HelpersHeapStorage.c +21 -17
  225. nuitka/build/static_src/HelpersImport.c +61 -29
  226. nuitka/build/static_src/HelpersImportHard.c +74 -61
  227. nuitka/build/static_src/HelpersJitSources.c +46 -0
  228. nuitka/build/static_src/HelpersLists.c +237 -58
  229. nuitka/build/static_src/HelpersListsGenerated.c +41 -41
  230. nuitka/build/static_src/HelpersMappings.c +17 -17
  231. nuitka/build/static_src/HelpersMatching.c +137 -51
  232. nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
  233. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
  234. nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
  235. nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
  236. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
  237. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
  238. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  239. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  240. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
  241. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
  242. nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
  243. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
  244. nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
  245. nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
  246. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
  247. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
  248. nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
  249. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  250. nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
  251. nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
  252. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
  253. nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
  254. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
  255. nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
  256. nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
  257. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
  258. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
  259. nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
  260. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
  261. nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
  262. nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
  263. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
  264. nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
  265. nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
  266. nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
  267. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
  268. nuitka/build/static_src/HelpersProfiling.c +25 -24
  269. nuitka/build/static_src/HelpersPythonPgo.c +22 -22
  270. nuitka/build/static_src/HelpersRaising.c +296 -283
  271. nuitka/build/static_src/HelpersSafeStrings.c +34 -22
  272. nuitka/build/static_src/HelpersSequences.c +18 -19
  273. nuitka/build/static_src/HelpersSlices.c +29 -23
  274. nuitka/build/static_src/HelpersStrings.c +235 -38
  275. nuitka/build/static_src/HelpersTuples.c +46 -34
  276. nuitka/build/static_src/HelpersTypes.c +166 -25
  277. nuitka/build/static_src/InspectPatcher.c +108 -27
  278. nuitka/build/static_src/MainProgram.c +464 -280
  279. nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
  280. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
  281. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  282. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
  283. nuitka/build/static_src/OnefileBootstrap.c +281 -164
  284. nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
  285. nuitka/code_generation/AsyncgenCodes.py +21 -23
  286. nuitka/code_generation/AttributeCodes.py +31 -27
  287. nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
  288. nuitka/code_generation/BranchCodes.py +19 -17
  289. nuitka/code_generation/BuiltinCodes.py +29 -18
  290. nuitka/code_generation/CallCodes.py +35 -33
  291. nuitka/code_generation/ClassCodes.py +19 -17
  292. nuitka/code_generation/CodeGeneration.py +61 -28
  293. nuitka/code_generation/CodeHelperSelection.py +20 -18
  294. nuitka/code_generation/CodeHelpers.py +28 -21
  295. nuitka/code_generation/CodeObjectCodes.py +36 -26
  296. nuitka/code_generation/ComparisonCodes.py +51 -22
  297. nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
  298. nuitka/code_generation/ConditionalCodes.py +19 -17
  299. nuitka/code_generation/ConstantCodes.py +82 -28
  300. nuitka/code_generation/Contexts.py +180 -42
  301. nuitka/code_generation/CoroutineCodes.py +21 -23
  302. nuitka/code_generation/CtypesCodes.py +19 -17
  303. nuitka/code_generation/DictCodes.py +28 -26
  304. nuitka/code_generation/Emission.py +21 -18
  305. nuitka/code_generation/ErrorCodes.py +57 -79
  306. nuitka/code_generation/EvalCodes.py +24 -20
  307. nuitka/code_generation/ExceptionCodes.py +182 -104
  308. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
  309. nuitka/code_generation/ExpressionCodes.py +19 -17
  310. nuitka/code_generation/FrameCodes.py +28 -31
  311. nuitka/code_generation/FunctionCodes.py +26 -27
  312. nuitka/code_generation/GeneratorCodes.py +25 -26
  313. nuitka/code_generation/GlobalConstants.py +51 -25
  314. nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
  315. nuitka/code_generation/IdCodes.py +19 -17
  316. nuitka/code_generation/ImportCodes.py +90 -50
  317. nuitka/code_generation/Indentation.py +23 -22
  318. nuitka/code_generation/IndexCodes.py +19 -17
  319. nuitka/code_generation/InjectCCodes.py +14 -12
  320. nuitka/code_generation/IntegerCodes.py +19 -17
  321. nuitka/code_generation/IteratorCodes.py +86 -71
  322. nuitka/code_generation/JitCodes.py +44 -0
  323. nuitka/code_generation/LabelCodes.py +19 -17
  324. nuitka/code_generation/LineNumberCodes.py +20 -20
  325. nuitka/code_generation/ListCodes.py +32 -36
  326. nuitka/code_generation/LoaderCodes.py +22 -17
  327. nuitka/code_generation/LocalsDictCodes.py +56 -32
  328. nuitka/code_generation/LoopCodes.py +19 -17
  329. nuitka/code_generation/MatchCodes.py +42 -22
  330. nuitka/code_generation/ModuleCodes.py +71 -29
  331. nuitka/code_generation/Namify.py +27 -23
  332. nuitka/code_generation/NetworkxCodes.py +51 -0
  333. nuitka/code_generation/OperationCodes.py +80 -51
  334. nuitka/code_generation/PackageResourceCodes.py +96 -23
  335. nuitka/code_generation/PrintCodes.py +19 -17
  336. nuitka/code_generation/PythonAPICodes.py +19 -17
  337. nuitka/code_generation/RaisingCodes.py +183 -107
  338. nuitka/code_generation/Reports.py +32 -22
  339. nuitka/code_generation/ReturnCodes.py +20 -32
  340. nuitka/code_generation/SetCodes.py +19 -17
  341. nuitka/code_generation/SliceCodes.py +22 -20
  342. nuitka/code_generation/StringCodes.py +19 -17
  343. nuitka/code_generation/SubscriptCodes.py +24 -30
  344. nuitka/code_generation/TensorflowCodes.py +54 -0
  345. nuitka/code_generation/TryCodes.py +31 -41
  346. nuitka/code_generation/TupleCodes.py +20 -18
  347. nuitka/code_generation/TypeAliasCodes.py +119 -0
  348. nuitka/code_generation/VariableCodes.py +118 -55
  349. nuitka/code_generation/VariableDeclarations.py +28 -25
  350. nuitka/code_generation/YieldCodes.py +23 -21
  351. nuitka/code_generation/__init__.py +5 -4
  352. nuitka/code_generation/c_types/CTypeBases.py +29 -19
  353. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  354. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  355. nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
  356. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
  357. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
  358. nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
  359. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
  360. nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
  361. nuitka/code_generation/c_types/CTypeVoids.py +20 -17
  362. nuitka/code_generation/c_types/__init__.py +5 -4
  363. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
  364. nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
  365. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
  366. nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
  367. nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
  368. nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
  369. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
  370. nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
  371. nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
  372. nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
  373. nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
  374. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
  375. nuitka/code_generation/templates/__init__.py +5 -4
  376. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
  377. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
  378. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
  379. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
  380. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
  381. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
  382. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  383. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
  384. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
  385. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
  386. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  387. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
  388. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  389. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
  390. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
  391. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  392. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  393. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
  394. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
  395. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
  396. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
  397. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
  398. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
  399. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
  400. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
  401. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  402. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  403. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  404. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
  405. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
  406. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
  407. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  408. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  409. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
  410. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  411. nuitka/containers/Namedtuples.py +25 -18
  412. nuitka/containers/OrderedSets.py +105 -5
  413. nuitka/containers/OrderedSetsFallback.py +19 -17
  414. nuitka/containers/__init__.py +5 -4
  415. nuitka/distutils/Build.py +33 -18
  416. nuitka/distutils/DistutilCommands.py +84 -33
  417. nuitka/distutils/__init__.py +5 -4
  418. nuitka/finalizations/Finalization.py +21 -18
  419. nuitka/finalizations/FinalizeMarkups.py +31 -55
  420. nuitka/finalizations/__init__.py +5 -4
  421. nuitka/freezer/DependsExe.py +60 -30
  422. nuitka/freezer/DllDependenciesCommon.py +47 -20
  423. nuitka/freezer/DllDependenciesMacOS.py +165 -58
  424. nuitka/freezer/DllDependenciesPosix.py +29 -19
  425. nuitka/freezer/DllDependenciesWin32.py +55 -33
  426. nuitka/freezer/ImportDetection.py +23 -17
  427. nuitka/freezer/IncludedDataFiles.py +142 -48
  428. nuitka/freezer/IncludedEntryPoints.py +104 -39
  429. nuitka/freezer/Onefile.py +32 -22
  430. nuitka/freezer/Standalone.py +166 -53
  431. nuitka/freezer/__init__.py +5 -4
  432. nuitka/importing/IgnoreListing.py +19 -17
  433. nuitka/importing/ImportCache.py +24 -21
  434. nuitka/importing/ImportResolving.py +103 -95
  435. nuitka/importing/Importing.py +319 -98
  436. nuitka/importing/PreloadedPackages.py +21 -18
  437. nuitka/importing/Recursion.py +142 -47
  438. nuitka/importing/StandardLibrary.py +96 -80
  439. nuitka/importing/__init__.py +5 -4
  440. nuitka/nodes/AsyncgenNodes.py +22 -23
  441. nuitka/nodes/AttributeLookupNodes.py +19 -17
  442. nuitka/nodes/AttributeNodes.py +19 -17
  443. nuitka/nodes/AttributeNodesGenerated.py +49 -24
  444. nuitka/nodes/BuiltinAllNodes.py +19 -17
  445. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  446. nuitka/nodes/BuiltinComplexNodes.py +20 -17
  447. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  448. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  449. nuitka/nodes/BuiltinDictNodes.py +19 -17
  450. nuitka/nodes/BuiltinFormatNodes.py +20 -17
  451. nuitka/nodes/BuiltinHashNodes.py +19 -17
  452. nuitka/nodes/BuiltinInputNodes.py +19 -17
  453. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  454. nuitka/nodes/BuiltinIteratorNodes.py +25 -21
  455. nuitka/nodes/BuiltinLenNodes.py +19 -17
  456. nuitka/nodes/BuiltinNextNodes.py +19 -17
  457. nuitka/nodes/BuiltinOpenNodes.py +52 -18
  458. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
  459. nuitka/nodes/BuiltinRangeNodes.py +21 -19
  460. nuitka/nodes/BuiltinRefNodes.py +73 -40
  461. nuitka/nodes/BuiltinSumNodes.py +20 -18
  462. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  463. nuitka/nodes/BuiltinVarsNodes.py +19 -18
  464. nuitka/nodes/BytesNodes.py +19 -17
  465. nuitka/nodes/CallNodes.py +19 -17
  466. nuitka/nodes/Checkers.py +19 -17
  467. nuitka/nodes/ChildrenHavingMixins.py +1624 -283
  468. nuitka/nodes/ClassNodes.py +49 -29
  469. nuitka/nodes/CodeObjectSpecs.py +29 -18
  470. nuitka/nodes/ComparisonNodes.py +19 -17
  471. nuitka/nodes/ConditionalNodes.py +24 -25
  472. nuitka/nodes/ConstantRefNodes.py +57 -17
  473. nuitka/nodes/ContainerMakingNodes.py +19 -17
  474. nuitka/nodes/ContainerOperationNodes.py +19 -17
  475. nuitka/nodes/CoroutineNodes.py +22 -23
  476. nuitka/nodes/CtypesNodes.py +19 -18
  477. nuitka/nodes/DictionaryNodes.py +19 -18
  478. nuitka/nodes/ExceptionNodes.py +131 -43
  479. nuitka/nodes/ExecEvalNodes.py +19 -17
  480. nuitka/nodes/ExpressionBases.py +34 -26
  481. nuitka/nodes/ExpressionBasesGenerated.py +341 -35
  482. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  483. nuitka/nodes/FrameNodes.py +41 -28
  484. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  485. nuitka/nodes/FunctionNodes.py +84 -38
  486. nuitka/nodes/FutureSpecs.py +35 -20
  487. nuitka/nodes/GeneratorNodes.py +24 -25
  488. nuitka/nodes/GlobalsLocalsNodes.py +22 -17
  489. nuitka/nodes/HardImportNodesGenerated.py +746 -148
  490. nuitka/nodes/ImportHardNodes.py +46 -38
  491. nuitka/nodes/ImportNodes.py +438 -448
  492. nuitka/nodes/IndicatorMixins.py +19 -17
  493. nuitka/nodes/InjectCNodes.py +19 -18
  494. nuitka/nodes/IterationHandles.py +55 -34
  495. nuitka/nodes/KeyValuePairNodes.py +19 -17
  496. nuitka/nodes/ListOperationNodes.py +33 -21
  497. nuitka/nodes/LocalsDictNodes.py +19 -17
  498. nuitka/nodes/LocalsScopes.py +41 -41
  499. nuitka/nodes/LoopNodes.py +28 -17
  500. nuitka/nodes/MatchNodes.py +37 -24
  501. nuitka/nodes/ModuleAttributeNodes.py +18 -35
  502. nuitka/nodes/ModuleNodes.py +90 -31
  503. nuitka/nodes/NetworkxNodes.py +45 -0
  504. nuitka/nodes/NodeBases.py +73 -44
  505. nuitka/nodes/NodeMakingHelpers.py +92 -69
  506. nuitka/nodes/NodeMetaClasses.py +45 -28
  507. nuitka/nodes/OperatorNodes.py +28 -26
  508. nuitka/nodes/OperatorNodesUnary.py +148 -20
  509. nuitka/nodes/OsSysNodes.py +97 -18
  510. nuitka/nodes/OutlineNodes.py +24 -22
  511. nuitka/nodes/PackageMetadataNodes.py +37 -27
  512. nuitka/nodes/PackageResourceNodes.py +29 -23
  513. nuitka/nodes/PrintNodes.py +19 -17
  514. nuitka/nodes/ReturnNodes.py +20 -18
  515. nuitka/nodes/SideEffectNodes.py +19 -17
  516. nuitka/nodes/SliceNodes.py +20 -18
  517. nuitka/nodes/StatementBasesGenerated.py +125 -79
  518. nuitka/nodes/StatementNodes.py +27 -24
  519. nuitka/nodes/StrNodes.py +19 -17
  520. nuitka/nodes/StringConcatenationNodes.py +20 -17
  521. nuitka/nodes/SubscriptNodes.py +27 -25
  522. nuitka/nodes/TensorflowNodes.py +38 -0
  523. nuitka/nodes/TryNodes.py +19 -17
  524. nuitka/nodes/TypeMatchNodes.py +19 -17
  525. nuitka/nodes/TypeNodes.py +68 -18
  526. nuitka/nodes/VariableAssignNodes.py +122 -64
  527. nuitka/nodes/VariableDelNodes.py +19 -17
  528. nuitka/nodes/VariableNameNodes.py +19 -17
  529. nuitka/nodes/VariableRefNodes.py +63 -26
  530. nuitka/nodes/VariableReleaseNodes.py +19 -17
  531. nuitka/nodes/YieldNodes.py +21 -19
  532. nuitka/nodes/__init__.py +5 -4
  533. nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
  534. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  535. nuitka/nodes/shapes/ShapeMixins.py +57 -17
  536. nuitka/nodes/shapes/StandardShapes.py +80 -21
  537. nuitka/nodes/shapes/__init__.py +5 -4
  538. nuitka/optimizations/BytecodeDemotion.py +21 -18
  539. nuitka/optimizations/FunctionInlining.py +22 -23
  540. nuitka/optimizations/Graphs.py +19 -17
  541. nuitka/optimizations/Optimization.py +39 -35
  542. nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
  543. nuitka/optimizations/Tags.py +19 -18
  544. nuitka/optimizations/TraceCollections.py +67 -24
  545. nuitka/optimizations/ValueTraces.py +92 -25
  546. nuitka/optimizations/__init__.py +5 -4
  547. nuitka/pgo/PGO.py +33 -23
  548. nuitka/pgo/__init__.py +5 -4
  549. nuitka/plugins/PluginBase.py +655 -112
  550. nuitka/plugins/Plugins.py +247 -61
  551. nuitka/plugins/YamlPluginBase.py +121 -0
  552. nuitka/plugins/__init__.py +5 -4
  553. nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
  554. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
  555. nuitka/plugins/standard/DataFilesPlugin.py +65 -29
  556. nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
  557. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  558. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
  559. nuitka/plugins/standard/DillPlugin.py +42 -134
  560. nuitka/plugins/standard/DllFilesPlugin.py +125 -42
  561. nuitka/plugins/standard/EnumPlugin.py +19 -17
  562. nuitka/plugins/standard/EventletPlugin.py +19 -17
  563. nuitka/plugins/standard/GeventPlugin.py +19 -17
  564. nuitka/plugins/standard/GiPlugin.py +44 -28
  565. nuitka/plugins/standard/GlfwPlugin.py +20 -17
  566. nuitka/plugins/standard/ImplicitImports.py +403 -54
  567. nuitka/plugins/standard/KivyPlugin.py +24 -20
  568. nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
  569. nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
  570. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  571. nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
  572. nuitka/plugins/standard/PbrPlugin.py +21 -19
  573. nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
  574. nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
  575. nuitka/plugins/standard/PmwPlugin.py +30 -27
  576. nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
  577. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  578. nuitka/plugins/standard/SpacyPlugin.py +136 -0
  579. nuitka/plugins/standard/TensorflowPlugin.py +20 -17
  580. nuitka/plugins/standard/TkinterPlugin.py +102 -108
  581. nuitka/plugins/standard/TorchPlugin.py +20 -17
  582. nuitka/plugins/standard/TransformersPlugin.py +90 -231
  583. nuitka/plugins/standard/TrioPlugin.py +18 -15
  584. nuitka/plugins/standard/UpxPlugin.py +21 -19
  585. nuitka/plugins/standard/__init__.py +5 -4
  586. nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
  587. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
  588. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
  589. nuitka/reports/CompilationReportReader.py +79 -0
  590. nuitka/reports/LicenseReport.rst.j2 +21 -21
  591. nuitka/reports/Reports.py +363 -76
  592. nuitka/reports/__init__.py +5 -4
  593. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  594. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  595. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  596. nuitka/specs/BuiltinParameterSpecs.py +35 -21
  597. nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
  598. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
  599. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  600. nuitka/specs/HardImportSpecs.py +74 -22
  601. nuitka/specs/ParameterSpecs.py +60 -45
  602. nuitka/specs/__init__.py +5 -4
  603. nuitka/tools/Basics.py +20 -18
  604. nuitka/tools/__init__.py +5 -4
  605. nuitka/tools/commercial/__init__.py +7 -6
  606. nuitka/tools/data_composer/DataComposer.py +78 -62
  607. nuitka/tools/data_composer/__init__.py +5 -4
  608. nuitka/tools/data_composer/__main__.py +18 -17
  609. nuitka/tools/environments/CreateEnvironment.py +20 -17
  610. nuitka/tools/environments/Virtualenv.py +60 -32
  611. nuitka/tools/environments/__init__.py +5 -4
  612. nuitka/tools/general/__init__.py +5 -4
  613. nuitka/tools/general/dll_report/__init__.py +5 -4
  614. nuitka/tools/general/dll_report/__main__.py +29 -22
  615. nuitka/tools/general/find_module/FindModuleCode.py +35 -22
  616. nuitka/tools/general/find_module/__init__.py +5 -4
  617. nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
  618. nuitka/tools/onefile_compressor/__init__.py +5 -4
  619. nuitka/tools/onefile_compressor/__main__.py +18 -17
  620. nuitka/tools/podman/Podman.py +19 -17
  621. nuitka/tools/podman/__init__.py +5 -4
  622. nuitka/tools/podman/__main__.py +35 -19
  623. nuitka/tools/profiler/__init__.py +5 -4
  624. nuitka/tools/profiler/__main__.py +18 -17
  625. nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
  626. nuitka/tools/scanning/DisplayPackageData.py +31 -19
  627. nuitka/tools/scanning/__init__.py +5 -4
  628. nuitka/tools/specialize/CTypeDescriptions.py +251 -80
  629. nuitka/tools/specialize/Common.py +18 -17
  630. nuitka/tools/specialize/SpecializeC.py +248 -82
  631. nuitka/tools/specialize/SpecializePython.py +108 -45
  632. nuitka/tools/specialize/__init__.py +5 -4
  633. nuitka/tools/testing/Common.py +175 -114
  634. nuitka/tools/testing/Constructs.py +19 -17
  635. nuitka/tools/testing/OutputComparison.py +54 -18
  636. nuitka/tools/testing/Pythons.py +19 -18
  637. nuitka/tools/testing/RuntimeTracing.py +20 -19
  638. nuitka/tools/testing/SearchModes.py +26 -20
  639. nuitka/tools/testing/Valgrind.py +19 -17
  640. nuitka/tools/testing/__init__.py +5 -4
  641. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  642. nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
  643. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  644. nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
  645. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  646. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  647. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  648. nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
  649. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  650. nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
  651. nuitka/tools/watch/AutoStage.py +145 -0
  652. nuitka/tools/watch/GitHub.py +113 -0
  653. nuitka/tools/watch/__init__.py +5 -4
  654. nuitka/tools/watch/__main__.py +322 -91
  655. nuitka/tree/Building.py +184 -182
  656. nuitka/tree/ComplexCallHelperFunctions.py +84 -58
  657. nuitka/tree/Extractions.py +19 -17
  658. nuitka/tree/InternalModule.py +29 -20
  659. nuitka/tree/Operations.py +19 -17
  660. nuitka/tree/ReformulationAssertStatements.py +51 -31
  661. nuitka/tree/ReformulationAssignmentStatements.py +96 -91
  662. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  663. nuitka/tree/ReformulationCallExpressions.py +20 -18
  664. nuitka/tree/ReformulationClasses.py +45 -39
  665. nuitka/tree/ReformulationClasses3.py +239 -116
  666. nuitka/tree/ReformulationComparisonExpressions.py +29 -35
  667. nuitka/tree/ReformulationContractionExpressions.py +58 -55
  668. nuitka/tree/ReformulationDictionaryCreation.py +41 -35
  669. nuitka/tree/ReformulationExecStatements.py +42 -39
  670. nuitka/tree/ReformulationForLoopStatements.py +30 -34
  671. nuitka/tree/ReformulationFunctionStatements.py +59 -55
  672. nuitka/tree/ReformulationImportStatements.py +34 -29
  673. nuitka/tree/ReformulationLambdaExpressions.py +23 -24
  674. nuitka/tree/ReformulationMatchStatements.py +246 -92
  675. nuitka/tree/ReformulationMultidist.py +22 -18
  676. nuitka/tree/ReformulationNamespacePackages.py +55 -46
  677. nuitka/tree/ReformulationPrintStatements.py +23 -24
  678. nuitka/tree/ReformulationSequenceCreation.py +50 -49
  679. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  680. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  681. nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
  682. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  683. nuitka/tree/ReformulationWithStatements.py +39 -41
  684. nuitka/tree/ReformulationYieldExpressions.py +44 -24
  685. nuitka/tree/SourceHandling.py +76 -31
  686. nuitka/tree/SyntaxErrors.py +19 -17
  687. nuitka/tree/TreeHelpers.py +33 -20
  688. nuitka/tree/VariableClosure.py +35 -39
  689. nuitka/tree/__init__.py +5 -4
  690. nuitka/utils/AppDirs.py +41 -20
  691. nuitka/utils/CStrings.py +66 -21
  692. nuitka/utils/CommandLineOptions.py +111 -22
  693. nuitka/utils/Distributions.py +445 -54
  694. nuitka/utils/Download.py +89 -57
  695. nuitka/utils/Execution.py +102 -58
  696. nuitka/utils/FileOperations.py +357 -128
  697. nuitka/utils/Hashing.py +55 -33
  698. nuitka/utils/Images.py +26 -19
  699. nuitka/utils/Importing.py +119 -37
  700. nuitka/utils/InlineCopies.py +52 -0
  701. nuitka/utils/InstalledPythons.py +85 -75
  702. nuitka/utils/InstanceCounters.py +20 -17
  703. nuitka/utils/Jinja2.py +30 -22
  704. nuitka/utils/Json.py +21 -19
  705. nuitka/utils/MacOSApp.py +26 -18
  706. nuitka/utils/MemoryUsage.py +20 -18
  707. nuitka/utils/ModuleNames.py +42 -26
  708. nuitka/utils/PackageResources.py +44 -0
  709. nuitka/utils/ReExecute.py +50 -28
  710. nuitka/utils/Rest.py +20 -17
  711. nuitka/utils/SharedLibraries.py +161 -75
  712. nuitka/utils/Shebang.py +20 -17
  713. nuitka/utils/Signing.py +63 -18
  714. nuitka/utils/SlotMetaClasses.py +57 -0
  715. nuitka/utils/StaticLibraries.py +83 -56
  716. nuitka/utils/ThreadedExecutor.py +18 -17
  717. nuitka/utils/Timing.py +22 -20
  718. nuitka/utils/Utils.py +132 -25
  719. nuitka/utils/WindowsFileUsage.py +22 -20
  720. nuitka/utils/WindowsResources.py +25 -18
  721. nuitka/utils/Yaml.py +62 -24
  722. nuitka/utils/__init__.py +5 -4
  723. Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
  724. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
  725. nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
  726. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
  727. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
  728. {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
@@ -1,28 +1,12 @@
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
- import re
26
10
  import shutil
27
11
  import signal
28
12
  import sys
@@ -32,7 +16,8 @@ import time
32
16
  from contextlib import contextmanager
33
17
  from optparse import OptionParser
34
18
 
35
- from nuitka.__past__ import subprocess
19
+ from nuitka.__past__ import md5, subprocess
20
+ from nuitka.Options import getCommercialVersion
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
 
@@ -236,8 +228,9 @@ def convertUsing2to3(path, force=False):
236
228
 
237
229
  if not force:
238
230
  if "xrange" not in getFileContents(path):
239
- if check_result(command, stderr=getNullOutput()):
240
- return path, False
231
+ with getNullOutput() as null_output:
232
+ if check_result(command, stderr=null_output):
233
+ return path, False
241
234
 
242
235
  filename = os.path.basename(path)
243
236
 
@@ -266,16 +259,17 @@ def convertUsing2to3(path, force=False):
266
259
 
267
260
  command += ("-w", "-n", "--no-diffs", new_path)
268
261
 
269
- try:
270
- check_output(command, stderr=getNullOutput())
262
+ with getNullOutput() as null_output:
263
+ try:
264
+ check_output(command, stderr=null_output)
271
265
 
272
- except subprocess.CalledProcessError:
273
- if isWin32Windows():
274
- raise
266
+ except subprocess.CalledProcessError:
267
+ if isWin32Windows():
268
+ raise
275
269
 
276
- command[0:3] = ["2to3"]
270
+ command[0:3] = ["2to3"]
277
271
 
278
- check_output(command, stderr=getNullOutput())
272
+ check_output(command, stderr=null_output)
279
273
 
280
274
  data = getFileContents(new_path)
281
275
 
@@ -305,6 +299,10 @@ def decideFilenameVersionSkip(filename):
305
299
 
306
300
  assert type(filename) is str, repr(filename)
307
301
 
302
+ # There are commercial only test cases
303
+ if "commercial" in filename.lower() and getCommercialVersion() is None:
304
+ return False
305
+
308
306
  # Skip runner scripts by default.
309
307
  if filename.startswith("run_"):
310
308
  return False
@@ -324,6 +322,10 @@ def decideFilenameVersionSkip(filename):
324
322
  if filename.endswith("_37.py") and _python_version >= (3, 8):
325
323
  return False
326
324
 
325
+ # Skip tests that require Python 3.11 at maximum.
326
+ if filename.endswith("_311.py") and _python_version >= (3, 8):
327
+ return False
328
+
327
329
  # Skip tests that require Python 3.2 at least.
328
330
  if filename.endswith("32.py") and _python_version < (3, 2):
329
331
  return False
@@ -364,18 +366,27 @@ def decideFilenameVersionSkip(filename):
364
366
  if filename.endswith("311.py") and _python_version < (3, 11):
365
367
  return False
366
368
 
367
- return True
369
+ # Skip tests that require Python 3.12 at least.
370
+ if filename.endswith("312.py") and _python_version < (3, 12):
371
+ return False
368
372
 
373
+ # Skip tests that require Python 3.13 at least.
374
+ if filename.endswith("313.py") and _python_version < (3, 13):
375
+ return False
369
376
 
370
- def decideNeeds2to3(filename):
371
- return _python_version >= (3,) and not re.match(r".*3\d+\.py", filename)
377
+ return True
372
378
 
373
379
 
374
380
  def _removeCPythonTestSuiteDir():
375
381
  # Cleanup, some tests apparently forget that.
376
382
  try:
377
383
  if os.path.isdir("@test"):
378
- removeDirectory("@test", ignore_errors=False)
384
+ removeDirectory(
385
+ "@test",
386
+ logger=test_logger,
387
+ ignore_errors=False,
388
+ extra_recommendation=None,
389
+ )
379
390
  elif os.path.isfile("@test"):
380
391
  os.unlink("@test")
381
392
  except OSError:
@@ -390,9 +401,7 @@ def _removeCPythonTestSuiteDir():
390
401
  raise
391
402
 
392
403
 
393
- def compareWithCPython(
394
- dirname, filename, extra_flags, search_mode, needs_2to3, on_error=None
395
- ):
404
+ def compareWithCPython(dirname, filename, extra_flags, search_mode, on_error=None):
396
405
  """Call the comparison tool. For a given directory filename.
397
406
 
398
407
  The search mode decides if the test case aborts on error or gets extra
@@ -400,19 +409,11 @@ def compareWithCPython(
400
409
 
401
410
  """
402
411
 
403
- # Many cases to consider here, pylint: disable=too-many-branches
404
-
405
412
  if dirname is None:
406
413
  path = filename
407
414
  else:
408
415
  path = os.path.join(dirname, filename)
409
416
 
410
- # Apply 2to3 conversion if necessary.
411
- if needs_2to3:
412
- path, converted = convertUsing2to3(path)
413
- else:
414
- converted = False
415
-
416
417
  if os.getenv("NUITKA_TEST_INSTALLED", "") == "1":
417
418
  command = [
418
419
  sys.executable,
@@ -450,9 +451,6 @@ def compareWithCPython(
450
451
 
451
452
  search_mode.onErrorDetected("Error exit! %s" % result)
452
453
 
453
- if converted:
454
- os.unlink(path)
455
-
456
454
  if result == 2:
457
455
  test_logger.sysexit("Interrupted, with CTRL-C\n", exit_code=2)
458
456
 
@@ -477,9 +475,13 @@ def checkCompilesNotWithCPython(dirname, filename, search_mode):
477
475
  def checkSucceedsWithCPython(filename):
478
476
  command = [_python_executable, filename]
479
477
 
480
- result = subprocess.call(command, stdout=getNullOutput(), stderr=subprocess.STDOUT)
478
+ stdout, stderr, exit_code = executeProcess(command)
481
479
 
482
- return result == 0
480
+ if exit_code != 0:
481
+ my_print("stdout", stdout)
482
+ my_print("stderr", stderr)
483
+
484
+ return exit_code == 0
483
485
 
484
486
 
485
487
  def getDebugPython():
@@ -527,7 +529,7 @@ def displayRuntimeTraces(logger, path):
527
529
 
528
530
  if os.name == "posix":
529
531
  # Run with traces to help debugging, specifically in CI environment.
530
- if getOS() in ("Darwin", "FreeBSD"):
532
+ if isMacOS() or isFreeBSD():
531
533
  test_logger.info("dtruss:")
532
534
  os.system("sudo dtruss %s" % path)
533
535
  else:
@@ -536,11 +538,12 @@ def displayRuntimeTraces(logger, path):
536
538
 
537
539
 
538
540
  def hasModule(module_name):
539
- result = subprocess.call(
540
- (os.environ["PYTHON"], "-c", "import %s" % module_name),
541
- stdout=getNullOutput(),
542
- stderr=subprocess.STDOUT,
543
- )
541
+ with getNullOutput() as null_output:
542
+ result = subprocess.call(
543
+ (os.environ["PYTHON"], "-c", "import %s" % module_name),
544
+ stdout=null_output,
545
+ stderr=subprocess.STDOUT,
546
+ )
544
547
 
545
548
  return result == 0
546
549
 
@@ -584,7 +587,7 @@ def snapObjRefCntMap(before):
584
587
  k = "str_overload_" + x.__class__.__name__ + str(x)
585
588
  elif type(x) is dict:
586
589
  if "__builtins__" in x:
587
- k = "<module dict %s>" % x["__name__"]
590
+ k = "<module dict %s>" % x.get("__name__", "<maybe not a module>")
588
591
  elif "__spec__" in x and "__name__" in x:
589
592
  k = "<module dict %s>" % x["__name__"]
590
593
  else:
@@ -717,7 +720,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
717
720
  my_print("extra:", m1[key], key)
718
721
  elif m1[key] != m2[key]:
719
722
  my_print("*" * 80)
720
- my_print(m1[key], "->", m2[key], key)
723
+ my_print(m1[key], "->", m2[key], repr(key))
721
724
  else:
722
725
  pass
723
726
 
@@ -738,6 +741,7 @@ def checkReferenceCount(checked_function, max_rounds=20, explain=False):
738
741
 
739
742
  def createSearchMode():
740
743
  # Dealing with many options, pylint: disable=too-many-branches
744
+ # Return driven, pylint: disable=too-many-return-statements
741
745
 
742
746
  parser = OptionParser()
743
747
 
@@ -759,6 +763,14 @@ Execute only tests matching the pattern. Defaults to all tests.""",
759
763
  help="""\
760
764
  Execute all tests, continue execution even after failure of one.""",
761
765
  )
766
+ select_group.add_option(
767
+ "--jobs",
768
+ action="store",
769
+ dest="jobs",
770
+ default=None,
771
+ help="""\
772
+ Pass this as the --jobs value to Nuitka.""",
773
+ )
762
774
 
763
775
  del select_group
764
776
 
@@ -790,6 +802,9 @@ Defaults to off.""",
790
802
  if options.debug:
791
803
  addExtendedExtraOptions("--debug")
792
804
 
805
+ if options.jobs is not None:
806
+ addExtendedExtraOptions("--jobs=%s" % options.jobs)
807
+
793
808
  if options.show_commands:
794
809
  os.environ["NUITKA_TRACE_COMMANDS"] = "1"
795
810
 
@@ -811,7 +826,9 @@ Defaults to off.""",
811
826
  else:
812
827
  return SearchModeImmediate()
813
828
  elif mode == "resume":
814
- return SearchModeResume(sys.modules["__main__"].__file__)
829
+ return SearchModeResume(sys.modules["__main__"].__file__, skip=False)
830
+ elif mode == "skip":
831
+ return SearchModeResume(sys.modules["__main__"].__file__, skip=True)
815
832
  elif mode == "only":
816
833
  if options.pattern:
817
834
  pattern = options.pattern.replace("/", os.path.sep)
@@ -820,9 +837,9 @@ Defaults to off.""",
820
837
  assert False
821
838
  elif mode == "coverage":
822
839
  return SearchModeCoverage(
823
- start_at=options.pattern.replace("/", os.path.sep)
824
- if options.pattern
825
- else None
840
+ start_at=(
841
+ options.pattern.replace("/", os.path.sep) if options.pattern else None
842
+ )
826
843
  )
827
844
  else:
828
845
  test_logger.sysexit("Error, using unknown search mode %r" % mode)
@@ -840,7 +857,7 @@ def executeReferenceChecked(
840
857
  ):
841
858
  gc.disable()
842
859
 
843
- extract_number = lambda name: int(name.replace(prefix, ""))
860
+ extract_number = lambda name: int(name.replace(prefix, "") or "0")
844
861
 
845
862
  # Find the function names.
846
863
  matching_names = tuple(
@@ -861,20 +878,19 @@ def executeReferenceChecked(
861
878
  continue
862
879
 
863
880
  # Avoid non-raisable output.
864
- try:
865
- if number in tests_stderr:
866
- sys.stderr = getNullOutput()
867
- except OSError: # Windows
868
- if not checkReferenceCount(names[name], explain=explain):
869
- result = False
870
- else:
871
- if not checkReferenceCount(names[name], explain=explain):
872
- result = False
873
-
874
- if number in tests_stderr:
875
- new_stderr = sys.stderr
876
- sys.stderr = old_stderr
877
- new_stderr.close()
881
+ with getNullOutput() as null_output:
882
+ try:
883
+ if number in tests_stderr:
884
+ sys.stderr = null_output
885
+ except OSError: # Windows
886
+ if not checkReferenceCount(names[name], explain=explain):
887
+ result = False
888
+ else:
889
+ if not checkReferenceCount(names[name], explain=explain):
890
+ result = False
891
+ finally:
892
+ if number in tests_stderr:
893
+ sys.stderr = old_stderr
878
894
 
879
895
  gc.enable()
880
896
  return result
@@ -925,7 +941,7 @@ def withPythonPathChange(python_path):
925
941
 
926
942
 
927
943
  def addExtendedExtraOptions(*args):
928
- old_value = os.environ.get("NUITKA_EXTRA_OPTIONS")
944
+ old_value = os.getenv("NUITKA_EXTRA_OPTIONS")
929
945
 
930
946
  value = old_value
931
947
 
@@ -956,7 +972,8 @@ def withExtendedExtraOptions(*args):
956
972
 
957
973
  def indentedCode(codes, count):
958
974
  """Indent code, used for generating test codes."""
959
- return "\n".join(" " * count + line if line else "" for line in codes)
975
+ indent = " " * count
976
+ return "\n".join(indent + line if line else "" for line in codes)
960
977
 
961
978
 
962
979
  def convertToPython(doctests, line_filter=None):
@@ -1179,19 +1196,15 @@ def async_iterate(g):
1179
1196
 
1180
1197
 
1181
1198
  def getTestingCacheDir():
1182
- cache_dir = getCacheDir()
1183
-
1184
- result = os.path.join(cache_dir, "tests_state")
1185
- makePath(result)
1186
- return result
1199
+ cache_dir = getCacheDir("tests_state")
1200
+ makePath(cache_dir)
1201
+ return cache_dir
1187
1202
 
1188
1203
 
1189
1204
  def getTestingCPythonOutputsCacheDir():
1190
- cache_dir = getCacheDir()
1205
+ cache_dir = getCacheDir("cpython_outputs")
1191
1206
 
1192
- result = os.path.join(
1193
- cache_dir, "cpython_outputs", os.environ.get("NUITKA_TEST_SUITE", "")
1194
- )
1207
+ result = os.path.join(cache_dir, os.getenv("NUITKA_TEST_SUITE", ""))
1195
1208
 
1196
1209
  makePath(result)
1197
1210
  return result
@@ -1203,7 +1216,7 @@ def scanDirectoryForTestCases(dirname, template_context=None):
1203
1216
  filenames = [
1204
1217
  filename
1205
1218
  for filename in filenames
1206
- if (filename.endswith(".py") and not filename + ".j2" in filenames)
1219
+ if (filename.endswith(".py") and filename + ".j2" not in filenames)
1207
1220
  or filename.endswith(".j2")
1208
1221
  ]
1209
1222
 
@@ -1263,19 +1276,20 @@ def setupCacheHashSalt(test_code_path):
1263
1276
  if os.path.exists(os.path.join(test_code_path, ".git")):
1264
1277
  git_cmd = ["git", "ls-tree", "-r", "HEAD", test_code_path]
1265
1278
 
1266
- process = subprocess.Popen(
1267
- args=git_cmd,
1268
- stdin=getNullInput(),
1269
- stdout=subprocess.PIPE,
1270
- stderr=subprocess.PIPE,
1271
- )
1279
+ with getNullInput() as null_input:
1280
+ process = subprocess.Popen(
1281
+ args=git_cmd,
1282
+ stdin=null_input,
1283
+ stdout=subprocess.PIPE,
1284
+ stderr=subprocess.PIPE,
1285
+ )
1272
1286
 
1273
1287
  stdout_git, stderr_git = process.communicate()
1274
1288
  assert process.returncode == 0, stderr_git
1275
1289
 
1276
- salt_value = hashlib.md5(stdout_git)
1290
+ salt_value = md5(stdout_git)
1277
1291
  else:
1278
- salt_value = hashlib.md5()
1292
+ salt_value = md5()
1279
1293
 
1280
1294
  for filename in getFileList(test_code_path):
1281
1295
  if filename.endswith(".py"):
@@ -1330,20 +1344,24 @@ def checkTestRequirements(filename):
1330
1344
 
1331
1345
  if os.path.isfile(candidate):
1332
1346
  filename = candidate
1347
+ else:
1348
+ filename = os.path.join(filename, getMainProgramFilename(filename))
1333
1349
 
1334
1350
  for line in readSourceCodeFromFilename(None, filename).splitlines():
1335
1351
  if line.startswith("# nuitka-skip-unless-"):
1336
1352
  if line[21:33] == "expression: ":
1337
1353
  expression = line[33:]
1338
- result = subprocess.call(
1339
- (
1340
- os.environ["PYTHON"],
1341
- "-c",
1342
- "import sys, os; sys.exit(not bool(%s))" % expression,
1343
- ),
1344
- stdout=getNullOutput(),
1345
- stderr=subprocess.STDOUT,
1346
- )
1354
+
1355
+ with getNullOutput() as null_output:
1356
+ result = subprocess.call(
1357
+ (
1358
+ os.environ["PYTHON"],
1359
+ "-c",
1360
+ "import sys, os; sys.exit(not bool(%s))" % expression,
1361
+ ),
1362
+ stdout=null_output,
1363
+ stderr=subprocess.STDOUT,
1364
+ )
1347
1365
  if result != 0:
1348
1366
  return (False, "Expression '%s' evaluated to false" % expression)
1349
1367
 
@@ -1399,6 +1417,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1399
1417
  current_dir = os.path.normpath(current_dir)
1400
1418
  current_dir = os.path.normcase(current_dir)
1401
1419
  current_dir_ext = os.path.normcase(getExternalUsePath(current_dir))
1420
+ current_dir_real = os.path.realpath(current_dir)
1402
1421
 
1403
1422
  illegal_accesses = []
1404
1423
 
@@ -1443,6 +1462,17 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1443
1462
  if loaded_filename.startswith(current_dir_ext):
1444
1463
  continue
1445
1464
 
1465
+ if loaded_filename.startswith(current_dir_real):
1466
+ continue
1467
+
1468
+ # Parent directories are OK too
1469
+ if (
1470
+ loaded_filename in getParentDirectories(current_dir)
1471
+ or loaded_filename in getParentDirectories(current_dir_ext)
1472
+ or loaded_filename in getParentDirectories(current_dir_real)
1473
+ ):
1474
+ continue
1475
+
1446
1476
  ignore = True
1447
1477
  for ignored_dir in (
1448
1478
  # System configuration is OK
@@ -1463,6 +1493,7 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1463
1493
  # Themes may of course be loaded.
1464
1494
  "/usr/share/themes",
1465
1495
  # Terminal info files are OK too.
1496
+ "/usr/share/terminfo",
1466
1497
  "/lib/terminfo",
1467
1498
  ):
1468
1499
  if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
@@ -1620,7 +1651,14 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1620
1651
  # Loading from home directories is OK too.
1621
1652
  if any(
1622
1653
  isFilenameSameAsOrBelowPath(path, loaded_filename)
1623
- for path in ("/home", "/data", "/root", "/Users", "/Library/Preferences")
1654
+ for path in (
1655
+ "/home",
1656
+ "/data",
1657
+ "/root",
1658
+ "/Users",
1659
+ "/Library/Preferences",
1660
+ "/agent", # Azure
1661
+ )
1624
1662
  ):
1625
1663
  continue
1626
1664
 
@@ -1762,10 +1800,12 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1762
1800
 
1763
1801
  # macOS uses these:
1764
1802
  if loaded_basename in (
1803
+ "libc.dylib",
1765
1804
  "libcrypto.1.0.0.dylib",
1766
1805
  "libssl.1.0.0.dylib",
1767
1806
  "libcrypto.1.1.dylib",
1768
1807
  "libffi.dylib",
1808
+ "libfribidi.dylib",
1769
1809
  ):
1770
1810
  continue
1771
1811
 
@@ -1780,13 +1820,11 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1780
1820
  if isMacOS():
1781
1821
  ignore = True
1782
1822
  for ignored_dir in (
1783
- "/System/Library/PrivateFrameworks",
1784
- "/System/Library/CoreServices",
1785
- "/System/Library/Frameworks/",
1786
- "/System/Library/dyld",
1823
+ "/System/Library",
1787
1824
  "/AppleInternal",
1788
1825
  "/System/Volumes/Preboot",
1789
1826
  "/usr/lib/system/",
1827
+ "/usr/libexec/swift",
1790
1828
  ):
1791
1829
  if isFilenameSameAsOrBelowPath(ignored_dir, loaded_filename):
1792
1830
  ignore = False
@@ -1794,6 +1832,9 @@ def checkLoadedFileAccesses(loaded_filenames, current_dir):
1794
1832
  if not ignore:
1795
1833
  continue
1796
1834
 
1835
+ if loaded_filename == "/System/Library":
1836
+ continue
1837
+
1797
1838
  if loaded_filename == "/usr/libexec/rosetta/runtime":
1798
1839
  continue
1799
1840
 
@@ -1884,7 +1925,11 @@ def getLocalWebServerDir(base_dir):
1884
1925
  web_dir = os.path.join(getTempDir(), "local-web-server", base_dir)
1885
1926
 
1886
1927
  if _web_server_process is None:
1887
- web_server_directory_supporting_pythons = ("3.11", "3.10", "3.9", "3.8", "3.7")
1928
+ web_server_directory_supporting_pythons = tuple(
1929
+ python_version
1930
+ for python_version in getTestExecutionPythonVersions()
1931
+ if python_version not in ("3.6", "3.5", "3.4", "2.7", "2.6")
1932
+ )
1888
1933
 
1889
1934
  web_server_python = findInstalledPython(
1890
1935
  python_versions=web_server_directory_supporting_pythons,
@@ -1935,3 +1980,19 @@ def extractNuitkaVersionFromFilePath(version_filename):
1935
1980
  (version_line,) = [line for line in option_lines if line.startswith("Nuitka V")]
1936
1981
 
1937
1982
  return version_line[8:].rstrip()
1983
+
1984
+
1985
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1986
+ # integrates with CPython, but also works on its own.
1987
+ #
1988
+ # Licensed under the Apache License, Version 2.0 (the "License");
1989
+ # you may not use this file except in compliance with the License.
1990
+ # You may obtain a copy of the License at
1991
+ #
1992
+ # http://www.apache.org/licenses/LICENSE-2.0
1993
+ #
1994
+ # Unless required by applicable law or agreed to in writing, software
1995
+ # distributed under the License is distributed on an "AS IS" BASIS,
1996
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1997
+ # See the License for the specific language governing permissions and
1998
+ # limitations under the License.
@@ -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
  """ Tools for construct tests.
19
5
 
20
6
  """
@@ -49,3 +35,19 @@ def generateConstructCases(construct_source_code):
49
35
  case = 1
50
36
 
51
37
  return "\n".join(case_1), "\n".join(case_2)
38
+
39
+
40
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
41
+ # integrates with CPython, but also works on its own.
42
+ #
43
+ # Licensed under the Apache License, Version 2.0 (the "License");
44
+ # you may not use this file except in compliance with the License.
45
+ # You may obtain a copy of the License at
46
+ #
47
+ # http://www.apache.org/licenses/LICENSE-2.0
48
+ #
49
+ # Unless required by applicable law or agreed to in writing, software
50
+ # distributed under the License is distributed on an "AS IS" BASIS,
51
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
52
+ # See the License for the specific language governing permissions and
53
+ # limitations under the License.