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
  """ Nuitka watch main part.
19
5
 
20
6
  This tool is used to monitor effect of PyPI changes on Nuitka and effect
@@ -22,21 +8,30 @@ of Nuitka changes on PyPI packages.
22
8
  """
23
9
 
24
10
  import os
11
+ import subprocess
25
12
  import sys
26
13
  from optparse import OptionParser
27
14
 
28
15
  from nuitka.containers.OrderedDicts import OrderedDict
16
+ from nuitka.PythonFlavors import isAnacondaPython, isMSYS2MingwPython
29
17
  from nuitka.PythonVersions import getTestExecutionPythonVersions
30
18
  from nuitka.tools.testing.Common import extractNuitkaVersionFromFilePath
31
19
  from nuitka.Tracing import OurLogger
32
20
  from nuitka.TreeXML import fromFile
33
- from nuitka.utils.Execution import check_call, executeProcess
21
+ from nuitka.utils.Execution import (
22
+ check_call,
23
+ executeProcess,
24
+ executeToolChecked,
25
+ withEnvironmentVarOverridden,
26
+ )
34
27
  from nuitka.utils.FileOperations import (
35
28
  changeTextFileContents,
29
+ deleteFile,
36
30
  getFileContents,
37
31
  getFileList,
38
32
  listDir,
39
33
  makePath,
34
+ putTextFileContents,
40
35
  relpath,
41
36
  withDirectoryChange,
42
37
  )
@@ -44,18 +39,19 @@ from nuitka.utils.Hashing import getFileContentsHash
44
39
  from nuitka.utils.InstalledPythons import findPythons
45
40
  from nuitka.utils.Utils import isLinux, isMacOS, isWin32Windows
46
41
  from nuitka.utils.Yaml import parseYaml
42
+ from nuitka.Version import parseNuitkaVersionToTuple
47
43
 
48
- # TODO: Command line interface
49
- nuitka_update_mode = "newer"
44
+ from .GitHub import createNuitkaWatchPR
50
45
 
51
46
  watch_logger = OurLogger("", base_style="blue")
52
47
 
53
48
 
54
- def _compareNuitkaVersions(version_a, version_b):
55
- def _numberize(version):
56
- return tuple(int(d) for d in version.split("rc")[0].split("."))
49
+ def _compareNuitkaVersions(version_a, version_b, consider_rc):
50
+ if not consider_rc:
51
+ version_a = version_a.split("rc")[0]
52
+ version_b = version_b.split("rc")[0]
57
53
 
58
- return _numberize(version_a) < _numberize(version_b)
54
+ return parseNuitkaVersionToTuple(version_a) < parseNuitkaVersionToTuple(version_b)
59
55
 
60
56
 
61
57
  def scanCases(path):
@@ -70,10 +66,13 @@ def scanCases(path):
70
66
  yield case
71
67
 
72
68
 
73
- def selectPythons(python_version_req, anaconda):
69
+ def selectPythons(python_version_req, anaconda, msys2_mingw64):
74
70
  for _python_version_str, installed_python_for_version in installed_pythons.items():
75
71
  for installed_python in installed_python_for_version:
76
- if not anaconda and installed_python.isAnacondaPython():
72
+ if anaconda and not installed_python.isAnacondaPython():
73
+ continue
74
+
75
+ if msys2_mingw64 and not installed_python.isMSYS2MingwPython():
77
76
  continue
78
77
 
79
78
  if python_version_req is not None:
@@ -90,14 +89,27 @@ def selectPythons(python_version_req, anaconda):
90
89
 
91
90
 
92
91
  def selectOS(os_values):
92
+ # return driven, pylint: disable=too-many-return-statements
93
+
93
94
  for value in os_values:
94
- if value not in ("Linux", "Win32", "macOS"):
95
+ if value not in ("Linux", "Win32", "macOS", "Win32-MSYS2", "Win32-Anaconda"):
95
96
  watch_logger.sysexit("Illegal value for OS: %s" % value)
96
97
 
97
98
  if isLinux() and "Linux" in os_values:
98
99
  return "Linux"
