Nuitka-winsvc 2.0.5__cp311-cp311-win_amd64.whl → 2.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 (653) hide show
  1. {Nuitka_winsvc-2.0.5.data → Nuitka_winsvc-2.1.data}/scripts/nuitka-run.bat +9 -9
  2. {Nuitka_winsvc-2.0.5.data → Nuitka_winsvc-2.1.data}/scripts/nuitka.bat +15 -15
  3. {Nuitka_winsvc-2.0.5.dist-info → Nuitka_winsvc-2.1.dist-info}/METADATA +1 -1
  4. Nuitka_winsvc-2.1.dist-info/RECORD +920 -0
  5. nuitka/Builtins.py +18 -17
  6. nuitka/BytecodeCaching.py +20 -19
  7. nuitka/Bytecodes.py +19 -17
  8. nuitka/CacheCleanup.py +22 -22
  9. nuitka/Constants.py +19 -17
  10. nuitka/Errors.py +19 -17
  11. nuitka/HardImportRegistry.py +20 -17
  12. nuitka/MainControl.py +31 -19
  13. nuitka/ModuleRegistry.py +40 -20
  14. nuitka/OptionParsing.py +67 -44
  15. nuitka/Options.py +42 -17
  16. nuitka/OutputDirectories.py +19 -17
  17. nuitka/PostProcessing.py +19 -17
  18. nuitka/Progress.py +19 -17
  19. nuitka/PythonFlavors.py +22 -18
  20. nuitka/PythonOperators.py +18 -17
  21. nuitka/PythonVersions.py +19 -17
  22. nuitka/Serialization.py +21 -25
  23. nuitka/SourceCodeReferences.py +19 -17
  24. nuitka/Tracing.py +33 -20
  25. nuitka/TreeXML.py +19 -17
  26. nuitka/Variables.py +19 -17
  27. nuitka/Version.py +2 -2
  28. nuitka/__init__.py +5 -4
  29. nuitka/__main__.py +18 -17
  30. nuitka/__past__.py +18 -17
  31. nuitka/build/Backend.scons +18 -21
  32. nuitka/build/CCompilerVersion.scons +17 -17
  33. nuitka/build/DataComposerInterface.py +19 -17
  34. nuitka/build/Onefile.scons +18 -21
  35. nuitka/build/SconsCaching.py +24 -43
  36. nuitka/build/SconsCompilerSettings.py +25 -29
  37. nuitka/build/SconsHacks.py +19 -17
  38. nuitka/build/SconsInterface.py +20 -25
  39. nuitka/build/SconsProgress.py +19 -17
  40. nuitka/build/SconsSpawn.py +40 -29
  41. nuitka/build/SconsUtils.py +85 -20
  42. nuitka/build/__init__.py +5 -4
  43. nuitka/build/include/nuitka/allocator.h +17 -17
  44. nuitka/build/include/nuitka/builtins.h +17 -17
  45. nuitka/build/include/nuitka/calling.h +17 -17
  46. nuitka/build/include/nuitka/checkers.h +17 -18
  47. nuitka/build/include/nuitka/checksum_tools.h +14 -15
  48. nuitka/build/include/nuitka/compiled_asyncgen.h +17 -17
  49. nuitka/build/include/nuitka/compiled_cell.h +17 -17
  50. nuitka/build/include/nuitka/compiled_coroutine.h +17 -17
  51. nuitka/build/include/nuitka/compiled_frame.h +17 -17
  52. nuitka/build/include/nuitka/compiled_function.h +17 -17
  53. nuitka/build/include/nuitka/compiled_generator.h +17 -17
  54. nuitka/build/include/nuitka/compiled_method.h +16 -17
  55. nuitka/build/include/nuitka/constants.h +17 -18
  56. nuitka/build/include/nuitka/constants_blob.h +17 -17
  57. nuitka/build/include/nuitka/environment_variables.h +16 -16
  58. nuitka/build/include/nuitka/environment_variables_system.h +17 -18
  59. nuitka/build/include/nuitka/exception_groups.h +17 -18
  60. nuitka/build/include/nuitka/exceptions.h +17 -17
  61. nuitka/build/include/nuitka/filesystem_paths.h +17 -18
  62. nuitka/build/include/nuitka/freelists.h +16 -17
  63. nuitka/build/include/nuitka/helper/attributes.h +17 -17
  64. nuitka/build/include/nuitka/helper/boolean.h +17 -17
  65. nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
  66. nuitka/build/include/nuitka/helper/bytes.h +14 -15
  67. nuitka/build/include/nuitka/helper/calling_generated.h +17 -17
  68. nuitka/build/include/nuitka/helper/comparisons_eq.h +17 -17
  69. nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
  70. nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
  71. nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
  72. nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
  73. nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
  74. nuitka/build/include/nuitka/helper/complex.h +17 -17
  75. nuitka/build/include/nuitka/helper/dictionaries.h +17 -17
  76. nuitka/build/include/nuitka/helper/floats.h +17 -18
  77. nuitka/build/include/nuitka/helper/import_hard.h +17 -17
  78. nuitka/build/include/nuitka/helper/indexes.h +17 -18
  79. nuitka/build/include/nuitka/helper/ints.h +17 -18
  80. nuitka/build/include/nuitka/helper/iterators.h +17 -17
  81. nuitka/build/include/nuitka/helper/lists.h +17 -18
  82. nuitka/build/include/nuitka/helper/lists_generated.h +17 -17
  83. nuitka/build/include/nuitka/helper/mappings.h +17 -18
  84. nuitka/build/include/nuitka/helper/operations.h +17 -17
  85. nuitka/build/include/nuitka/helper/operations_binary_add.h +17 -17
  86. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
  87. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
  88. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
  89. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
  90. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
  91. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
  92. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
  93. nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
  94. nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
  95. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
  96. nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
  97. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
  98. nuitka/build/include/nuitka/helper/operations_binary_sub.h +17 -17
  99. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
  100. nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
  101. nuitka/build/include/nuitka/helper/operations_inplace_add.h +17 -17
  102. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
  103. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
  104. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
  105. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
  106. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
  107. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
  108. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
  109. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
  110. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
  111. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
  112. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
  113. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +17 -17
  114. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
  115. nuitka/build/include/nuitka/helper/raising.h +17 -17
  116. nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
  117. nuitka/build/include/nuitka/helper/richcomparisons.h +14 -14
  118. nuitka/build/include/nuitka/helper/sequences.h +13 -13
  119. nuitka/build/include/nuitka/helper/sets.h +11 -12
  120. nuitka/build/include/nuitka/helper/slices.h +17 -17
  121. nuitka/build/include/nuitka/helper/strings.h +16 -17
  122. nuitka/build/include/nuitka/helper/subscripts.h +17 -17
  123. nuitka/build/include/nuitka/helper/tuples.h +17 -18
  124. nuitka/build/include/nuitka/helpers.h +17 -17
  125. nuitka/build/include/nuitka/importing.h +17 -17
  126. nuitka/build/include/nuitka/prelude.h +17 -17
  127. nuitka/build/include/nuitka/printing.h +17 -17
  128. nuitka/build/include/nuitka/python_pgo.h +17 -18
  129. nuitka/build/include/nuitka/safe_string_ops.h +17 -18
  130. nuitka/build/include/nuitka/threading.h +17 -17
  131. nuitka/build/include/nuitka/tracing.h +17 -17
  132. nuitka/build/include/nuitka/unfreezing.h +17 -17
  133. nuitka/build/static_src/CompiledAsyncgenType.c +17 -17
  134. nuitka/build/static_src/CompiledCellType.c +17 -18
  135. nuitka/build/static_src/CompiledCodeHelpers.c +17 -17
  136. nuitka/build/static_src/CompiledCoroutineType.c +17 -17
  137. nuitka/build/static_src/CompiledFrameType.c +17 -18
  138. nuitka/build/static_src/CompiledFunctionType.c +17 -18
  139. nuitka/build/static_src/CompiledGeneratorType.c +17 -18
  140. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +17 -17
  141. nuitka/build/static_src/CompiledMethodType.c +17 -17
  142. nuitka/build/static_src/HelpersAllocator.c +17 -17
  143. nuitka/build/static_src/HelpersAttributes.c +16 -18
  144. nuitka/build/static_src/HelpersBuiltin.c +17 -17
  145. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
  146. nuitka/build/static_src/HelpersBytes.c +17 -18
  147. nuitka/build/static_src/HelpersCalling.c +17 -17
  148. nuitka/build/static_src/HelpersCallingGenerated.c +17 -17
  149. nuitka/build/static_src/HelpersChecksumTools.c +17 -18
  150. nuitka/build/static_src/HelpersClasses.c +17 -17
  151. nuitka/build/static_src/HelpersComparisonEq.c +17 -17
  152. nuitka/build/static_src/HelpersComparisonEqUtils.c +17 -17
  153. nuitka/build/static_src/HelpersComparisonGe.c +17 -17
  154. nuitka/build/static_src/HelpersComparisonGt.c +17 -17
  155. nuitka/build/static_src/HelpersComparisonLe.c +17 -17
  156. nuitka/build/static_src/HelpersComparisonLt.c +17 -17
  157. nuitka/build/static_src/HelpersComparisonNe.c +17 -17
  158. nuitka/build/static_src/HelpersConstantsBlob.c +17 -17
  159. nuitka/build/static_src/HelpersDeepcopy.c +17 -17
  160. nuitka/build/static_src/HelpersDictionaries.c +17 -17
  161. nuitka/build/static_src/HelpersDictionariesGenerated.c +16 -17
  162. nuitka/build/static_src/HelpersDumpBacktraces.c +17 -18
  163. nuitka/build/static_src/HelpersEnvironmentVariables.c +17 -17
  164. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +17 -17
  165. nuitka/build/static_src/HelpersExceptions.c +17 -18
  166. nuitka/build/static_src/HelpersFiles.c +17 -17
  167. nuitka/build/static_src/HelpersFilesystemPaths.c +17 -17
  168. nuitka/build/static_src/HelpersFloats.c +17 -17
  169. nuitka/build/static_src/HelpersHeapStorage.c +17 -17
  170. nuitka/build/static_src/HelpersImport.c +17 -17
  171. nuitka/build/static_src/HelpersImportHard.c +17 -17
  172. nuitka/build/static_src/HelpersLists.c +17 -18
  173. nuitka/build/static_src/HelpersListsGenerated.c +17 -17
  174. nuitka/build/static_src/HelpersMappings.c +17 -17
  175. nuitka/build/static_src/HelpersMatching.c +17 -18
  176. nuitka/build/static_src/HelpersOperationBinaryAdd.c +17 -17
  177. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +17 -17
  178. nuitka/build/static_src/HelpersOperationBinaryBitand.c +17 -17
  179. nuitka/build/static_src/HelpersOperationBinaryBitor.c +17 -17
  180. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +17 -17
  181. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +17 -17
  182. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
  183. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +17 -17
  184. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +17 -18
  185. nuitka/build/static_src/HelpersOperationBinaryLshift.c +17 -17
  186. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +17 -17
  187. nuitka/build/static_src/HelpersOperationBinaryMod.c +17 -17
  188. nuitka/build/static_src/HelpersOperationBinaryMult.c +17 -17
  189. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +17 -17
  190. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +17 -17
  191. nuitka/build/static_src/HelpersOperationBinaryPow.c +17 -17
  192. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
  193. nuitka/build/static_src/HelpersOperationBinaryRshift.c +17 -17
  194. nuitka/build/static_src/HelpersOperationBinarySub.c +17 -17
  195. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +17 -17
  196. nuitka/build/static_src/HelpersOperationInplaceAdd.c +17 -17
  197. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +17 -17
  198. nuitka/build/static_src/HelpersOperationInplaceBitand.c +17 -17
  199. nuitka/build/static_src/HelpersOperationInplaceBitor.c +17 -17
  200. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +17 -17
  201. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +17 -17
  202. nuitka/build/static_src/HelpersOperationInplaceLshift.c +17 -17
  203. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +17 -17
  204. nuitka/build/static_src/HelpersOperationInplaceMod.c +17 -17
  205. nuitka/build/static_src/HelpersOperationInplaceMult.c +17 -17
  206. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +17 -17
  207. nuitka/build/static_src/HelpersOperationInplacePow.c +17 -17
  208. nuitka/build/static_src/HelpersOperationInplaceRshift.c +17 -17
  209. nuitka/build/static_src/HelpersOperationInplaceSub.c +17 -17
  210. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +17 -17
  211. nuitka/build/static_src/HelpersProfiling.c +17 -17
  212. nuitka/build/static_src/HelpersPythonPgo.c +17 -17
  213. nuitka/build/static_src/HelpersRaising.c +17 -17
  214. nuitka/build/static_src/HelpersSafeStrings.c +17 -17
  215. nuitka/build/static_src/HelpersSequences.c +17 -18
  216. nuitka/build/static_src/HelpersSlices.c +17 -18
  217. nuitka/build/static_src/HelpersStrings.c +17 -17
  218. nuitka/build/static_src/HelpersTuples.c +17 -17
  219. nuitka/build/static_src/HelpersTypes.c +17 -18
  220. nuitka/build/static_src/InspectPatcher.c +17 -17
  221. nuitka/build/static_src/MainProgram.c +17 -17
  222. nuitka/build/static_src/MetaPathBasedLoader.c +18 -18
  223. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +17 -17
  224. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
  225. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +17 -18
  226. nuitka/build/static_src/OnefileBootstrap.c +17 -17
  227. nuitka/build/static_src/OnefileSplashScreen.cpp +17 -18
  228. nuitka/code_generation/AsyncgenCodes.py +19 -17
  229. nuitka/code_generation/AttributeCodes.py +19 -17
  230. nuitka/code_generation/BinaryOperationHelperDefinitions.py +19 -17
  231. nuitka/code_generation/BranchCodes.py +19 -17
  232. nuitka/code_generation/BuiltinCodes.py +19 -17
  233. nuitka/code_generation/CallCodes.py +19 -17
  234. nuitka/code_generation/ClassCodes.py +19 -17
  235. nuitka/code_generation/CodeGeneration.py +19 -17
  236. nuitka/code_generation/CodeHelperSelection.py +19 -17
  237. nuitka/code_generation/CodeHelpers.py +19 -17
  238. nuitka/code_generation/CodeObjectCodes.py +19 -17
  239. nuitka/code_generation/ComparisonCodes.py +19 -17
  240. nuitka/code_generation/ComparisonHelperDefinitions.py +19 -17
  241. nuitka/code_generation/ConditionalCodes.py +19 -17
  242. nuitka/code_generation/ConstantCodes.py +19 -17
  243. nuitka/code_generation/Contexts.py +19 -17
  244. nuitka/code_generation/CoroutineCodes.py +19 -17
  245. nuitka/code_generation/CtypesCodes.py +19 -17
  246. nuitka/code_generation/DictCodes.py +19 -17
  247. nuitka/code_generation/Emission.py +19 -17
  248. nuitka/code_generation/ErrorCodes.py +19 -17
  249. nuitka/code_generation/EvalCodes.py +19 -17
  250. nuitka/code_generation/ExceptionCodes.py +19 -17
  251. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +19 -17
  252. nuitka/code_generation/ExpressionCodes.py +19 -17
  253. nuitka/code_generation/FrameCodes.py +19 -17
  254. nuitka/code_generation/FunctionCodes.py +19 -17
  255. nuitka/code_generation/GeneratorCodes.py +19 -17
  256. nuitka/code_generation/GlobalConstants.py +19 -17
  257. nuitka/code_generation/GlobalsLocalsCodes.py +19 -17
  258. nuitka/code_generation/IdCodes.py +19 -17
  259. nuitka/code_generation/ImportCodes.py +19 -17
  260. nuitka/code_generation/Indentation.py +19 -17
  261. nuitka/code_generation/IndexCodes.py +19 -17
  262. nuitka/code_generation/InjectCCodes.py +14 -12
  263. nuitka/code_generation/IntegerCodes.py +19 -17
  264. nuitka/code_generation/IteratorCodes.py +19 -17
  265. nuitka/code_generation/LabelCodes.py +19 -17
  266. nuitka/code_generation/LineNumberCodes.py +19 -17
  267. nuitka/code_generation/ListCodes.py +19 -17
  268. nuitka/code_generation/LoaderCodes.py +19 -17
  269. nuitka/code_generation/LocalsDictCodes.py +19 -17
  270. nuitka/code_generation/LoopCodes.py +19 -17
  271. nuitka/code_generation/MatchCodes.py +19 -17
  272. nuitka/code_generation/ModuleCodes.py +19 -17
  273. nuitka/code_generation/Namify.py +19 -17
  274. nuitka/code_generation/OperationCodes.py +21 -25
  275. nuitka/code_generation/PackageResourceCodes.py +19 -17
  276. nuitka/code_generation/PrintCodes.py +19 -17
  277. nuitka/code_generation/PythonAPICodes.py +19 -17
  278. nuitka/code_generation/RaisingCodes.py +19 -17
  279. nuitka/code_generation/Reports.py +19 -17
  280. nuitka/code_generation/ReturnCodes.py +19 -17
  281. nuitka/code_generation/SetCodes.py +19 -17
  282. nuitka/code_generation/SliceCodes.py +19 -17
  283. nuitka/code_generation/StringCodes.py +19 -17
  284. nuitka/code_generation/SubscriptCodes.py +19 -17
  285. nuitka/code_generation/TryCodes.py +19 -17
  286. nuitka/code_generation/TupleCodes.py +19 -17
  287. nuitka/code_generation/VariableCodes.py +19 -17
  288. nuitka/code_generation/VariableDeclarations.py +19 -17
  289. nuitka/code_generation/YieldCodes.py +19 -17
  290. nuitka/code_generation/__init__.py +5 -4
  291. nuitka/code_generation/c_types/CTypeBases.py +19 -17
  292. nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
  293. nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
  294. nuitka/code_generation/c_types/CTypeCLongs.py +19 -17
  295. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +19 -17
  296. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +19 -17
  297. nuitka/code_generation/c_types/CTypeNuitkaInts.py +19 -17
  298. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +19 -17
  299. nuitka/code_generation/c_types/CTypePyObjectPointers.py +19 -17
  300. nuitka/code_generation/c_types/CTypeVoids.py +19 -17
  301. nuitka/code_generation/c_types/__init__.py +5 -4
  302. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +18 -17
  303. nuitka/code_generation/templates/CodeTemplatesConstants.py +18 -17
  304. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +18 -17
  305. nuitka/code_generation/templates/CodeTemplatesExceptions.py +18 -17
  306. nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -17
  307. nuitka/code_generation/templates/CodeTemplatesFunction.py +18 -17
  308. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +18 -17
  309. nuitka/code_generation/templates/CodeTemplatesIterators.py +18 -17
  310. nuitka/code_generation/templates/CodeTemplatesLoader.py +18 -17
  311. nuitka/code_generation/templates/CodeTemplatesModules.py +18 -17
  312. nuitka/code_generation/templates/CodeTemplatesVariables.py +18 -17
  313. nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -17
  314. nuitka/code_generation/templates/__init__.py +5 -4
  315. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +17 -17
  316. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +17 -17
  317. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +17 -17
  318. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +17 -17
  319. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +17 -17
  320. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +17 -17
  321. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
  322. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +17 -17
  323. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +17 -17
  324. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +17 -17
  325. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
  326. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +17 -17
  327. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +17 -17
  328. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +17 -17
  329. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
  330. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +17 -17
  331. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +17 -17
  332. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +17 -17
  333. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +17 -17
  334. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +17 -17
  335. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +17 -17
  336. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +17 -17
  337. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +17 -17
  338. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
  339. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
  340. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
  341. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +17 -17
  342. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +17 -17
  343. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +17 -17
  344. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
  345. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
  346. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +17 -17
  347. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
  348. nuitka/containers/Namedtuples.py +19 -17
  349. nuitka/containers/OrderedSetsFallback.py +19 -17
  350. nuitka/containers/__init__.py +5 -4
  351. nuitka/distutils/Build.py +18 -17
  352. nuitka/distutils/DistutilCommands.py +19 -17
  353. nuitka/distutils/__init__.py +5 -4
  354. nuitka/finalizations/Finalization.py +19 -17
  355. nuitka/finalizations/FinalizeMarkups.py +20 -21
  356. nuitka/finalizations/__init__.py +5 -4
  357. nuitka/freezer/DependsExe.py +19 -17
  358. nuitka/freezer/DllDependenciesCommon.py +19 -17
  359. nuitka/freezer/DllDependenciesMacOS.py +19 -17
  360. nuitka/freezer/DllDependenciesPosix.py +18 -17
  361. nuitka/freezer/DllDependenciesWin32.py +20 -18
  362. nuitka/freezer/ImportDetection.py +19 -17
  363. nuitka/freezer/IncludedDataFiles.py +22 -17
  364. nuitka/freezer/IncludedEntryPoints.py +19 -17
  365. nuitka/freezer/Onefile.py +19 -17
  366. nuitka/freezer/Standalone.py +19 -17
  367. nuitka/freezer/__init__.py +5 -4
  368. nuitka/importing/IgnoreListing.py +19 -17
  369. nuitka/importing/ImportCache.py +19 -17
  370. nuitka/importing/ImportResolving.py +19 -17
  371. nuitka/importing/Importing.py +20 -18
  372. nuitka/importing/PreloadedPackages.py +19 -17
  373. nuitka/importing/Recursion.py +19 -17
  374. nuitka/importing/StandardLibrary.py +19 -17
  375. nuitka/importing/__init__.py +5 -4
  376. nuitka/nodes/AsyncgenNodes.py +19 -17
  377. nuitka/nodes/AttributeLookupNodes.py +19 -17
  378. nuitka/nodes/AttributeNodes.py +19 -17
  379. nuitka/nodes/AttributeNodesGenerated.py +18 -17
  380. nuitka/nodes/BuiltinAllNodes.py +19 -17
  381. nuitka/nodes/BuiltinAnyNodes.py +19 -17
  382. nuitka/nodes/BuiltinComplexNodes.py +19 -17
  383. nuitka/nodes/BuiltinDecodingNodes.py +19 -17
  384. nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
  385. nuitka/nodes/BuiltinDictNodes.py +19 -17
  386. nuitka/nodes/BuiltinFormatNodes.py +19 -17
  387. nuitka/nodes/BuiltinHashNodes.py +19 -17
  388. nuitka/nodes/BuiltinInputNodes.py +19 -17
  389. nuitka/nodes/BuiltinIntegerNodes.py +19 -17
  390. nuitka/nodes/BuiltinIteratorNodes.py +19 -17
  391. nuitka/nodes/BuiltinLenNodes.py +19 -17
  392. nuitka/nodes/BuiltinNextNodes.py +19 -17
  393. nuitka/nodes/BuiltinOpenNodes.py +19 -17
  394. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +19 -17
  395. nuitka/nodes/BuiltinRangeNodes.py +19 -17
  396. nuitka/nodes/BuiltinRefNodes.py +19 -17
  397. nuitka/nodes/BuiltinSumNodes.py +19 -17
  398. nuitka/nodes/BuiltinTypeNodes.py +19 -17
  399. nuitka/nodes/BuiltinVarsNodes.py +19 -17
  400. nuitka/nodes/BytesNodes.py +19 -17
  401. nuitka/nodes/CallNodes.py +19 -17
  402. nuitka/nodes/Checkers.py +19 -17
  403. nuitka/nodes/ChildrenHavingMixins.py +125 -17
  404. nuitka/nodes/ClassNodes.py +19 -17
  405. nuitka/nodes/CodeObjectSpecs.py +19 -17
  406. nuitka/nodes/ComparisonNodes.py +19 -17
  407. nuitka/nodes/ConditionalNodes.py +19 -17
  408. nuitka/nodes/ConstantRefNodes.py +19 -17
  409. nuitka/nodes/ContainerMakingNodes.py +19 -17
  410. nuitka/nodes/ContainerOperationNodes.py +19 -17
  411. nuitka/nodes/CoroutineNodes.py +19 -17
  412. nuitka/nodes/CtypesNodes.py +19 -17
  413. nuitka/nodes/DictionaryNodes.py +19 -17
  414. nuitka/nodes/ExceptionNodes.py +19 -17
  415. nuitka/nodes/ExecEvalNodes.py +19 -17
  416. nuitka/nodes/ExpressionBases.py +19 -17
  417. nuitka/nodes/ExpressionBasesGenerated.py +18 -17
  418. nuitka/nodes/ExpressionShapeMixins.py +19 -17
  419. nuitka/nodes/FrameNodes.py +19 -17
  420. nuitka/nodes/FunctionAttributeNodes.py +19 -17
  421. nuitka/nodes/FunctionNodes.py +20 -18
  422. nuitka/nodes/FutureSpecs.py +19 -17
  423. nuitka/nodes/GeneratorNodes.py +19 -17
  424. nuitka/nodes/GlobalsLocalsNodes.py +19 -17
  425. nuitka/nodes/HardImportNodesGenerated.py +103 -17
  426. nuitka/nodes/ImportHardNodes.py +19 -17
  427. nuitka/nodes/ImportNodes.py +19 -17
  428. nuitka/nodes/IndicatorMixins.py +19 -17
  429. nuitka/nodes/InjectCNodes.py +19 -17
  430. nuitka/nodes/IterationHandles.py +19 -17
  431. nuitka/nodes/KeyValuePairNodes.py +19 -17
  432. nuitka/nodes/ListOperationNodes.py +19 -17
  433. nuitka/nodes/LocalsDictNodes.py +19 -17
  434. nuitka/nodes/LocalsScopes.py +19 -17
  435. nuitka/nodes/LoopNodes.py +25 -17
  436. nuitka/nodes/MatchNodes.py +19 -17
  437. nuitka/nodes/ModuleAttributeNodes.py +19 -17
  438. nuitka/nodes/ModuleNodes.py +27 -17
  439. nuitka/nodes/NodeBases.py +24 -18
  440. nuitka/nodes/NodeMakingHelpers.py +21 -19
  441. nuitka/nodes/NodeMetaClasses.py +19 -18
  442. nuitka/nodes/OperatorNodes.py +19 -17
  443. nuitka/nodes/OperatorNodesUnary.py +19 -17
  444. nuitka/nodes/OsSysNodes.py +34 -17
  445. nuitka/nodes/OutlineNodes.py +19 -17
  446. nuitka/nodes/PackageMetadataNodes.py +19 -17
  447. nuitka/nodes/PackageResourceNodes.py +19 -17
  448. nuitka/nodes/PrintNodes.py +19 -17
  449. nuitka/nodes/ReturnNodes.py +19 -17
  450. nuitka/nodes/SideEffectNodes.py +19 -17
  451. nuitka/nodes/SliceNodes.py +19 -17
  452. nuitka/nodes/StatementBasesGenerated.py +18 -17
  453. nuitka/nodes/StatementNodes.py +19 -17
  454. nuitka/nodes/StrNodes.py +19 -17
  455. nuitka/nodes/StringConcatenationNodes.py +19 -17
  456. nuitka/nodes/SubscriptNodes.py +19 -17
  457. nuitka/nodes/TryNodes.py +19 -17
  458. nuitka/nodes/TypeMatchNodes.py +19 -17
  459. nuitka/nodes/TypeNodes.py +19 -17
  460. nuitka/nodes/VariableAssignNodes.py +97 -59
  461. nuitka/nodes/VariableDelNodes.py +19 -17
  462. nuitka/nodes/VariableNameNodes.py +19 -17
  463. nuitka/nodes/VariableRefNodes.py +27 -17
  464. nuitka/nodes/VariableReleaseNodes.py +19 -17
  465. nuitka/nodes/YieldNodes.py +19 -17
  466. nuitka/nodes/__init__.py +5 -4
  467. nuitka/nodes/shapes/BuiltinTypeShapes.py +18 -17
  468. nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
  469. nuitka/nodes/shapes/ShapeMixins.py +19 -17
  470. nuitka/nodes/shapes/StandardShapes.py +18 -17
  471. nuitka/nodes/shapes/__init__.py +5 -4
  472. nuitka/optimizations/BytecodeDemotion.py +19 -17
  473. nuitka/optimizations/FunctionInlining.py +19 -17
  474. nuitka/optimizations/Graphs.py +19 -17
  475. nuitka/optimizations/Optimization.py +19 -17
  476. nuitka/optimizations/OptimizeBuiltinCalls.py +19 -17
  477. nuitka/optimizations/Tags.py +19 -17
  478. nuitka/optimizations/TraceCollections.py +20 -18
  479. nuitka/optimizations/ValueTraces.py +40 -24
  480. nuitka/optimizations/__init__.py +5 -4
  481. nuitka/pgo/PGO.py +19 -17
  482. nuitka/pgo/__init__.py +5 -4
  483. nuitka/plugins/PluginBase.py +197 -51
  484. nuitka/plugins/Plugins.py +20 -18
  485. nuitka/plugins/__init__.py +5 -4
  486. nuitka/plugins/standard/AntiBloatPlugin.py +59 -31
  487. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +19 -17
  488. nuitka/plugins/standard/DataFilesPlugin.py +28 -18
  489. nuitka/plugins/standard/DelvewheelPlugin.py +23 -20
  490. nuitka/plugins/standard/DillPlugin/DillPlugin.c +17 -17
  491. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +21 -18
  492. nuitka/plugins/standard/DillPlugin.py +19 -17
  493. nuitka/plugins/standard/DllFilesPlugin.py +52 -22
  494. nuitka/plugins/standard/EnumPlugin.py +19 -17
  495. nuitka/plugins/standard/EventletPlugin.py +19 -17
  496. nuitka/plugins/standard/GeventPlugin.py +19 -17
  497. nuitka/plugins/standard/GiPlugin.py +19 -17
  498. nuitka/plugins/standard/GlfwPlugin.py +19 -17
  499. nuitka/plugins/standard/ImplicitImports.py +28 -19
  500. nuitka/plugins/standard/KivyPlugin.py +19 -17
  501. nuitka/plugins/standard/MatplotlibPlugin.py +19 -17
  502. nuitka/plugins/standard/MultiprocessingPlugin.py +19 -17
  503. nuitka/plugins/standard/NumpyPlugin.py +19 -17
  504. nuitka/plugins/standard/OptionsNannyPlugin.py +19 -17
  505. nuitka/plugins/standard/PbrPlugin.py +19 -17
  506. nuitka/plugins/standard/PkgResourcesPlugin.py +19 -17
  507. nuitka/plugins/standard/PmwPlugin.py +19 -17
  508. nuitka/plugins/standard/PySidePyQtPlugin.py +19 -17
  509. nuitka/plugins/standard/PywebViewPlugin.py +19 -17
  510. nuitka/plugins/standard/TensorflowPlugin.py +19 -17
  511. nuitka/plugins/standard/TkinterPlugin.py +19 -17
  512. nuitka/plugins/standard/TorchPlugin.py +19 -17
  513. nuitka/plugins/standard/TransformersPlugin.py +19 -17
  514. nuitka/plugins/standard/TrioPlugin.py +17 -15
  515. nuitka/plugins/standard/UpxPlugin.py +20 -18
  516. nuitka/plugins/standard/__init__.py +5 -4
  517. nuitka/plugins/standard/standard.nuitka-package.config.yml +52 -2
  518. nuitka/reports/CompilationReportReader.py +19 -17
  519. nuitka/reports/LicenseReport.rst.j2 +17 -17
  520. nuitka/reports/Reports.py +74 -21
  521. nuitka/reports/__init__.py +5 -4
  522. nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
  523. nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
  524. nuitka/specs/BuiltinListOperationSpecs.py +18 -17
  525. nuitka/specs/BuiltinParameterSpecs.py +19 -17
  526. nuitka/specs/BuiltinStrOperationSpecs.py +18 -17
  527. nuitka/specs/BuiltinTypeOperationSpecs.py +18 -17
  528. nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
  529. nuitka/specs/HardImportSpecs.py +27 -19
  530. nuitka/specs/ParameterSpecs.py +19 -17
  531. nuitka/specs/__init__.py +5 -4
  532. nuitka/tools/Basics.py +19 -17
  533. nuitka/tools/__init__.py +5 -4
  534. nuitka/tools/commercial/__init__.py +7 -6
  535. nuitka/tools/data_composer/DataComposer.py +19 -17
  536. nuitka/tools/data_composer/__init__.py +5 -4
  537. nuitka/tools/data_composer/__main__.py +18 -17
  538. nuitka/tools/environments/CreateEnvironment.py +19 -17
  539. nuitka/tools/environments/Virtualenv.py +19 -17
  540. nuitka/tools/environments/__init__.py +5 -4
  541. nuitka/tools/general/__init__.py +5 -4
  542. nuitka/tools/general/dll_report/__init__.py +5 -4
  543. nuitka/tools/general/dll_report/__main__.py +17 -17
  544. nuitka/tools/general/find_module/FindModuleCode.py +19 -17
  545. nuitka/tools/general/find_module/__init__.py +5 -4
  546. nuitka/tools/onefile_compressor/OnefileCompressor.py +20 -18
  547. nuitka/tools/onefile_compressor/__init__.py +5 -4
  548. nuitka/tools/onefile_compressor/__main__.py +18 -17
  549. nuitka/tools/podman/Podman.py +19 -17
  550. nuitka/tools/podman/__init__.py +5 -4
  551. nuitka/tools/podman/__main__.py +18 -17
  552. nuitka/tools/profiler/__init__.py +5 -4
  553. nuitka/tools/profiler/__main__.py +18 -17
  554. nuitka/tools/scanning/DisplayPackageDLLs.py +19 -17
  555. nuitka/tools/scanning/DisplayPackageData.py +19 -17
  556. nuitka/tools/scanning/__init__.py +5 -4
  557. nuitka/tools/specialize/CTypeDescriptions.py +18 -17
  558. nuitka/tools/specialize/Common.py +18 -17
  559. nuitka/tools/specialize/SpecializeC.py +19 -17
  560. nuitka/tools/specialize/SpecializePython.py +20 -17
  561. nuitka/tools/specialize/__init__.py +5 -4
  562. nuitka/tools/testing/Common.py +25 -27
  563. nuitka/tools/testing/Constructs.py +19 -17
  564. nuitka/tools/testing/OutputComparison.py +19 -17
  565. nuitka/tools/testing/Pythons.py +19 -17
  566. nuitka/tools/testing/RuntimeTracing.py +18 -17
  567. nuitka/tools/testing/SearchModes.py +19 -17
  568. nuitka/tools/testing/Valgrind.py +19 -17
  569. nuitka/tools/testing/__init__.py +5 -4
  570. nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
  571. nuitka/tools/testing/check_reference_counts/__main__.py +17 -17
  572. nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
  573. nuitka/tools/testing/compare_with_cpython/__main__.py +17 -17
  574. nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
  575. nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
  576. nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
  577. nuitka/tools/testing/measure_construct_performance/__main__.py +17 -17
  578. nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
  579. nuitka/tools/testing/run_nuitka_tests/__main__.py +17 -17
  580. nuitka/tools/watch/GitHub.py +18 -17
  581. nuitka/tools/watch/__init__.py +5 -4
  582. nuitka/tools/watch/__main__.py +20 -19
  583. nuitka/tree/Building.py +19 -17
  584. nuitka/tree/ComplexCallHelperFunctions.py +19 -17
  585. nuitka/tree/Extractions.py +19 -17
  586. nuitka/tree/InternalModule.py +19 -17
  587. nuitka/tree/Operations.py +19 -17
  588. nuitka/tree/ReformulationAssertStatements.py +19 -17
  589. nuitka/tree/ReformulationAssignmentStatements.py +19 -17
  590. nuitka/tree/ReformulationBooleanExpressions.py +19 -17
  591. nuitka/tree/ReformulationCallExpressions.py +19 -17
  592. nuitka/tree/ReformulationClasses.py +19 -17
  593. nuitka/tree/ReformulationClasses3.py +19 -17
  594. nuitka/tree/ReformulationComparisonExpressions.py +19 -17
  595. nuitka/tree/ReformulationContractionExpressions.py +19 -17
  596. nuitka/tree/ReformulationDictionaryCreation.py +19 -17
  597. nuitka/tree/ReformulationExecStatements.py +18 -17
  598. nuitka/tree/ReformulationForLoopStatements.py +19 -17
  599. nuitka/tree/ReformulationFunctionStatements.py +19 -17
  600. nuitka/tree/ReformulationImportStatements.py +19 -17
  601. nuitka/tree/ReformulationLambdaExpressions.py +19 -17
  602. nuitka/tree/ReformulationMatchStatements.py +19 -17
  603. nuitka/tree/ReformulationMultidist.py +19 -17
  604. nuitka/tree/ReformulationNamespacePackages.py +19 -17
  605. nuitka/tree/ReformulationPrintStatements.py +19 -17
  606. nuitka/tree/ReformulationSequenceCreation.py +19 -17
  607. nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
  608. nuitka/tree/ReformulationTryExceptStatements.py +19 -17
  609. nuitka/tree/ReformulationTryFinallyStatements.py +19 -17
  610. nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
  611. nuitka/tree/ReformulationWithStatements.py +19 -17
  612. nuitka/tree/ReformulationYieldExpressions.py +19 -17
  613. nuitka/tree/SourceHandling.py +22 -19
  614. nuitka/tree/SyntaxErrors.py +19 -17
  615. nuitka/tree/TreeHelpers.py +19 -17
  616. nuitka/tree/VariableClosure.py +19 -17
  617. nuitka/tree/__init__.py +5 -4
  618. nuitka/utils/AppDirs.py +30 -18
  619. nuitka/utils/CStrings.py +19 -17
  620. nuitka/utils/CommandLineOptions.py +19 -17
  621. nuitka/utils/Distributions.py +34 -22
  622. nuitka/utils/Download.py +20 -18
  623. nuitka/utils/Execution.py +22 -18
  624. nuitka/utils/FileOperations.py +44 -18
  625. nuitka/utils/Hashing.py +19 -17
  626. nuitka/utils/Images.py +19 -17
  627. nuitka/utils/Importing.py +31 -18
  628. nuitka/utils/InstalledPythons.py +19 -17
  629. nuitka/utils/InstanceCounters.py +19 -17
  630. nuitka/utils/Jinja2.py +19 -17
  631. nuitka/utils/Json.py +19 -17
  632. nuitka/utils/MacOSApp.py +19 -17
  633. nuitka/utils/MemoryUsage.py +19 -17
  634. nuitka/utils/ModuleNames.py +19 -17
  635. nuitka/utils/ReExecute.py +19 -17
  636. nuitka/utils/Rest.py +19 -17
  637. nuitka/utils/SharedLibraries.py +19 -17
  638. nuitka/utils/Shebang.py +19 -17
  639. nuitka/utils/Signing.py +19 -17
  640. nuitka/utils/SlotMetaClasses.py +19 -17
  641. nuitka/utils/StaticLibraries.py +19 -17
  642. nuitka/utils/ThreadedExecutor.py +18 -17
  643. nuitka/utils/Timing.py +19 -17
  644. nuitka/utils/Utils.py +19 -17
  645. nuitka/utils/WindowsFileUsage.py +18 -17
  646. nuitka/utils/WindowsResources.py +19 -17
  647. nuitka/utils/Yaml.py +19 -17
  648. nuitka/utils/__init__.py +5 -4
  649. Nuitka_winsvc-2.0.5.dist-info/RECORD +0 -920
  650. {Nuitka_winsvc-2.0.5.dist-info → Nuitka_winsvc-2.1.dist-info}/LICENSE.txt +0 -0
  651. {Nuitka_winsvc-2.0.5.dist-info → Nuitka_winsvc-2.1.dist-info}/WHEEL +0 -0
  652. {Nuitka_winsvc-2.0.5.dist-info → Nuitka_winsvc-2.1.dist-info}/entry_points.txt +0 -0
  653. {Nuitka_winsvc-2.0.5.dist-info → Nuitka_winsvc-2.1.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
  """
19
5
  Plugins: Welcome to Nuitka! This is your shortest way to become part of it.
20
6
 
@@ -28,11 +14,13 @@ it being used.
28
14
 
29
15
  import ast
30
16
  import functools
17
+ import importlib
31
18
  import inspect
32
19
  import os
33
20
  import sys
34
21
 
35
22
  from nuitka import Options
23
+ from nuitka.__past__ import iter_modules, unicode
36
24
  from nuitka.containers.Namedtuples import makeNamedtupleClass
37
25
  from nuitka.containers.OrderedSets import OrderedSet
38
26
  from nuitka.freezer.IncludedDataFiles import (
@@ -49,6 +37,7 @@ from nuitka.freezer.IncludedEntryPoints import (
49
37
  )
50
38
  from nuitka.ModuleRegistry import (
51
39
  addModuleInfluencingCondition,
40
+ addModuleInfluencingDetection,
52
41
  addModuleInfluencingParameter,
53
42
  addModuleInfluencingVariable,
54
43
  getModuleInclusionInfoByName,
@@ -67,6 +56,8 @@ from nuitka.PythonFlavors import isAnacondaPython, isDebianPackagePython
67
56
  from nuitka.PythonVersions import (
68
57
  getTestExecutionPythonVersions,
69
58
  python_version,
59
+ python_version_full_str,
60
+ python_version_str,
70
61
  )
71
62
  from nuitka.Tracing import plugins_logger
72
63
  from nuitka.utils.AppDirs import getAppdirsModule
@@ -110,6 +101,10 @@ control_tags = {}
110
101
 
111
102
  _context_dict = None
112
103
 
104
+ # Populated when "constants" and "variables" yaml sections get evaluated.
105
+ _module_config_constants = {}
106
+ _module_config_variables = {}
107
+
113
108
 
114
109
  def _getEvaluationContext():
115
110
  # Using global here, as this is really a singleton, in the form of a module,
@@ -137,6 +132,8 @@ def _getEvaluationContext():
137
132
  "no_asserts": hasPythonFlagNoAsserts(),
138
133
  "no_docstrings": hasPythonFlagNoDocStrings(),
139
134
  "no_annotations": hasPythonFlagNoAnnotations(),
135
+ # Iterating packages
136
+ "iterate_modules": _iterate_module_names,
140
137
  # Locating package directories
141
138
  "_get_module_directory": _getModuleDirectory,
142
139
  # Querying package properties
@@ -148,7 +145,11 @@ def _getEvaluationContext():
148
145
  # Frequent used modules
149
146
  "sys": sys,
150
147
  "os": os,
148
+ "importlib": importlib,
151
149
  "appdirs": getAppdirsModule(),
150
+ # Python version string
151
+ "python_version_str": python_version_str,
152
+ "python_version_full_str": python_version_full_str,
152
153
  # Builtins
153
154
  "True": True,
154
155
  "False": False,
@@ -162,6 +163,8 @@ def _getEvaluationContext():
162
163
  "list": list,
163
164
  "dict": dict,
164
165
  "set": set,
166
+ "getattr": getattr,
167
+ "hasattr": hasattr,
165
168
  "frozenset": frozenset,
166
169
  "__import__": __import__,
167
170
  }
@@ -269,6 +272,22 @@ def _getModuleDirectory(module_name):
269
272
  return module_filename
270
273
 
271
274
 
275
+ def _iterate_module_names(package_name):
276
+ package_name = ModuleName(package_name)
277
+ package_path = _getModuleDirectory(module_name=package_name)
278
+
279
+ result = []
280
+
281
+ for module_info in iter_modules([package_path]):
282
+ module_name = package_name.getChildNamed(module_info.name)
283
+ result.append(module_name.asString())
284
+
285
+ if module_info.ispkg:
286
+ result.extend(_iterate_module_names(package_name=module_name))
287
+
288
+ return result
289
+
290
+
272
291
  def _isPluginActive(plugin_name):
273
292
  from .Plugins import getUserActivatedPluginNames
274
293
 
@@ -1276,37 +1295,99 @@ except ImportError:
1276
1295
  # Virtual method, pylint: disable=no-self-use
1277
1296
  return {}
1278
1297
 
1279
- def evaluateExpression(self, full_name, expression, config_name, extra_context):
1280
- context = TagContext(logger=self, full_name=full_name, config_name=config_name)
1281
- context.update(control_tags)
1298
+ @staticmethod
1299
+ def isValueForEvaluation(expression):
1300
+ return '"' in expression or "'" in expression or "(" in expression
1282
1301
 
1283
- context.update(_getEvaluationContext())
1302
+ def evaluateExpressionOrConstant(
1303
+ self, full_name, expression, config_name, extra_context, single_value
1304
+ ):
1305
+ if self.isValueForEvaluation(expression):
1306
+ return self.evaluateExpression(
1307
+ full_name=full_name,
1308
+ expression=expression,
1309
+ config_name=config_name,
1310
+ extra_context=extra_context,
1311
+ single_value=single_value,
1312
+ )
1313
+ else:
1314
+ return expression
1284
1315
 
1285
- variables = {}
1316
+ def getExpressionConstants(self, full_name):
1317
+ if full_name not in _module_config_constants:
1318
+ constants = {}
1286
1319
 
1287
- def get_variable(variable_name):
1288
- assert type(variable_name) is str, variable_name
1320
+ for count, constant_config in enumerate(
1321
+ self.config.get(full_name, section="constants"), start=1
1322
+ ):
1323
+ declarations = constant_config.get("declarations")
1289
1324
 
1290
- if not variables:
1291
- for count, variable_config in enumerate(
1292
- self.config.get(full_name, section="variables")
1325
+ if declarations and self.evaluateCondition(
1326
+ full_name=full_name,
1327
+ condition=constant_config.get("when", "True"),
1293
1328
  ):
1294
- setup_codes = variable_config.get("setup_code")
1295
- declarations = variable_config.get("declarations")
1296
-
1297
- if self.evaluateCondition(
1298
- full_name=full_name,
1299
- condition=variable_config.get("when", "True"),
1300
- ):
1301
- info = self.queryRuntimeInformationMultiple(
1302
- "%s_variables_%s" % (full_name.asString(), count),
1303
- setup_codes=setup_codes,
1304
- values=tuple(declarations.items()),
1329
+ for constant_name, constant_value in declarations.items():
1330
+ constants[constant_name] = self.evaluateExpressionOrConstant(
1331
+ full_name=full_name,
1332
+ expression=constant_value,
1333
+ config_name="constants config #%d" % count,
1334
+ extra_context=None,
1335
+ single_value=False,
1305
1336
  )
1306
1337
 
1307
- variables.update(info.asDict())
1338
+ _module_config_constants[full_name] = constants
1339
+
1340
+ return _module_config_constants[full_name]
1341
+
1342
+ def getExpressionVariables(self, full_name):
1343
+ if full_name not in _module_config_variables:
1344
+ variables = {}
1308
1345
 
1309
- result = variables[variable_name]
1346
+ for count, variable_config in enumerate(
1347
+ self.config.get(full_name, section="variables")
1348
+ ):
1349
+ setup_codes = variable_config.get("setup_code")
1350
+ declarations = variable_config.get("declarations")
1351
+
1352
+ if declarations and self.evaluateCondition(
1353
+ full_name=full_name,
1354
+ condition=variable_config.get("when", "True"),
1355
+ ):
1356
+ if type(setup_codes) is str:
1357
+ setup_codes = setup_codes.splitlines()
1358
+
1359
+ setup_codes.extend(
1360
+ "%s=%r" % (constant_name, constant_value)
1361
+ for (
1362
+ constant_name,
1363
+ constant_value,
1364
+ ) in self.getExpressionConstants(full_name=full_name).items()
1365
+ )
1366
+
1367
+ info = self.queryRuntimeInformationMultiple(
1368
+ "%s_variables_%s" % (full_name.asString(), count),
1369
+ setup_codes=setup_codes,
1370
+ values=tuple(declarations.items()),
1371
+ )
1372
+
1373
+ variables.update(info.asDict())
1374
+
1375
+ _module_config_variables[full_name] = variables
1376
+
1377
+ return _module_config_variables[full_name]
1378
+
1379
+ def evaluateExpression(
1380
+ self, full_name, expression, config_name, extra_context, single_value
1381
+ ):
1382
+ context = TagContext(logger=self, full_name=full_name, config_name=config_name)
1383
+ context.update(control_tags)
1384
+
1385
+ context.update(_getEvaluationContext())
1386
+
1387
+ def get_variable(variable_name):
1388
+ assert type(variable_name) is str, variable_name
1389
+
1390
+ result = self.getExpressionVariables(full_name=full_name)[variable_name]
1310
1391
 
1311
1392
  addModuleInfluencingVariable(
1312
1393
  module_name=full_name,
@@ -1318,7 +1399,17 @@ except ImportError:
1318
1399
 
1319
1400
  return result
1320
1401
 
1402
+ def get_constant(constant_name):
1403
+ assert type(constant_name) is str, constant_name
1404
+
1405
+ result = self.getExpressionConstants(full_name=full_name)[constant_name]
1406
+
1407
+ # TODO: Record the constant value in report.
1408
+
1409
+ return result
1410
+
1321
1411
  context["get_variable"] = get_variable
1412
+ context["get_constant"] = get_constant
1322
1413
 
1323
1414
  def get_parameter(parameter_name, default):
1324
1415
  result = Options.getModuleParameter(full_name, parameter_name)
@@ -1326,11 +1417,10 @@ except ImportError:
1326
1417
  if result is None:
1327
1418
  result = default
1328
1419
 
1329
- addModuleInfluencingParameter(
1420
+ self.addModuleInfluencingParameter(
1330
1421
  module_name=full_name,
1331
- plugin_name=self.plugin_name,
1332
1422
  parameter_name=parameter_name,
1333
- control_tags=context.used_tags,
1423
+ condition_tags_used=context.used_tags,
1334
1424
  result=result,
1335
1425
  )
1336
1426
 
@@ -1354,11 +1444,31 @@ except ImportError:
1354
1444
  % (expression, e)
1355
1445
  )
1356
1446
 
1357
- if type(result) is not str:
1358
- self.sysexit(
1359
- "Error, expression '%s' for module '%s' did not evaluate to str result."
1360
- % (expression, full_name)
1361
- )
1447
+ if type(result) not in (str, unicode):
1448
+ if single_value:
1449
+ self.sysexit(
1450
+ """\
1451
+ Error, expression '%s' for module '%s' did not evaluate to 'str' result."""
1452
+ % (expression, full_name)
1453
+ )
1454
+ else:
1455
+ if type(result) not in (tuple, list):
1456
+ self.sysexit(
1457
+ """\
1458
+ Error, expression '%s' for module '%s' did not evaluate to 'str', 'tuple[str]' or 'list[str]' result."""
1459
+ % (expression, full_name)
1460
+ )
1461
+
1462
+ for v in result:
1463
+ if type(v) not in (str, unicode):
1464
+ self.sysexit(
1465
+ """\
1466
+ Error, expression '%s' for module '%s' did not evaluate to 'str', 'tuple[str]' or 'list[str]' result."""
1467
+ % (expression, full_name)
1468
+ )
1469
+
1470
+ # Make it immutable in case it's a list.
1471
+ result = tuple(result)
1362
1472
 
1363
1473
  return result
1364
1474
 
@@ -1384,11 +1494,10 @@ except ImportError:
1384
1494
  if result is None:
1385
1495
  result = default
1386
1496
 
1387
- addModuleInfluencingParameter(
1497
+ self.addModuleInfluencingParameter(
1388
1498
  module_name=full_name,
1389
- plugin_name=self.plugin_name,
1390
1499
  parameter_name=parameter_name,
1391
- control_tags=context.used_tags,
1500
+ condition_tags_used=context.used_tags,
1392
1501
  result=result,
1393
1502
  )
1394
1503
 
@@ -1425,6 +1534,27 @@ except ImportError:
1425
1534
 
1426
1535
  return result
1427
1536
 
1537
+ def addModuleInfluencingParameter(
1538
+ self, module_name, parameter_name, condition_tags_used, result
1539
+ ):
1540
+ addModuleInfluencingParameter(
1541
+ module_name=module_name,
1542
+ plugin_name=self.plugin_name,
1543
+ parameter_name=parameter_name,
1544
+ condition_tags_used=condition_tags_used,
1545
+ result=result,
1546
+ )
1547
+
1548
+ def addModuleInfluencingDetection(
1549
+ self, module_name, detection_name, detection_value
1550
+ ):
1551
+ addModuleInfluencingDetection(
1552
+ module_name=module_name,
1553
+ plugin_name=self.plugin_name,
1554
+ detection_name=detection_name,
1555
+ detection_value=detection_value,
1556
+ )
1557
+
1428
1558
  @classmethod
1429
1559
  def warning(cls, message, **kwargs):
1430
1560
  # Doing keyword only arguments manually, to keep older Python compatibility, and avoid
@@ -1558,3 +1688,19 @@ class TagContext(dict):
1558
1688
  "Identifier '%s' in %s of module '%s' is unknown."
1559
1689
  % (key, self.config_name, self.full_name)
1560
1690
  )
1691
+
1692
+
1693
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1694
+ # integrates with CPython, but also works on its own.
1695
+ #
1696
+ # Licensed under the Apache License, Version 2.0 (the "License");
1697
+ # you may not use this file except in compliance with the License.
1698
+ # You may obtain a copy of the License at
1699
+ #
1700
+ # http://www.apache.org/licenses/LICENSE-2.0
1701
+ #
1702
+ # Unless required by applicable law or agreed to in writing, software
1703
+ # distributed under the License is distributed on an "AS IS" BASIS,
1704
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1705
+ # See the License for the specific language governing permissions and
1706
+ # limitations under the License.
nuitka/plugins/Plugins.py CHANGED
@@ -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
  """
19
5
 
20
6
  Plugins: Welcome to Nuitka! This is your shortest way to become part of it.
@@ -1256,7 +1242,7 @@ class Plugins(object):
1256
1242
  # We order per plugin, but from the plugins, lets just take a dict
1257
1243
  # and achieve determinism by ordering the files by name.
1258
1244
  for key, value in sorted(value.items()):
1259
- if (for_onefile and not "onefile_" in key) or (
1245
+ if (for_onefile and "onefile_" not in key) or (
1260
1246
  not for_onefile and "onefile_" in key
1261
1247
  ):
1262
1248
  continue
@@ -1778,3 +1764,19 @@ def replaceTriggerModule(old, new):
1778
1764
  def isTriggerModule(module):
1779
1765
  """Decide of a module is a trigger module."""
1780
1766
  return module in pre_modules.values() or module in post_modules.values()
1767
+
1768
+
1769
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1770
+ # integrates with CPython, but also works on its own.
1771
+ #
1772
+ # Licensed under the Apache License, Version 2.0 (the "License");
1773
+ # you may not use this file except in compliance with the License.
1774
+ # You may obtain a copy of the License at
1775
+ #
1776
+ # http://www.apache.org/licenses/LICENSE-2.0
1777
+ #
1778
+ # Unless required by applicable law or agreed to in writing, software
1779
+ # distributed under the License is distributed on an "AS IS" BASIS,
1780
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1781
+ # See the License for the specific language governing permissions and
1782
+ # limitations under the License.
@@ -1,5 +1,8 @@
1
- # Copyright 2023, Kay Hayen, mailto:kay.hayen@gmail.com
2
- #
1
+ # Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Dummy file to make this directory a package. """
5
+
3
6
  # Part of "Nuitka", an optimizing Python compiler that is compatible and
4
7
  # integrates with CPython, but also works on its own.
5
8
  #
@@ -14,5 +17,3 @@
14
17
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
18
  # See the License for the specific language governing permissions and
16
19
  # limitations under the License.
17
- #
18
- """ Dummy file to make this directory a package. """
@@ -1,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
  """ Standard plug-in to avoid bloat at compile time.
19
5
 
20
6
  Nuitka hard codes stupid monkey patching normally not needed here and avoids
@@ -37,7 +23,8 @@ _mode_choices = ("error", "warning", "nofollow", "allow")
37
23
 
38
24
 
39
25
  class NuitkaPluginAntiBloat(NuitkaYamlPluginBase):
40
- # Lots of details, a bunch of state is cached, pylint: disable=too-many-instance-attributes
26
+ # Lots of details, a bunch of state is cached and tracked across functions
27
+ # pylint: disable=too-many-instance-attributes
41
28
 
42
29
  plugin_name = "anti-bloat"
43
30
  plugin_desc = (
@@ -95,6 +82,26 @@ class NuitkaPluginAntiBloat(NuitkaYamlPluginBase):
95
82
  noinclude_setuptools_mode,
96
83
  "setuptools",
97
84
  )
85
+ self.handled_modules["Cython"] = (
86
+ noinclude_setuptools_mode,
87
+ "setuptools",
88
+ )
89
+ self.handled_modules["cython"] = (
90
+ noinclude_setuptools_mode,
91
+ "setuptools",
92
+ )
93
+ self.handled_modules["pyximport"] = (
94
+ noinclude_setuptools_mode,
95
+ "setuptools",
96
+ )
97
+ self.handled_modules["paddle.utils.cpp_extension"] = (
98
+ noinclude_setuptools_mode,
99
+ "setuptools",
100
+ )
101
+ self.handled_modules["torch.utils.cpp_extension"] = (
102
+ noinclude_setuptools_mode,
103
+ "setuptools",
104
+ )
98
105
  else:
99
106
  self.control_tags["use_setuptools"] = True
100
107
 
@@ -375,6 +382,7 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
375
382
  extra_context=self._getContextCode(
376
383
  module_name=module_name, anti_bloat_config=anti_bloat_config
377
384
  ),
385
+ single_value=True,
378
386
  )
379
387
  else:
380
388
  replace_dst = ""
@@ -415,6 +423,7 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
415
423
  extra_context=self._getContextCode(
416
424
  module_name=module_name, anti_bloat_config=anti_bloat_config
417
425
  ),
426
+ single_value=True,
418
427
  )
419
428
 
420
429
  source_code += "\n" + append_result
@@ -484,6 +493,7 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
484
493
  extra_context=self._getContextCode(
485
494
  module_name=module_name, anti_bloat_config=anti_bloat_config
486
495
  ),
496
+ single_value=True,
487
497
  )
488
498
 
489
499
  # Single node is required, extract the generated module body with
@@ -553,19 +563,7 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
553
563
 
554
564
  return None
555
565
 
556
- def onModuleRecursion(
557
- self,
558
- module_name,
559
- module_filename,
560
- module_kind,
561
- using_module_name,
562
- source_ref,
563
- reason,
564
- ):
565
- # Quite a few special cases, but not really complex.
566
- # pylint: disable=too-many-branches,too-many-locals
567
-
568
- # First off, activate "no-follow" configurations.
566
+ def _applyNoFollowConfiguration(self, module_name):
569
567
  for (
570
568
  config_of_module_name,
571
569
  no_follow,
@@ -579,6 +577,20 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
579
577
  ):
580
578
  self.no_follows[no_follow] = (config_of_module_name, description)
581
579
 
580
+ def onModuleRecursion(
581
+ self,
582
+ module_name,
583
+ module_filename,
584
+ module_kind,
585
+ using_module_name,
586
+ source_ref,
587
+ reason,
588
+ ):
589
+ # pylint: disable=too-many-branches
590
+
591
+ # First off, activate "no-follow" configurations of this module.
592
+ self._applyNoFollowConfiguration(module_name=module_name)
593
+
582
594
  # Do not even look at these. It's either included by a module that is in standard
583
595
  # library, or included for a module in standard library.
584
596
  if reason == "stdlib" or (
@@ -746,3 +758,19 @@ slow down compilation."""
746
758
  Not including '%s' automatically in order to avoid bloat, but this may cause: %s."""
747
759
  % (module_name, description)
748
760
  )
761
+
762
+
763
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
764
+ # integrates with CPython, but also works on its own.
765
+ #
766
+ # Licensed under the Apache License, Version 2.0 (the "License");
767
+ # you may not use this file except in compliance with the License.
768
+ # You may obtain a copy of the License at
769
+ #
770
+ # http://www.apache.org/licenses/LICENSE-2.0
771
+ #
772
+ # Unless required by applicable law or agreed to in writing, software
773
+ # distributed under the License is distributed on an "AS IS" BASIS,
774
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
775
+ # See the License for the specific language governing permissions and
776
+ # 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
  """ Standard plug-in to take advantage of pylint or PyDev annotations.
19
5
 
20
6
  Nuitka can detect some things that PyLint and PyDev will complain about too,
@@ -91,3 +77,19 @@ if False:
91
77
 
92
78
  # Do nothing to it.
93
79
  return source_code
80
+
81
+
82
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
83
+ # integrates with CPython, but also works on its own.
84
+ #
85
+ # Licensed under the Apache License, Version 2.0 (the "License");
86
+ # you may not use this file except in compliance with the License.
87
+ # You may obtain a copy of the License at
88
+ #
89
+ # http://www.apache.org/licenses/LICENSE-2.0
90
+ #
91
+ # Unless required by applicable law or agreed to in writing, software
92
+ # distributed under the License is distributed on an "AS IS" BASIS,
93
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
94
+ # See the License for the specific language governing permissions and
95
+ # limitations under the License.