99
- if isWin32Windows() and "Win32" in os_values:
100
- return "Win32"
100
+ if isWin32Windows():
101
+ if isMSYS2MingwPython():
102
+ if "Win32-MSYS2" in os_values:
103
+ return "Win32-MSYS2"
104
+
105
+ return None
106
+ if isAnacondaPython():
107
+ if "Win32-Anaconda" in os_values:
108
+ return "Win32-Anaconda"
109
+
110
+ return None
111
+ if "Win32" in os_values:
112
+ return "Win32"
101
113
  if isMacOS() and "macOS" in os_values:
102
114
  return "macOS"
103
115
 
@@ -145,14 +157,14 @@ def _updatePipenvFile(installed_python, case_data, dry_run, result_path):
145
157
  requirement = requirement.replace(" ", "")
146
158
 
147
159
  if all(char not in requirement for char in "=><"):
148
- pipenv_package_requirements.append('%s = "*"' % requirement)
160
+ pipenv_package_requirements.append('"%s" = "*"' % requirement)
149
161
  else:
150
162
  operator_index = min(
151
163
  requirement.find(char) for char in "=><" if char in requirement
152
164
  )
153
165
 
154
166
  pipenv_package_requirements.append(
155
- '%s = "%s"'
167
+ '"%s" = "%s"'
156
168
  % (requirement[:operator_index], requirement[operator_index:])
157
169
  )
158
170
 
@@ -181,6 +193,57 @@ python_version = "%(python_version)s"
181
193
  return changed_pipenv_file, pipenv_filename
182
194
 
183
195
 
196
+ def _updatePacmanFile(installed_python, case_data, dry_run, result_path):
197
+ pipenv_filename = os.path.join(result_path, "Pacman.txt")
198
+ pipenv_package_requirements = []
199
+
200
+ for requirement in getPlatformRequirements(
201
+ installed_python=installed_python, case_data=case_data
202
+ ):
203
+ # Ignore spaces in requirements.
204
+ requirement = requirement.replace(" ", "")
205
+
206
+ # TODO: Other indexes, e.g. nvidia might be needed too
207
+ changed_pipenv_file = changeTextFileContents(
208
+ pipenv_filename,
209
+ """\
210
+ [python]
211
+ %(python_version)s
212
+ [packages]
213
+ %(pipenv_package_requirements)s
214
+ """
215
+ % {
216
+ "pipenv_package_requirements": "\n".join(pipenv_package_requirements),
217
+ "python_version": installed_python.getPythonVersion(),
218
+ },
219
+ compare_only=dry_run,
220
+ )
221
+
222
+ return changed_pipenv_file, pipenv_filename
223
+
224
+
225
+ def _execPipenvCommand(installed_python, command, retry=False):
226
+ try:
227
+ check_call(
228
+ [
229
+ installed_python.getPythonExe(),
230
+ "-m",
231
+ "pipenv",
232
+ command,
233
+ "--python",
234
+ installed_python.getPythonExe(),
235
+ ],
236
+ logger=watch_logger,
237
+ )
238
+ except subprocess.CalledProcessError:
239
+ if command in ("install", "update") and not retry:
240
+ _execPipenvCommand(installed_python, "--rm")
241
+ _execPipenvCommand(installed_python, command)
242
+
243
+ else:
244
+ raise
245
+
246
+
184
247
  def _updatePipenvLockFile(
185
248
  installed_python, dry_run, pipenv_filename_full, no_pipenv_update
186
249
  ):
@@ -191,22 +254,15 @@ def _updatePipenvLockFile(
191
254
  % pipenv_filename_full
192
255
  )
193
256
 
257
+ _execPipenvCommand(installed_python, "install")
258
+
194
259
  elif not dry_run:
195
260
  watch_logger.info(
196
261
  "Working with pipenv file '%s' to update virtualenv, may take a while."
197
262
  % pipenv_filename_full
198
263
  )
199
264
 
200
- check_call(
201
- [
202
- installed_python.getPythonExe(),
203
- "-m",
204
- "pipenv",
205
- "update",
206
- "--python",
207
- installed_python.getPythonExe(),
208
- ]
209
- )
265
+ _execPipenvCommand(installed_python, "update")
210
266
  else:
211
267
  watch_logger.info(
212
268
  "Working with pipenv file '%s' to install virtualenv, may take a while."
@@ -224,22 +280,63 @@ def _updatePipenvLockFile(
224
280
  ]
225
281
  )
226
282
 
283
+ return "Pipfile.lock"
227
284
 
228
- def _compileCase(case_data, case_dir, installed_python):
229
- check_call(
230
- [
285
+
286
+ def _updatePacmanLockFile():
287
+ pacman_lock_filename = "Pacman.lock"
288
+
289
+ pacman_output = executeToolChecked(
290
+ logger=watch_logger,
291
+ command=["pacman", "-Q"],
292
+ absence_message="needs pacman to query package status on MSYS2",
293
+ )
294
+
295
+ if str is not bytes:
296
+ pacman_output = pacman_output.decode("utf8")
297
+
298
+ changeTextFileContents(filename=pacman_lock_filename, contents=pacman_output)
299
+
300
+ return pacman_lock_filename
301
+
302
+
303
+ def _compileCase(case_data, case_dir, installed_python, lock_filename, jobs):
304
+ preferred_package_type = installed_python.getPreferredPackageType()
305
+
306
+ extra_options = []
307
+
308
+ if preferred_package_type == "pip":
309
+ run_command = [
231
310
  installed_python.getPythonExe(),
232
311
  "-m",
233
312
  "pipenv",
234
313
  "run",
314
+ "--python",
315
+ installed_python.getPythonExe(),
235
316
  "python",
317
+ ]
318
+ elif preferred_package_type == "pacman":
319
+ run_command = ["python"]
320
+
321
+ extra_options.append("--disable-ccache")
322
+ else:
323
+ assert False
324
+
325
+ if jobs is not None:
326
+ extra_options.append("--jobs=%s" % jobs)
327
+
328
+ check_call(
329
+ run_command
330
+ + [
236
331
  nuitka_binary,
237
332
  os.path.join(case_dir, case_data["filename"]),
333
+ "--assume-yes-for-downloads",
238
334
  "--report=compilation-report.xml",
239
335
  "--report-diffable",
240
336
  "--report-user-provided=pipenv_hash=%s"
241
- % getFileContentsHash("Pipfile.lock"),
337
+ % getFileContentsHash(lock_filename),
242
338
  ]
339
+ + extra_options
243
340
  )
244
341
 
245
342
  if case_data["interactive"] == "no":
@@ -252,54 +349,89 @@ def _compileCase(case_data, case_dir, installed_python):
252
349
  if len(binaries) != 1:
253
350
  sys.exit("Error, failed to identify created binary.")
254
351
 
255
- stdout, stderr, exit_nuitka = executeProcess([binaries[0]])
256
-
257
- if exit_nuitka != 0:
258
- sys.exit(
259
- "Error, failed to execute %s with code %d." % (binaries[0], exit_nuitka)
260
- )
352
+ with withEnvironmentVarOverridden("NUITKA_LAUNCH_TOKEN", "1"):
353
+ stdout, stderr, exit_nuitka = executeProcess([binaries[0]], timeout=5 * 60)
261
354
 
262
355
  with open("compiled-stdout.txt", "wb") as output:
263
356
  output.write(stdout)
264
357
  with open("compiled-stderr.txt", "wb") as output:
265
358
  output.write(stderr)
266
359
 
360
+ if exit_nuitka == 0:
361
+ deleteFile("compiled-exit.txt", must_exist=False)
362
+ else:
363
+ putTextFileContents(
364
+ filename="compiled-exit.txt",
365
+ contents=str(exit_nuitka),
366
+ )
367
+
368
+ if exit_nuitka != 0:
369
+ sys.exit(
370
+ "Error, failed to execute %s with code %d." % (binaries[0], exit_nuitka)
371
+ )
372
+
267
373
 
268
374
  def _updateCase(
269
- case_dir, case_data, dry_run, no_pipenv_update, installed_python, result_path
375
+ case_dir,
376
+ case_data,
377
+ dry_run,
378
+ no_pipenv_update,
379
+ nuitka_update_mode,
380
+ installed_python,
381
+ result_path,
382
+ jobs,
270
383
  ):
384
+ # Many details and cases due to package method being handled here.
385
+ # pylint: disable=too-many-branches,too-many-locals
386
+
271
387
  # Not good for dry run, but tough life.
272
388
  makePath(result_path)
273
389
 
274
390
  # Update the pipenv file in any case, ought to be stable but we follow
275
391
  # global changes this way.
276
- changed_pipenv_file, pipenv_filename = _updatePipenvFile(
277
- installed_python=installed_python,
278
- case_data=case_data,
279
- dry_run=dry_run,
280
- result_path=result_path,
281
- )
392
+ preferred_package_type = installed_python.getPreferredPackageType()
393
+ if preferred_package_type == "pip":
394
+ changed_pipenv_file, pipenv_filename = _updatePipenvFile(
395
+ installed_python=installed_python,
396
+ case_data=case_data,
397
+ dry_run=dry_run,
398
+ result_path=result_path,
399
+ )
282
400
 
283
- pipenv_filename_full = os.path.join(case_dir, pipenv_filename)
401
+ pipenv_filename_full = os.path.join(case_dir, pipenv_filename)
284
402
 
285
- if dry_run and changed_pipenv_file:
286
- watch_logger.info("Would create pipenv file '%s'." % pipenv_filename_full)
287
- return
403
+ if dry_run and changed_pipenv_file:
404
+ watch_logger.info("Would create pipenv file '%s'." % pipenv_filename_full)
405
+ return
288
406
 
289
- with withDirectoryChange(result_path):
290
- # Update or create lockfile of pipenv.
291
- _updatePipenvLockFile(
407
+ with withDirectoryChange(result_path):
408
+ # Update or create lockfile of pipenv.
409
+ lock_filename = _updatePipenvLockFile(
410
+ installed_python=installed_python,
411
+ dry_run=dry_run,
412
+ pipenv_filename_full=pipenv_filename_full,
413
+ no_pipenv_update=no_pipenv_update,
414
+ )
415
+ elif preferred_package_type == "pacman":
416
+ changed_pipenv_file, pipenv_filename = _updatePacmanFile(
292
417
  installed_python=installed_python,
418
+ case_data=case_data,
293
419
  dry_run=dry_run,
294
- pipenv_filename_full=pipenv_filename_full,
295
- no_pipenv_update=no_pipenv_update,
420
+ result_path=result_path,
296
421
  )
297
422
 
298
- # Check if compilation is required.
423
+ with withDirectoryChange(result_path):
424
+ # Update or create lockfile of pipenv.
425
+ lock_filename = _updatePacmanLockFile()
426
+ else:
427
+ assert False, preferred_package_type
428
+
429
+ # Check if compilation is required.
430
+ with withDirectoryChange(result_path):
299
431
  if os.path.exists("compilation-report.xml"):
300
432
  old_report_root = fromFile("compilation-report.xml")
301
433
 
302
- existing_hash = getFileContentsHash("Pipfile.lock")
434
+ existing_hash = getFileContentsHash(lock_filename)
303
435
  old_report_root_hash = (
304
436
  old_report_root.find("user-data").find("pipenv_hash").text
305
437
  )
@@ -309,7 +441,9 @@ def _updateCase(
309
441
  if nuitka_update_mode == "force":
310
442
  need_compile = True
311
443
  elif nuitka_update_mode == "newer":
312
- if _compareNuitkaVersions(old_nuitka_version, nuitka_version):
444
+ if _compareNuitkaVersions(
445
+ old_nuitka_version, nuitka_version, consider_rc=True
446
+ ):
313
447
  need_compile = True
314
448
  else:
315
449
  if existing_hash != old_report_root_hash:
@@ -320,12 +454,15 @@ def _updateCase(
320
454
 
321
455
  need_compile = True
322
456
  elif old_nuitka_version == nuitka_version:
323
- watch_logger.info(
324
- "Skipping compilation with identical Nuitka for '%s'."
325
- % pipenv_filename_full
326
- )
457
+ if old_report_root.attrib["completion"] != "yes":
458
+ need_compile = True
459
+ else:
460
+ watch_logger.info(
461
+ "Skipping compilation with identical Nuitka for '%s'."
462
+ % pipenv_filename_full
463
+ )
327
464
 
328
- need_compile = False
465
+ need_compile = False
329
466
  else:
330
467
  watch_logger.info(
331
468
  "Skipping compilation of old Nuitka %s result with Nuitka %s for '%s'."
@@ -342,33 +479,63 @@ def _updateCase(
342
479
  else:
343
480
  need_compile = True
344
481
 
482
+ if not need_compile:
483
+ if os.path.exists("compiled-exit.txt"):
484
+ watch_logger.info(
485
+ "Enforcing compilation of compiled program that failed to run."
486
+ )
487
+ need_compile = True
488
+
345
489
  if need_compile:
346
490
  _compileCase(
347
491
  case_data=case_data,
348
492
  case_dir=case_dir,
349
493
  installed_python=installed_python,
494
+ lock_filename=lock_filename,
495
+ jobs=jobs,
350
496
  )
351
497
 
352
498
 
353
- def updateCase(case_dir, case_data, dry_run, no_pipenv_update):
499
+ def updateCase(
500
+ case_dir, case_data, dry_run, no_pipenv_update, nuitka_update_mode, jobs
501
+ ):
354
502
  case_name = case_data["case"]
355
503
 
504
+ watch_logger.info("Consider '%s' ... " % case_name)
505
+
356
506
  # Wrong OS maybe.
357
507
  os_name = selectOS(case_data["os"])
358
508
  if os_name is None:
509
+ watch_logger.info(" ... not on this OS")
359
510
  return
360
511
 
361
512
  nuitka_min_version = case_data.get("nuitka")
362
513
 
363
514
  # Too old Nuitka version maybe.
364
515
  if nuitka_min_version is not None and _compareNuitkaVersions(
365
- nuitka_version, nuitka_min_version
516
+ nuitka_version, nuitka_min_version, consider_rc=False
366
517
  ):
518
+ watch_logger.info(" ... not for this Nuitka version")
519
+ return
520
+
521
+ selected_pythons = tuple(
522
+ selectPythons(
523
+ # TODO: Enable Anaconda support through options/detection.
524
+ anaconda="Anaconda" in os_name,
525
+ msys2_mingw64="MSYS2" in os_name,
526
+ python_version_req=case_data.get("python_version_req"),
527
+ )
528
+ )
529
+
530
+ if not selected_pythons:
531
+ watch_logger.info(" ... no suitable Python installations")
367
532
  return
368
533
 
369
534
  # For all relevant Pythons applicable to this case.
370
535
  for installed_python in selectPythons(
371
- anaconda=case_data["anaconda"] == "yes",
536
+ # TODO: Enable Anaconda support through options/detection.
537
+ anaconda="Anaconda" in os_name,
538
+ msys2_mingw64="MSYS2" in os_name,
372
539
  python_version_req=case_data.get("python_version_req"),
373
540
  ):
374
541
  watch_logger.info("Consider with Python %s." % installed_python)
@@ -384,18 +551,22 @@ def updateCase(case_dir, case_data, dry_run, no_pipenv_update):
384
551
  case_data=case_data,
385
552
  dry_run=dry_run,
386
553
  no_pipenv_update=no_pipenv_update,
554
+ nuitka_update_mode=nuitka_update_mode,
387
555
  installed_python=installed_python,
388
556
  result_path=result_path,
557
+ jobs=jobs,
389
558
  )
390
559
 
391
560
 
392
- def updateCases(case_dir, dry_run, no_pipenv_update):
561
+ def updateCases(case_dir, dry_run, no_pipenv_update, nuitka_update_mode, jobs):
393
562
  for case_data in parseYaml(getFileContents("case.yml", mode="rb")):
394
563
  updateCase(
395
564
  case_dir=case_dir,
396
565
  case_data=case_data,
397
566
  dry_run=dry_run,
398
567
  no_pipenv_update=no_pipenv_update,
568
+ nuitka_update_mode=nuitka_update_mode,
569
+ jobs=jobs,
399
570
  )
400
571
 
401
572
 
@@ -413,15 +584,6 @@ def main():
413
584
 
414
585
  parser = OptionParser()
415
586
 
416
- parser.add_option(
417
- "--dry-run",
418
- action="store_false",
419
- dest="dry_run",
420
- default=False,
421
- help="""\
422
- Do not change anything, just report what would be done. Default %default.""",
423
- )
424
-
425
587
  parser.add_option(
426
588
  "--python-version",
427
589
  action="append",
@@ -449,19 +611,63 @@ Nuitka binary to compile with. Defaults to one near the nuitka-watch usage.""",
449
611
  Do not update the pipenv environment. Best to see only effect of Nuitka update. Default %default.""",
450
612
  )
451
613
 
614
+ parser.add_option(
615
+ "--dry-run",
616
+ action="store_false",
617
+ dest="dry_run",
618
+ default=False,
619
+ help="""\
620
+ Do not change anything, just report what would be done. Not yet perfectly true. Default %default.""",
621
+ )
622
+
623
+ parser.add_option(
624
+ "--nuitka-update-mode",
625
+ action="store",
626
+ choices=("newer", "force", "never"),
627
+ dest="nuitka_update_mode",
628
+ default="newer",
629
+ help="""\
630
+ Recompile even if the versions seems not changed. Default %default.""",
631
+ )
632
+
633
+ parser.add_option(
634
+ "--pr",
635
+ action="store",
636
+ dest="nuitka_pr_mode",
637
+ default=None,
638
+ help="""\
639
+ PR to create. Default not making a PR.""",
640
+ )
641
+
642
+ parser.add_option(
643
+ "--jobs",
644
+ action="store",
645
+ dest="jobs",
646
+ default=None,
647
+ help="""\
648
+ Argument for jobs, in order to be nice use negative values
649
+ to reserve cores.""",
650
+ )
651
+
452
652
  options, positional_args = parser.parse_args()
453
653
 
454
654
  assert len(positional_args) <= 1, positional_args
455
655
 
456
- if positional_args and os.path.isdir(positional_args[0]):
656
+ if positional_args:
457
657
  base_dir = positional_args[0]
658
+
659
+ if not os.path.isdir(base_dir):
660
+ watch_logger.sysexit("Error, '%s' is not a directory" % base_dir)
661
+
458
662
  else:
459
663
  base_dir = os.getcwd()
460
664
 
461
665
  for python_version in options.python_versions or reversed(
462
666
  getTestExecutionPythonVersions()
463
667
  ):
464
- installed_pythons[python_version] = findPythons(python_version)
668
+ installed_pythons[python_version] = findPythons(
669
+ python_version, module_name="pipenv"
670
+ )
465
671
 
466
672
  nuitka_binary = os.path.abspath(os.path.expanduser(options.nuitka_binary))
467
673
  assert os.path.exists(nuitka_binary)
@@ -475,6 +681,11 @@ Do not update the pipenv environment. Best to see only effect of Nuitka update.
475
681
 
476
682
  base_dir = os.path.abspath(base_dir)
477
683
 
684
+ if options.nuitka_pr_mode is not None:
685
+ pr_category, pr_description = options.nuitka_pr_mode.split(",")
686
+ else:
687
+ pr_category = pr_description = None
688
+
478
689
  with withDirectoryChange(base_dir):
479
690
  for case_filename in scanCases(base_dir):
480
691
  case_relpath = relpath(case_filename, start=base_dir)
@@ -485,11 +696,31 @@ Do not update the pipenv environment. Best to see only effect of Nuitka update.
485
696
 
486
697
  with withDirectoryChange(os.path.dirname(case_filename)):
487
698
  updateCases(
488
- os.path.dirname(case_filename),
699
+ case_dir=os.path.dirname(case_filename),
489
700
  dry_run=options.dry_run,
490
701
  no_pipenv_update=options.no_pipenv_update,
702
+ nuitka_update_mode=options.nuitka_update_mode,
703
+ jobs=options.jobs,
491
704
  )
492
705
 
706
+ if pr_category is not None:
707
+ createNuitkaWatchPR(category=pr_category, description=pr_description)
708
+
493
709
 
494
710
  if __name__ == "__main__":
495
711
  main()
712
+
713
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
714
+ # integrates with CPython, but also works on its own.
715
+ #
716
+ # Licensed under the Apache License, Version 2.0 (the "License");
717
+ # you may not use this file except in compliance with the License.
718
+ # You may obtain a copy of the License at
719
+ #
720
+ # http://www.apache.org/licenses/LICENSE-2.0
721
+ #
722
+ # Unless required by applicable law or agreed to in writing, software
723
+ # distributed under the License is distributed on an "AS IS" BASIS,
724
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
725
+ # See the License for the specific language governing permissions and
726
+ # limitations under the License.