Nuitka-winsvc 2.7.7__cp313-cp313-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 (995) hide show
  1. nuitka/Builtins.py +259 -0
  2. nuitka/BytecodeCaching.py +184 -0
  3. nuitka/Bytecodes.py +109 -0
  4. nuitka/CacheCleanup.py +54 -0
  5. nuitka/Constants.py +425 -0
  6. nuitka/Errors.py +93 -0
  7. nuitka/HardImportRegistry.py +408 -0
  8. nuitka/MainControl.py +1201 -0
  9. nuitka/ModuleRegistry.py +364 -0
  10. nuitka/OptionParsing.py +2473 -0
  11. nuitka/Options.py +2948 -0
  12. nuitka/OutputDirectories.py +201 -0
  13. nuitka/PostProcessing.py +551 -0
  14. nuitka/Progress.py +252 -0
  15. nuitka/PythonFlavors.py +426 -0
  16. nuitka/PythonOperators.py +146 -0
  17. nuitka/PythonVersions.py +513 -0
  18. nuitka/Serialization.py +291 -0
  19. nuitka/SourceCodeReferences.py +176 -0
  20. nuitka/Tracing.py +579 -0
  21. nuitka/TreeXML.py +141 -0
  22. nuitka/Variables.py +515 -0
  23. nuitka/Version.py +88 -0
  24. nuitka/__init__.py +19 -0
  25. nuitka/__main__.py +224 -0
  26. nuitka/__past__.py +217 -0
  27. nuitka/build/Backend.scons +1111 -0
  28. nuitka/build/CCompilerVersion.scons +281 -0
  29. nuitka/build/DataComposerInterface.py +116 -0
  30. nuitka/build/Offsets.scons +626 -0
  31. nuitka/build/Onefile.scons +564 -0
  32. nuitka/build/SconsCaching.py +451 -0
  33. nuitka/build/SconsCompilerSettings.py +1133 -0
  34. nuitka/build/SconsHacks.py +215 -0
  35. nuitka/build/SconsInterface.py +664 -0
  36. nuitka/build/SconsProgress.py +100 -0
  37. nuitka/build/SconsSpawn.py +436 -0
  38. nuitka/build/SconsUtils.py +939 -0
  39. nuitka/build/__init__.py +19 -0
  40. nuitka/build/include/nuitka/allocator.h +450 -0
  41. nuitka/build/include/nuitka/builtins.h +97 -0
  42. nuitka/build/include/nuitka/calling.h +123 -0
  43. nuitka/build/include/nuitka/checkers.h +39 -0
  44. nuitka/build/include/nuitka/checksum_tools.h +28 -0
  45. nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
  46. nuitka/build/include/nuitka/compiled_cell.h +64 -0
  47. nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
  48. nuitka/build/include/nuitka/compiled_frame.h +502 -0
  49. nuitka/build/include/nuitka/compiled_function.h +170 -0
  50. nuitka/build/include/nuitka/compiled_generator.h +287 -0
  51. nuitka/build/include/nuitka/compiled_method.h +54 -0
  52. nuitka/build/include/nuitka/constants.h +251 -0
  53. nuitka/build/include/nuitka/constants_blob.h +34 -0
  54. nuitka/build/include/nuitka/debug_settings.h +60 -0
  55. nuitka/build/include/nuitka/environment_variables.h +30 -0
  56. nuitka/build/include/nuitka/environment_variables_system.h +51 -0
  57. nuitka/build/include/nuitka/exception_groups.h +167 -0
  58. nuitka/build/include/nuitka/exceptions.h +1458 -0
  59. nuitka/build/include/nuitka/filesystem_paths.h +117 -0
  60. nuitka/build/include/nuitka/freelists.h +92 -0
  61. nuitka/build/include/nuitka/hedley.h +1774 -0
  62. nuitka/build/include/nuitka/helper/attributes.h +90 -0
  63. nuitka/build/include/nuitka/helper/boolean.h +86 -0
  64. nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
  65. nuitka/build/include/nuitka/helper/bytes.h +28 -0
  66. nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
  67. nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
  68. nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
  69. nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
  70. nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
  71. nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
  72. nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
  73. nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
  74. nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
  75. nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
  76. nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
  77. nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
  78. nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
  79. nuitka/build/include/nuitka/helper/complex.h +46 -0
  80. nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
  81. nuitka/build/include/nuitka/helper/floats.h +32 -0
  82. nuitka/build/include/nuitka/helper/import_hard.h +121 -0
  83. nuitka/build/include/nuitka/helper/indexes.h +47 -0
  84. nuitka/build/include/nuitka/helper/ints.h +165 -0
  85. nuitka/build/include/nuitka/helper/iterators.h +376 -0
  86. nuitka/build/include/nuitka/helper/lists.h +94 -0
  87. nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
  88. nuitka/build/include/nuitka/helper/mappings.h +39 -0
  89. nuitka/build/include/nuitka/helper/operations.h +114 -0
  90. nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
  91. nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
  92. nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
  93. nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
  94. nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
  95. nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
  96. nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
  97. nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
  98. nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
  99. nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
  100. nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
  101. nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
  102. nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
  103. nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
  104. nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
  105. nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
  106. nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
  107. nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
  108. nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
  109. nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
  110. nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
  111. nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
  112. nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
  113. nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
  114. nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
  115. nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
  116. nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
  117. nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
  118. nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
  119. nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
  120. nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
  121. nuitka/build/include/nuitka/helper/raising.h +114 -0
  122. nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
  123. nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
  124. nuitka/build/include/nuitka/helper/sequences.h +33 -0
  125. nuitka/build/include/nuitka/helper/sets.h +25 -0
  126. nuitka/build/include/nuitka/helper/slices.h +314 -0
  127. nuitka/build/include/nuitka/helper/strings.h +30 -0
  128. nuitka/build/include/nuitka/helper/subscripts.h +390 -0
  129. nuitka/build/include/nuitka/helper/tuples.h +187 -0
  130. nuitka/build/include/nuitka/helpers.h +417 -0
  131. nuitka/build/include/nuitka/importing.h +149 -0
  132. nuitka/build/include/nuitka/incbin.h +402 -0
  133. nuitka/build/include/nuitka/jit_sources.h +25 -0
  134. nuitka/build/include/nuitka/prelude.h +626 -0
  135. nuitka/build/include/nuitka/printing.h +84 -0
  136. nuitka/build/include/nuitka/python_pgo.h +57 -0
  137. nuitka/build/include/nuitka/safe_string_ops.h +57 -0
  138. nuitka/build/include/nuitka/threading.h +142 -0
  139. nuitka/build/include/nuitka/tracing.h +82 -0
  140. nuitka/build/include/nuitka/type_aliases.h +30 -0
  141. nuitka/build/include/nuitka/unfreezing.h +91 -0
  142. nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
  143. nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
  144. nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
  145. nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
  146. nuitka/build/inline_copy/bin/scons.py +58 -0
  147. nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
  148. nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
  149. nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
  150. nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
  151. nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
  152. nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
  153. nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
  154. nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
  155. nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
  156. nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
  157. nuitka/build/inline_copy/glob2/LICENSE +27 -0
  158. nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
  159. nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
  160. nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
  161. nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
  162. nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
  163. nuitka/build/inline_copy/jinja2/README.rst +2 -0
  164. nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
  165. nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
  166. nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
  167. nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
  168. nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
  169. nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
  170. nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
  171. nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
  172. nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
  173. nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
  174. nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
  175. nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
  176. nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
  177. nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
  178. nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
  179. nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
  180. nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
  181. nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
  182. nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
  183. nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
  184. nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
  185. nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
  186. nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
  187. nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
  188. nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
  189. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
  190. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
  191. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
  192. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
  193. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
  194. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
  195. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
  196. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
  197. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
  198. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
  199. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
  200. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
  201. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
  202. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
  203. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
  204. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
  205. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
  206. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
  207. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
  208. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
  209. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
  210. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
  211. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
  212. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
  213. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
  214. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
  215. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
  216. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
  217. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
  218. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
  219. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
  220. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
  221. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
  222. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
  223. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
  224. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
  225. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
  226. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
  227. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
  228. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
  229. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
  230. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
  231. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
  232. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
  233. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
  234. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
  235. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
  236. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
  237. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
  238. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
  239. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
  240. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
  241. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
  242. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
  243. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
  244. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
  245. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
  246. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
  247. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
  248. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
  249. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
  250. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
  251. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
  252. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
  253. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
  254. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
  255. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
  256. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
  257. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
  258. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
  259. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
  260. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
  261. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
  262. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
  263. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
  264. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
  265. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
  266. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
  267. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
  268. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
  269. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
  270. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
  271. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
  272. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
  273. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
  274. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
  275. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
  276. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
  277. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
  278. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
  279. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
  280. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
  281. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
  282. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
  283. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
  284. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
  285. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
  286. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
  287. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
  288. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
  289. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
  290. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
  291. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
  292. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
  293. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
  294. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
  295. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
  296. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
  297. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
  298. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
  299. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
  300. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
  301. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
  302. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
  303. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
  304. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
  305. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
  306. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
  307. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
  308. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
  309. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
  310. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
  311. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
  312. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
  313. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
  314. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
  315. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
  316. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
  317. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
  318. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
  319. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
  320. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
  321. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
  322. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
  323. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
  324. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
  325. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
  326. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
  327. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
  328. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
  329. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
  330. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
  331. nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
  332. nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
  333. nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
  334. nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
  335. nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
  336. nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
  337. nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
  338. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  339. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  340. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  341. nuitka/build/inline_copy/pefile/pefile.py +8034 -0
  342. nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
  343. nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
  344. nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
  345. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
  346. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
  347. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
  348. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
  349. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
  350. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
  351. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
  352. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
  353. nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
  354. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
  355. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
  356. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
  357. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
  358. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
  359. nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
  360. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
  361. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
  362. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
  363. nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
  364. nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
  365. nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
  366. nuitka/build/inline_copy/stubgen/six.py +998 -0
  367. nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
  368. nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
  369. nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
  370. nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
  371. nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
  372. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
  373. nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
  374. nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
  375. nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
  376. nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
  377. nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
  378. nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
  379. nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
  380. nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
  381. nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
  382. nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
  383. nuitka/build/inline_copy/yaml/LICENSE +20 -0
  384. nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
  385. nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
  386. nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
  387. nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
  388. nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
  389. nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
  390. nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
  391. nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
  392. nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
  393. nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
  394. nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
  395. nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
  396. nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
  397. nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
  398. nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
  399. nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
  400. nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
  401. nuitka/build/inline_copy/zlib/LICENSE +22 -0
  402. nuitka/build/inline_copy/zlib/crc32.c +1049 -0
  403. nuitka/build/inline_copy/zlib/crc32.h +9446 -0
  404. nuitka/build/inline_copy/zlib/zconf.h +551 -0
  405. nuitka/build/inline_copy/zlib/zlib.h +1938 -0
  406. nuitka/build/inline_copy/zlib/zutil.h +275 -0
  407. nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
  408. nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
  409. nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
  410. nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
  411. nuitka/build/inline_copy/zstd/common/debug.h +107 -0
  412. nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
  413. nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
  414. nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
  415. nuitka/build/inline_copy/zstd/common/fse.h +715 -0
  416. nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
  417. nuitka/build/inline_copy/zstd/common/huf.h +361 -0
  418. nuitka/build/inline_copy/zstd/common/mem.h +426 -0
  419. nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
  420. nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
  421. nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
  422. nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
  423. nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
  424. nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
  425. nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
  426. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
  427. nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
  428. nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
  429. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
  430. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
  431. nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
  432. nuitka/build/inline_copy/zstd/zstd.h +2391 -0
  433. nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
  434. nuitka/build/static_src/CompiledCellType.c +300 -0
  435. nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
  436. nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
  437. nuitka/build/static_src/CompiledFrameType.c +1337 -0
  438. nuitka/build/static_src/CompiledFunctionType.c +3320 -0
  439. nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
  440. nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
  441. nuitka/build/static_src/CompiledMethodType.c +614 -0
  442. nuitka/build/static_src/GenerateHeadersMain.c +30 -0
  443. nuitka/build/static_src/HelpersAllocator.c +939 -0
  444. nuitka/build/static_src/HelpersAttributes.c +1241 -0
  445. nuitka/build/static_src/HelpersBuiltin.c +901 -0
  446. nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
  447. nuitka/build/static_src/HelpersBytes.c +107 -0
  448. nuitka/build/static_src/HelpersCalling.c +397 -0
  449. nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
  450. nuitka/build/static_src/HelpersChecksumTools.c +59 -0
  451. nuitka/build/static_src/HelpersClasses.c +91 -0
  452. nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
  453. nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
  454. nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
  455. nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
  456. nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
  457. nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
  458. nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
  459. nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
  460. nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
  461. nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
  462. nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
  463. nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
  464. nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
  465. nuitka/build/static_src/HelpersConsole.c +124 -0
  466. nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
  467. nuitka/build/static_src/HelpersDeepcopy.c +636 -0
  468. nuitka/build/static_src/HelpersDictionaries.c +1739 -0
  469. nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
  470. nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
  471. nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
  472. nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
  473. nuitka/build/static_src/HelpersExceptions.c +298 -0
  474. nuitka/build/static_src/HelpersFiles.c +353 -0
  475. nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
  476. nuitka/build/static_src/HelpersFloats.c +92 -0
  477. nuitka/build/static_src/HelpersHeapStorage.c +68 -0
  478. nuitka/build/static_src/HelpersImport.c +506 -0
  479. nuitka/build/static_src/HelpersImportHard.c +526 -0
  480. nuitka/build/static_src/HelpersJitSources.c +48 -0
  481. nuitka/build/static_src/HelpersLists.c +899 -0
  482. nuitka/build/static_src/HelpersListsGenerated.c +564 -0
  483. nuitka/build/static_src/HelpersMappings.c +46 -0
  484. nuitka/build/static_src/HelpersMatching.c +192 -0
  485. nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
  486. nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
  487. nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
  488. nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
  489. nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
  490. nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
  491. nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
  492. nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
  493. nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
  494. nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
  495. nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
  496. nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
  497. nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
  498. nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
  499. nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
  500. nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
  501. nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
  502. nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
  503. nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
  504. nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
  505. nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
  506. nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
  507. nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
  508. nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
  509. nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
  510. nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
  511. nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
  512. nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
  513. nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
  514. nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
  515. nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
  516. nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
  517. nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
  518. nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
  519. nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
  520. nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
  521. nuitka/build/static_src/HelpersProfiling.c +104 -0
  522. nuitka/build/static_src/HelpersPythonPgo.c +113 -0
  523. nuitka/build/static_src/HelpersRaising.c +447 -0
  524. nuitka/build/static_src/HelpersSafeStrings.c +185 -0
  525. nuitka/build/static_src/HelpersSequences.c +134 -0
  526. nuitka/build/static_src/HelpersSlices.c +73 -0
  527. nuitka/build/static_src/HelpersStrings.c +998 -0
  528. nuitka/build/static_src/HelpersTuples.c +148 -0
  529. nuitka/build/static_src/HelpersTypes.c +329 -0
  530. nuitka/build/static_src/InspectPatcher.c +439 -0
  531. nuitka/build/static_src/MainProgram.c +2060 -0
  532. nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
  533. nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
  534. nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
  535. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
  536. nuitka/build/static_src/OnefileBootstrap.c +1580 -0
  537. nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
  538. nuitka/code_generation/AsyncgenCodes.py +186 -0
  539. nuitka/code_generation/AttributeCodes.py +357 -0
  540. nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
  541. nuitka/code_generation/BranchCodes.py +67 -0
  542. nuitka/code_generation/BuiltinCodes.py +529 -0
  543. nuitka/code_generation/CallCodes.py +1186 -0
  544. nuitka/code_generation/ClassCodes.py +156 -0
  545. nuitka/code_generation/CodeGeneration.py +1078 -0
  546. nuitka/code_generation/CodeHelperSelection.py +81 -0
  547. nuitka/code_generation/CodeHelpers.py +455 -0
  548. nuitka/code_generation/CodeObjectCodes.py +165 -0
  549. nuitka/code_generation/ComparisonCodes.py +569 -0
  550. nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
  551. nuitka/code_generation/ConditionalCodes.py +236 -0
  552. nuitka/code_generation/ConstantCodes.py +243 -0
  553. nuitka/code_generation/Contexts.py +1248 -0
  554. nuitka/code_generation/CoroutineCodes.py +253 -0
  555. nuitka/code_generation/CtypesCodes.py +46 -0
  556. nuitka/code_generation/DictCodes.py +918 -0
  557. nuitka/code_generation/Emission.py +75 -0
  558. nuitka/code_generation/ErrorCodes.py +281 -0
  559. nuitka/code_generation/EvalCodes.py +444 -0
  560. nuitka/code_generation/ExceptionCodes.py +337 -0
  561. nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
  562. nuitka/code_generation/ExpressionCodes.py +61 -0
  563. nuitka/code_generation/FrameCodes.py +518 -0
  564. nuitka/code_generation/FunctionCodes.py +858 -0
  565. nuitka/code_generation/GeneratorCodes.py +218 -0
  566. nuitka/code_generation/GlobalConstants.py +249 -0
  567. nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
  568. nuitka/code_generation/IdCodes.py +53 -0
  569. nuitka/code_generation/ImportCodes.py +468 -0
  570. nuitka/code_generation/Indentation.py +45 -0
  571. nuitka/code_generation/IndexCodes.py +50 -0
  572. nuitka/code_generation/InjectCCodes.py +28 -0
  573. nuitka/code_generation/IntegerCodes.py +110 -0
  574. nuitka/code_generation/IteratorCodes.py +378 -0
  575. nuitka/code_generation/JitCodes.py +44 -0
  576. nuitka/code_generation/LabelCodes.py +68 -0
  577. nuitka/code_generation/LineNumberCodes.py +91 -0
  578. nuitka/code_generation/ListCodes.py +502 -0
  579. nuitka/code_generation/LoaderCodes.py +193 -0
  580. nuitka/code_generation/LocalsDictCodes.py +359 -0
  581. nuitka/code_generation/LoopCodes.py +88 -0
  582. nuitka/code_generation/MatchCodes.py +67 -0
  583. nuitka/code_generation/ModuleCodes.py +247 -0
  584. nuitka/code_generation/Namify.py +260 -0
  585. nuitka/code_generation/NetworkxCodes.py +51 -0
  586. nuitka/code_generation/OperationCodes.py +398 -0
  587. nuitka/code_generation/PackageResourceCodes.py +986 -0
  588. nuitka/code_generation/PrintCodes.py +93 -0
  589. nuitka/code_generation/PythonAPICodes.py +215 -0
  590. nuitka/code_generation/RaisingCodes.py +481 -0
  591. nuitka/code_generation/Reports.py +115 -0
  592. nuitka/code_generation/ReturnCodes.py +143 -0
  593. nuitka/code_generation/SetCodes.py +196 -0
  594. nuitka/code_generation/SliceCodes.py +465 -0
  595. nuitka/code_generation/StringCodes.py +303 -0
  596. nuitka/code_generation/SubscriptCodes.py +263 -0
  597. nuitka/code_generation/TensorflowCodes.py +54 -0
  598. nuitka/code_generation/TryCodes.py +326 -0
  599. nuitka/code_generation/TupleCodes.py +115 -0
  600. nuitka/code_generation/TypeAliasCodes.py +120 -0
  601. nuitka/code_generation/VariableCodes.py +519 -0
  602. nuitka/code_generation/VariableDeclarations.py +279 -0
  603. nuitka/code_generation/YieldCodes.py +253 -0
  604. nuitka/code_generation/__init__.py +19 -0
  605. nuitka/code_generation/c_types/CTypeBases.py +177 -0
  606. nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
  607. nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
  608. nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
  609. nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
  610. nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
  611. nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
  612. nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
  613. nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
  614. nuitka/code_generation/c_types/CTypeVoids.py +92 -0
  615. nuitka/code_generation/c_types/__init__.py +19 -0
  616. nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
  617. nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
  618. nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
  619. nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
  620. nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
  621. nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
  622. nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
  623. nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
  624. nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
  625. nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
  626. nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
  627. nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
  628. nuitka/code_generation/templates/__init__.py +19 -0
  629. nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
  630. nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
  631. nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
  632. nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
  633. nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
  634. nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
  635. nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
  636. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
  637. nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
  638. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
  639. nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
  640. nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
  641. nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
  642. nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
  643. nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
  644. nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
  645. nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
  646. nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
  647. nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
  648. nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
  649. nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
  650. nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
  651. nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
  652. nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
  653. nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
  654. nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
  655. nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
  656. nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
  657. nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
  658. nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
  659. nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
  660. nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
  661. nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
  662. nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
  663. nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
  664. nuitka/containers/Namedtuples.py +51 -0
  665. nuitka/containers/OrderedDicts.py +191 -0
  666. nuitka/containers/OrderedSets.py +123 -0
  667. nuitka/containers/OrderedSetsFallback.py +139 -0
  668. nuitka/containers/__init__.py +19 -0
  669. nuitka/distutils/Build.py +76 -0
  670. nuitka/distutils/DistutilCommands.py +438 -0
  671. nuitka/distutils/__init__.py +19 -0
  672. nuitka/finalizations/Finalization.py +35 -0
  673. nuitka/finalizations/FinalizeMarkups.py +136 -0
  674. nuitka/finalizations/__init__.py +19 -0
  675. nuitka/freezer/DependsExe.py +257 -0
  676. nuitka/freezer/DllDependenciesCommon.py +97 -0
  677. nuitka/freezer/DllDependenciesMacOS.py +444 -0
  678. nuitka/freezer/DllDependenciesPosix.py +242 -0
  679. nuitka/freezer/DllDependenciesWin32.py +315 -0
  680. nuitka/freezer/ImportDetection.py +359 -0
  681. nuitka/freezer/IncludedDataFiles.py +689 -0
  682. nuitka/freezer/IncludedEntryPoints.py +376 -0
  683. nuitka/freezer/Onefile.py +296 -0
  684. nuitka/freezer/Standalone.py +520 -0
  685. nuitka/freezer/__init__.py +19 -0
  686. nuitka/importing/IgnoreListing.py +449 -0
  687. nuitka/importing/ImportCache.py +95 -0
  688. nuitka/importing/ImportResolving.py +186 -0
  689. nuitka/importing/Importing.py +1200 -0
  690. nuitka/importing/PreloadedPackages.py +164 -0
  691. nuitka/importing/Recursion.py +611 -0
  692. nuitka/importing/StandardLibrary.py +429 -0
  693. nuitka/importing/__init__.py +19 -0
  694. nuitka/nodes/AsyncgenNodes.py +107 -0
  695. nuitka/nodes/AttributeLookupNodes.py +124 -0
  696. nuitka/nodes/AttributeNodes.py +386 -0
  697. nuitka/nodes/AttributeNodesGenerated.py +10734 -0
  698. nuitka/nodes/BuiltinAllNodes.py +115 -0
  699. nuitka/nodes/BuiltinAnyNodes.py +124 -0
  700. nuitka/nodes/BuiltinComplexNodes.py +83 -0
  701. nuitka/nodes/BuiltinDecodingNodes.py +52 -0
  702. nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
  703. nuitka/nodes/BuiltinDictNodes.py +140 -0
  704. nuitka/nodes/BuiltinFormatNodes.py +159 -0
  705. nuitka/nodes/BuiltinHashNodes.py +63 -0
  706. nuitka/nodes/BuiltinInputNodes.py +39 -0
  707. nuitka/nodes/BuiltinIntegerNodes.py +170 -0
  708. nuitka/nodes/BuiltinIteratorNodes.py +391 -0
  709. nuitka/nodes/BuiltinLenNodes.py +61 -0
  710. nuitka/nodes/BuiltinNextNodes.py +111 -0
  711. nuitka/nodes/BuiltinOpenNodes.py +148 -0
  712. nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
  713. nuitka/nodes/BuiltinRangeNodes.py +690 -0
  714. nuitka/nodes/BuiltinRefNodes.py +314 -0
  715. nuitka/nodes/BuiltinSumNodes.py +104 -0
  716. nuitka/nodes/BuiltinTypeNodes.py +454 -0
  717. nuitka/nodes/BuiltinVarsNodes.py +44 -0
  718. nuitka/nodes/BytesNodes.py +829 -0
  719. nuitka/nodes/CallNodes.py +217 -0
  720. nuitka/nodes/Checkers.py +55 -0
  721. nuitka/nodes/ChildrenHavingMixins.py +21576 -0
  722. nuitka/nodes/ClassNodes.py +286 -0
  723. nuitka/nodes/CodeObjectSpecs.py +230 -0
  724. nuitka/nodes/ComparisonNodes.py +687 -0
  725. nuitka/nodes/ConditionalNodes.py +884 -0
  726. nuitka/nodes/ConstantRefNodes.py +1717 -0
  727. nuitka/nodes/ContainerMakingNodes.py +408 -0
  728. nuitka/nodes/ContainerOperationNodes.py +87 -0
  729. nuitka/nodes/CoroutineNodes.py +144 -0
  730. nuitka/nodes/CtypesNodes.py +51 -0
  731. nuitka/nodes/DictionaryNodes.py +1513 -0
  732. nuitka/nodes/ExceptionNodes.py +393 -0
  733. nuitka/nodes/ExecEvalNodes.py +229 -0
  734. nuitka/nodes/ExpressionBases.py +1301 -0
  735. nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
  736. nuitka/nodes/ExpressionShapeMixins.py +886 -0
  737. nuitka/nodes/FrameNodes.py +413 -0
  738. nuitka/nodes/FunctionAttributeNodes.py +102 -0
  739. nuitka/nodes/FunctionNodes.py +1303 -0
  740. nuitka/nodes/FutureSpecs.py +224 -0
  741. nuitka/nodes/GeneratorNodes.py +201 -0
  742. nuitka/nodes/GlobalsLocalsNodes.py +209 -0
  743. nuitka/nodes/HardImportNodesGenerated.py +3599 -0
  744. nuitka/nodes/ImportHardNodes.py +185 -0
  745. nuitka/nodes/ImportNodes.py +1366 -0
  746. nuitka/nodes/IndicatorMixins.py +79 -0
  747. nuitka/nodes/InjectCNodes.py +51 -0
  748. nuitka/nodes/IterationHandles.py +407 -0
  749. nuitka/nodes/KeyValuePairNodes.py +378 -0
  750. nuitka/nodes/ListOperationNodes.py +525 -0
  751. nuitka/nodes/LocalsDictNodes.py +717 -0
  752. nuitka/nodes/LocalsScopes.py +505 -0
  753. nuitka/nodes/LoopNodes.py +445 -0
  754. nuitka/nodes/MatchNodes.py +60 -0
  755. nuitka/nodes/ModuleAttributeNodes.py +180 -0
  756. nuitka/nodes/ModuleNodes.py +1137 -0
  757. nuitka/nodes/NetworkxNodes.py +45 -0
  758. nuitka/nodes/NodeBases.py +890 -0
  759. nuitka/nodes/NodeMakingHelpers.py +481 -0
  760. nuitka/nodes/NodeMetaClasses.py +172 -0
  761. nuitka/nodes/OperatorNodes.py +944 -0
  762. nuitka/nodes/OperatorNodesUnary.py +403 -0
  763. nuitka/nodes/OsSysNodes.py +215 -0
  764. nuitka/nodes/OutlineNodes.py +372 -0
  765. nuitka/nodes/PackageMetadataNodes.py +982 -0
  766. nuitka/nodes/PackageResourceNodes.py +424 -0
  767. nuitka/nodes/PrintNodes.py +105 -0
  768. nuitka/nodes/ReturnNodes.py +255 -0
  769. nuitka/nodes/SideEffectNodes.py +139 -0
  770. nuitka/nodes/SliceNodes.py +386 -0
  771. nuitka/nodes/StatementBasesGenerated.py +3419 -0
  772. nuitka/nodes/StatementNodes.py +316 -0
  773. nuitka/nodes/StrNodes.py +919 -0
  774. nuitka/nodes/StringConcatenationNodes.py +103 -0
  775. nuitka/nodes/SubscriptNodes.py +245 -0
  776. nuitka/nodes/TensorflowNodes.py +38 -0
  777. nuitka/nodes/TryNodes.py +519 -0
  778. nuitka/nodes/TypeMatchNodes.py +65 -0
  779. nuitka/nodes/TypeNodes.py +390 -0
  780. nuitka/nodes/VariableAssignNodes.py +1177 -0
  781. nuitka/nodes/VariableDelNodes.py +320 -0
  782. nuitka/nodes/VariableNameNodes.py +153 -0
  783. nuitka/nodes/VariableRefNodes.py +895 -0
  784. nuitka/nodes/VariableReleaseNodes.py +153 -0
  785. nuitka/nodes/YieldNodes.py +121 -0
  786. nuitka/nodes/__init__.py +19 -0
  787. nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
  788. nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
  789. nuitka/nodes/shapes/IteratorShapes.py +71 -0
  790. nuitka/nodes/shapes/ShapeMixins.py +255 -0
  791. nuitka/nodes/shapes/StandardShapes.py +1384 -0
  792. nuitka/nodes/shapes/__init__.py +19 -0
  793. nuitka/optimizations/BytecodeDemotion.py +105 -0
  794. nuitka/optimizations/FunctionInlining.py +110 -0
  795. nuitka/optimizations/Graphs.py +70 -0
  796. nuitka/optimizations/Optimization.py +363 -0
  797. nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
  798. nuitka/optimizations/Tags.py +76 -0
  799. nuitka/optimizations/TraceCollections.py +1257 -0
  800. nuitka/optimizations/ValueTraces.py +980 -0
  801. nuitka/optimizations/__init__.py +19 -0
  802. nuitka/pgo/PGO.py +160 -0
  803. nuitka/pgo/__init__.py +19 -0
  804. nuitka/plugins/PluginBase.py +1924 -0
  805. nuitka/plugins/Plugins.py +2007 -0
  806. nuitka/plugins/YamlPluginBase.py +121 -0
  807. nuitka/plugins/__init__.py +19 -0
  808. nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
  809. nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
  810. nuitka/plugins/standard/DataFilesPlugin.py +311 -0
  811. nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
  812. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  813. nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
  814. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
  815. nuitka/plugins/standard/DillPlugin.py +137 -0
  816. nuitka/plugins/standard/DllFilesPlugin.py +527 -0
  817. nuitka/plugins/standard/EnumPlugin.py +64 -0
  818. nuitka/plugins/standard/EventletPlugin.py +57 -0
  819. nuitka/plugins/standard/GeventPlugin.py +64 -0
  820. nuitka/plugins/standard/GiPlugin.py +118 -0
  821. nuitka/plugins/standard/GlfwPlugin.py +138 -0
  822. nuitka/plugins/standard/ImplicitImports.py +845 -0
  823. nuitka/plugins/standard/KivyPlugin.py +141 -0
  824. nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
  825. nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
  826. nuitka/plugins/standard/NumpyPlugin.py +35 -0
  827. nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
  828. nuitka/plugins/standard/PbrPlugin.py +62 -0
  829. nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
  830. nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
  831. nuitka/plugins/standard/PmwPlugin.py +248 -0
  832. nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
  833. nuitka/plugins/standard/PywebViewPlugin.py +81 -0
  834. nuitka/plugins/standard/SpacyPlugin.py +137 -0
  835. nuitka/plugins/standard/TensorflowPlugin.py +35 -0
  836. nuitka/plugins/standard/TkinterPlugin.py +416 -0
  837. nuitka/plugins/standard/TorchPlugin.py +35 -0
  838. nuitka/plugins/standard/TransformersPlugin.py +121 -0
  839. nuitka/plugins/standard/TrioPlugin.py +33 -0
  840. nuitka/plugins/standard/UpxPlugin.py +174 -0
  841. nuitka/plugins/standard/__init__.py +19 -0
  842. nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
  843. nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
  844. nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
  845. nuitka/reports/CompilationReportReader.py +83 -0
  846. nuitka/reports/LicenseReport.rst.j2 +41 -0
  847. nuitka/reports/Reports.py +961 -0
  848. nuitka/reports/__init__.py +19 -0
  849. nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
  850. nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
  851. nuitka/specs/BuiltinListOperationSpecs.py +80 -0
  852. nuitka/specs/BuiltinParameterSpecs.py +831 -0
  853. nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
  854. nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
  855. nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
  856. nuitka/specs/HardImportSpecs.py +236 -0
  857. nuitka/specs/ParameterSpecs.py +630 -0
  858. nuitka/specs/__init__.py +19 -0
  859. nuitka/tools/Basics.py +55 -0
  860. nuitka/tools/__init__.py +19 -0
  861. nuitka/tools/commercial/__init__.py +21 -0
  862. nuitka/tools/data_composer/DataComposer.py +593 -0
  863. nuitka/tools/data_composer/__init__.py +19 -0
  864. nuitka/tools/data_composer/__main__.py +41 -0
  865. nuitka/tools/environments/CreateEnvironment.py +69 -0
  866. nuitka/tools/environments/Virtualenv.py +158 -0
  867. nuitka/tools/environments/__init__.py +19 -0
  868. nuitka/tools/general/__init__.py +19 -0
  869. nuitka/tools/general/dll_report/__init__.py +19 -0
  870. nuitka/tools/general/dll_report/__main__.py +83 -0
  871. nuitka/tools/general/find_module/FindModuleCode.py +127 -0
  872. nuitka/tools/general/find_module/__init__.py +19 -0
  873. nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
  874. nuitka/tools/general/generate_header/__init__.py +19 -0
  875. nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
  876. nuitka/tools/onefile_compressor/__init__.py +19 -0
  877. nuitka/tools/onefile_compressor/__main__.py +41 -0
  878. nuitka/tools/podman/Podman.py +55 -0
  879. nuitka/tools/podman/__init__.py +19 -0
  880. nuitka/tools/podman/__main__.py +425 -0
  881. nuitka/tools/profiler/__init__.py +19 -0
  882. nuitka/tools/profiler/__main__.py +93 -0
  883. nuitka/tools/scanning/DisplayDistributions.py +39 -0
  884. nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
  885. nuitka/tools/scanning/DisplayPackageData.py +73 -0
  886. nuitka/tools/scanning/__init__.py +19 -0
  887. nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
  888. nuitka/tools/specialize/Common.py +380 -0
  889. nuitka/tools/specialize/SpecializeC.py +1483 -0
  890. nuitka/tools/specialize/SpecializePython.py +1151 -0
  891. nuitka/tools/specialize/__init__.py +19 -0
  892. nuitka/tools/testing/Common.py +2007 -0
  893. nuitka/tools/testing/Constructs.py +53 -0
  894. nuitka/tools/testing/DocTests.py +156 -0
  895. nuitka/tools/testing/OutputComparison.py +313 -0
  896. nuitka/tools/testing/Pythons.py +34 -0
  897. nuitka/tools/testing/RuntimeTracing.py +260 -0
  898. nuitka/tools/testing/SearchModes.py +208 -0
  899. nuitka/tools/testing/Valgrind.py +103 -0
  900. nuitka/tools/testing/__init__.py +19 -0
  901. nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
  902. nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
  903. nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
  904. nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
  905. nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
  906. nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
  907. nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
  908. nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
  909. nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
  910. nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
  911. nuitka/tools/watch/AutoStage.py +145 -0
  912. nuitka/tools/watch/Common.py +55 -0
  913. nuitka/tools/watch/Conda.py +125 -0
  914. nuitka/tools/watch/GitHub.py +113 -0
  915. nuitka/tools/watch/Pacman.py +73 -0
  916. nuitka/tools/watch/Pipenv.py +145 -0
  917. nuitka/tools/watch/__init__.py +19 -0
  918. nuitka/tools/watch/__main__.py +615 -0
  919. nuitka/tree/Building.py +1459 -0
  920. nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
  921. nuitka/tree/Extractions.py +48 -0
  922. nuitka/tree/FutureSpecState.py +71 -0
  923. nuitka/tree/InternalModule.py +96 -0
  924. nuitka/tree/Operations.py +45 -0
  925. nuitka/tree/ReformulationAssertStatements.py +97 -0
  926. nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
  927. nuitka/tree/ReformulationBooleanExpressions.py +97 -0
  928. nuitka/tree/ReformulationCallExpressions.py +314 -0
  929. nuitka/tree/ReformulationClasses.py +407 -0
  930. nuitka/tree/ReformulationClasses3.py +1149 -0
  931. nuitka/tree/ReformulationComparisonExpressions.py +174 -0
  932. nuitka/tree/ReformulationContractionExpressions.py +676 -0
  933. nuitka/tree/ReformulationDictionaryCreation.py +304 -0
  934. nuitka/tree/ReformulationExecStatements.py +386 -0
  935. nuitka/tree/ReformulationForLoopStatements.py +215 -0
  936. nuitka/tree/ReformulationFunctionStatements.py +931 -0
  937. nuitka/tree/ReformulationImportStatements.py +333 -0
  938. nuitka/tree/ReformulationLambdaExpressions.py +185 -0
  939. nuitka/tree/ReformulationMatchStatements.py +797 -0
  940. nuitka/tree/ReformulationMultidist.py +80 -0
  941. nuitka/tree/ReformulationNamespacePackages.py +239 -0
  942. nuitka/tree/ReformulationPrintStatements.py +127 -0
  943. nuitka/tree/ReformulationSequenceCreation.py +438 -0
  944. nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
  945. nuitka/tree/ReformulationTryExceptStatements.py +418 -0
  946. nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
  947. nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
  948. nuitka/tree/ReformulationWithStatements.py +382 -0
  949. nuitka/tree/ReformulationYieldExpressions.py +133 -0
  950. nuitka/tree/SourceHandling.py +476 -0
  951. nuitka/tree/SyntaxErrors.py +143 -0
  952. nuitka/tree/TreeHelpers.py +720 -0
  953. nuitka/tree/VariableClosure.py +483 -0
  954. nuitka/tree/__init__.py +19 -0
  955. nuitka/utils/AppDirs.py +104 -0
  956. nuitka/utils/CStrings.py +208 -0
  957. nuitka/utils/CommandLineOptions.py +207 -0
  958. nuitka/utils/Distributions.py +728 -0
  959. nuitka/utils/Download.py +217 -0
  960. nuitka/utils/Execution.py +517 -0
  961. nuitka/utils/FileOperations.py +1587 -0
  962. nuitka/utils/Hashing.py +137 -0
  963. nuitka/utils/Images.py +79 -0
  964. nuitka/utils/Importing.py +335 -0
  965. nuitka/utils/InlineCopies.py +52 -0
  966. nuitka/utils/InstalledPythons.py +254 -0
  967. nuitka/utils/InstanceCounters.py +86 -0
  968. nuitka/utils/Jinja2.py +158 -0
  969. nuitka/utils/Json.py +40 -0
  970. nuitka/utils/MacOSApp.py +134 -0
  971. nuitka/utils/MemoryUsage.py +165 -0
  972. nuitka/utils/ModuleNames.py +317 -0
  973. nuitka/utils/PackageResources.py +44 -0
  974. nuitka/utils/ReExecute.py +152 -0
  975. nuitka/utils/Rest.py +60 -0
  976. nuitka/utils/SharedLibraries.py +1014 -0
  977. nuitka/utils/Shebang.py +113 -0
  978. nuitka/utils/Signing.py +144 -0
  979. nuitka/utils/SlotMetaClasses.py +57 -0
  980. nuitka/utils/StaticLibraries.py +260 -0
  981. nuitka/utils/ThreadedExecutor.py +87 -0
  982. nuitka/utils/Timing.py +102 -0
  983. nuitka/utils/Utils.py +483 -0
  984. nuitka/utils/WindowsFileUsage.py +337 -0
  985. nuitka/utils/WindowsResources.py +652 -0
  986. nuitka/utils/Yaml.py +247 -0
  987. nuitka/utils/__init__.py +19 -0
  988. nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
  989. nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
  990. nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
  991. nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
  992. nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
  993. nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
  994. nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
  995. nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1248 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ Code generation contexts.
5
+
6
+ """
7
+
8
+ import collections
9
+ from abc import abstractmethod
10
+ from contextlib import contextmanager
11
+
12
+ from nuitka import Options
13
+ from nuitka.__past__ import iterItems
14
+ from nuitka.Constants import isMutable
15
+ from nuitka.PythonVersions import python_version
16
+ from nuitka.Serialization import ConstantAccessor
17
+ from nuitka.utils.Hashing import getStringHash
18
+ from nuitka.utils.InstanceCounters import (
19
+ counted_del,
20
+ counted_init,
21
+ isCountingInstances,
22
+ )
23
+ from nuitka.utils.SlotMetaClasses import getMetaClassBase
24
+
25
+ from .VariableDeclarations import VariableDeclaration, VariableStorage
26
+
27
+ # Many methods won't use self, but it's the interface. pylint: disable=no-self-use
28
+
29
+
30
+ class TempMixin(object):
31
+ # Lots of details, everything gets to store bits here, to indicate
32
+ # code generation states, and there are many, pylint: disable=too-many-instance-attributes
33
+
34
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
35
+ __slots__ = ()
36
+
37
+ def __init__(self):
38
+ self.tmp_names = {}
39
+
40
+ self.labels = {}
41
+
42
+ # For exception and loop handling
43
+ self.exception_escape = None
44
+ self.loop_continue = None
45
+ self.loop_break = None
46
+
47
+ # For branches
48
+ self.true_target = None
49
+ self.false_target = None
50
+
51
+ self.keeper_variable_count = 0
52
+ self.exception_keepers = (None, None)
53
+
54
+ self.preserver_variable_declaration = {}
55
+
56
+ self.cleanup_names = []
57
+
58
+ def _formatTempName(self, base_name, number):
59
+ if number is None:
60
+ return "tmp_{name}".format(name=base_name)
61
+ else:
62
+ return "tmp_{name}_{number:d}".format(name=base_name, number=number)
63
+
64
+ def allocateTempName(self, base_name, type_name="PyObject *", unique=False):
65
+ # We might be hard coding too many details for special temps
66
+ # here, pylint: disable=too-many-branches
67
+
68
+ # TODO: This should be achieved.
69
+ # assert not base_name.startswith("tmp_"), base_name
70
+
71
+ if unique:
72
+ number = None
73
+ else:
74
+ number = self.tmp_names.get(base_name, 0)
75
+ number += 1
76
+
77
+ self.tmp_names[base_name] = number
78
+
79
+ formatted_name = self._formatTempName(base_name=base_name, number=number)
80
+
81
+ if unique:
82
+ result = self.variable_storage.getVariableDeclarationTop(formatted_name)
83
+
84
+ if result is None:
85
+ if base_name == "outline_return_value":
86
+ init_value = "NULL"
87
+ elif base_name == "return_value":
88
+ init_value = "NULL"
89
+ elif base_name == "generator_return":
90
+ init_value = "false"
91
+ else:
92
+ init_value = None
93
+
94
+ if base_name == "unused":
95
+ result = self.variable_storage.addVariableDeclarationFunction(
96
+ c_type=type_name,
97
+ code_name=formatted_name,
98
+ init_value=init_value,
99
+ )
100
+ else:
101
+ result = self.variable_storage.addVariableDeclarationTop(
102
+ c_type=type_name,
103
+ code_name=formatted_name,
104
+ init_value=init_value,
105
+ )
106
+ else:
107
+ if type_name.startswith("NUITKA_MAY_BE_UNUSED"):
108
+ type_name = type_name[21:]
109
+
110
+ assert result.c_type == type_name
111
+
112
+ else:
113
+ result = self.variable_storage.addVariableDeclarationLocal(
114
+ c_type=type_name, code_name=formatted_name
115
+ )
116
+
117
+ return result
118
+
119
+ def skipTempName(self, base_name):
120
+ number = self.tmp_names.get(base_name, 0)
121
+ number += 1
122
+ self.tmp_names[base_name] = number
123
+
124
+ def getIntResName(self):
125
+ return self.allocateTempName("res", "int", unique=True)
126
+
127
+ def getBoolResName(self):
128
+ return self.allocateTempName("result", "bool", unique=True)
129
+
130
+ def hasTempName(self, base_name):
131
+ return base_name in self.tmp_names
132
+
133
+ def getExceptionEscape(self):
134
+ return self.exception_escape
135
+
136
+ def setExceptionEscape(self, label):
137
+ result = self.exception_escape
138
+ self.exception_escape = label
139
+ return result
140
+
141
+ def getLoopBreakTarget(self):
142
+ return self.loop_break
143
+
144
+ def setLoopBreakTarget(self, label):
145
+ result = self.loop_break
146
+ self.loop_break = label
147
+ return result
148
+
149
+ def getLoopContinueTarget(self):
150
+ return self.loop_continue
151
+
152
+ def setLoopContinueTarget(self, label):
153
+ result = self.loop_continue
154
+ self.loop_continue = label
155
+ return result
156
+
157
+ def allocateLabel(self, label):
158
+ result = self.labels.get(label, 0)
159
+ result += 1
160
+ self.labels[label] = result
161
+
162
+ return "{name}_{number:d}".format(name=label, number=result)
163
+
164
+ def getLabelCount(self, label):
165
+ return self.labels.get(label, 0)
166
+
167
+ def allocateExceptionKeeperVariables(self):
168
+ self.keeper_variable_count += 1
169
+
170
+ # For finally handlers of Python3, which have conditions on assign and
171
+ # use, the NULL init is needed.
172
+ debug = Options.is_debug and python_version >= 0x300
173
+
174
+ if debug:
175
+ keeper_obj_init = "Empty_Nuitka_ExceptionPreservationItem"
176
+ else:
177
+ keeper_obj_init = None
178
+
179
+ return (
180
+ self.variable_storage.addVariableDeclarationTop(
181
+ "struct Nuitka_ExceptionPreservationItem",
182
+ "exception_keeper_name_%d" % self.keeper_variable_count,
183
+ keeper_obj_init,
184
+ ),
185
+ self.variable_storage.addVariableDeclarationTop(
186
+ "NUITKA_MAY_BE_UNUSED int",
187
+ "exception_keeper_lineno_%d" % self.keeper_variable_count,
188
+ "0" if debug else None,
189
+ ),
190
+ )
191
+
192
+ def getExceptionKeeperVariables(self):
193
+ return self.exception_keepers
194
+
195
+ def setExceptionKeeperVariables(self, keeper_vars):
196
+ result = self.exception_keepers
197
+ self.exception_keepers = tuple(keeper_vars)
198
+ assert len(self.exception_keepers) == 2
199
+ return result
200
+
201
+ def addExceptionPreserverVariables(self, preserver_id):
202
+ # For finally handlers of Python3, which have conditions on assign and
203
+ # use.
204
+ if preserver_id not in self.preserver_variable_declaration:
205
+ needs_init = Options.is_debug and python_version >= 0x300
206
+
207
+ if needs_init:
208
+ preserver_obj_init = "Nuitka_ExceptionStackItem_Empty"
209
+ else:
210
+ preserver_obj_init = None
211
+
212
+ self.preserver_variable_declaration[preserver_id] = (
213
+ self.variable_storage.addVariableDeclarationTop(
214
+ "struct Nuitka_ExceptionStackItem",
215
+ "exception_preserved_%d" % preserver_id,
216
+ preserver_obj_init,
217
+ )
218
+ )
219
+
220
+ return self.preserver_variable_declaration[preserver_id]
221
+
222
+ def getTrueBranchTarget(self):
223
+ return self.true_target
224
+
225
+ def getFalseBranchTarget(self):
226
+ return self.false_target
227
+
228
+ def setTrueBranchTarget(self, label):
229
+ self.true_target = label
230
+
231
+ def setFalseBranchTarget(self, label):
232
+ self.false_target = label
233
+
234
+ def getCleanupTempNames(self):
235
+ return self.cleanup_names[-1]
236
+
237
+ def addCleanupTempName(self, tmp_name):
238
+ assert tmp_name not in self.cleanup_names[-1], tmp_name
239
+ assert (
240
+ tmp_name.c_type != "nuitka_void" or tmp_name.code_name == "tmp_unused"
241
+ ), tmp_name
242
+
243
+ self.cleanup_names[-1].append(tmp_name)
244
+
245
+ def removeCleanupTempName(self, tmp_name):
246
+ assert tmp_name in self.cleanup_names[-1], tmp_name
247
+ self.cleanup_names[-1].remove(tmp_name)
248
+
249
+ def transferCleanupTempName(self, tmp_source, tmp_dest):
250
+ if self.needsCleanup(tmp_source):
251
+ self.addCleanupTempName(tmp_dest)
252
+ self.removeCleanupTempName(tmp_source)
253
+
254
+ def needsCleanup(self, tmp_name):
255
+ return tmp_name in self.cleanup_names[-1]
256
+
257
+ def pushCleanupScope(self):
258
+ self.cleanup_names.append([])
259
+
260
+ def popCleanupScope(self):
261
+ assert not self.cleanup_names[-1]
262
+ del self.cleanup_names[-1]
263
+
264
+
265
+ # TODO: Remove when isExperimental("new-code-objects") is becoming the
266
+ # standard.
267
+ CodeObjectHandle = collections.namedtuple(
268
+ "CodeObjectHandle",
269
+ (
270
+ "co_name",
271
+ "co_qualname",
272
+ "co_kind",
273
+ "co_varnames",
274
+ "co_argcount",
275
+ "co_posonlyargcount",
276
+ "co_kwonlyargcount",
277
+ "co_has_starlist",
278
+ "co_has_stardict",
279
+ "co_filename",
280
+ "line_number",
281
+ "future_flags",
282
+ "co_new_locals",
283
+ "co_freevars",
284
+ "is_optimized",
285
+ ),
286
+ )
287
+
288
+
289
+ if Options.isExperimental("new-code-objects"):
290
+
291
+ class CodeObjectsMixin(object):
292
+ __slots__ = ()
293
+
294
+ else:
295
+
296
+ class CodeObjectsMixin(object):
297
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
298
+ __slots__ = ()
299
+
300
+ def __init__(self):
301
+ # Code objects needed made unique by a key.
302
+ self.code_objects = {}
303
+
304
+ def getCodeObjects(self):
305
+ return sorted(iterItems(self.code_objects))
306
+
307
+ def getCodeObjectHandle(self, code_object):
308
+ key = CodeObjectHandle(
309
+ co_filename=code_object.getFilename(),
310
+ co_name=code_object.getCodeObjectName(),
311
+ co_qualname=code_object.getCodeObjectQualname(),
312
+ line_number=code_object.getLineNumber(),
313
+ co_varnames=code_object.getVarNames(),
314
+ co_argcount=code_object.getArgumentCount(),
315
+ co_freevars=code_object.getFreeVarNames(),
316
+ co_posonlyargcount=code_object.getPosOnlyParameterCount(),
317
+ co_kwonlyargcount=code_object.getKwOnlyParameterCount(),
318
+ co_kind=code_object.getCodeObjectKind(),
319
+ is_optimized=code_object.getFlagIsOptimizedValue(),
320
+ co_new_locals=code_object.getFlagNewLocalsValue(),
321
+ co_has_starlist=code_object.hasStarListArg(),
322
+ co_has_stardict=code_object.hasStarDictArg(),
323
+ future_flags=code_object.getFutureSpec().asFlags(),
324
+ )
325
+
326
+ if key not in self.code_objects:
327
+ self.code_objects[key] = "code_objects_%s" % self._calcHash(key)
328
+
329
+ return self.code_objects[key]
330
+
331
+ def _calcHash(self, key):
332
+ return getStringHash("-".join(str(s) for s in key))
333
+
334
+
335
+ class PythonContextBase(getMetaClassBase("Context", require_slots=True)):
336
+ __slots__ = ("source_ref", "current_source_ref")
337
+
338
+ @counted_init
339
+ def __init__(self):
340
+ self.source_ref = None
341
+
342
+ self.current_source_ref = None
343
+
344
+ if isCountingInstances():
345
+ __del__ = counted_del()
346
+
347
+ def getCurrentSourceCodeReference(self):
348
+ return self.current_source_ref
349
+
350
+ def setCurrentSourceCodeReference(self, value):
351
+ result = self.current_source_ref
352
+ self.current_source_ref = value
353
+
354
+ return result
355
+
356
+ @contextmanager
357
+ def withCurrentSourceCodeReference(self, value):
358
+ old_source_ref = self.setCurrentSourceCodeReference(value)
359
+
360
+ yield old_source_ref
361
+
362
+ self.setCurrentSourceCodeReference(value)
363
+
364
+ def getInplaceLeftName(self):
365
+ return self.allocateTempName("inplace_orig", "PyObject *", True)
366
+
367
+ @abstractmethod
368
+ def getConstantCode(self, constant, deep_check=False):
369
+ pass
370
+
371
+ @abstractmethod
372
+ def addModuleInitCode(self, code):
373
+ pass
374
+
375
+ @abstractmethod
376
+ def getModuleCodeName(self):
377
+ pass
378
+
379
+ @abstractmethod
380
+ def getModuleName(self):
381
+ pass
382
+
383
+ @abstractmethod
384
+ def addHelperCode(self, key, code):
385
+ pass
386
+
387
+ @abstractmethod
388
+ def hasHelperCode(self, key):
389
+ pass
390
+
391
+ @abstractmethod
392
+ def addDeclaration(self, key, code):
393
+ pass
394
+
395
+ @abstractmethod
396
+ def pushFrameVariables(self, frame_variables):
397
+ pass
398
+
399
+ @abstractmethod
400
+ def popFrameVariables(self):
401
+ pass
402
+
403
+ @abstractmethod
404
+ def getFrameVariableTypeDescriptions(self):
405
+ pass
406
+
407
+ @abstractmethod
408
+ def getFrameVariableTypeDescription(self):
409
+ pass
410
+
411
+ @abstractmethod
412
+ def getFrameTypeDescriptionDeclaration(self):
413
+ pass
414
+
415
+ @abstractmethod
416
+ def getFrameVariableCodeNames(self):
417
+ pass
418
+
419
+ @abstractmethod
420
+ def allocateTempName(self, base_name, type_name="PyObject *", unique=False):
421
+ pass
422
+
423
+ @abstractmethod
424
+ def skipTempName(self, base_name):
425
+ pass
426
+
427
+ @abstractmethod
428
+ def getIntResName(self):
429
+ pass
430
+
431
+ @abstractmethod
432
+ def getBoolResName(self):
433
+ pass
434
+
435
+ @abstractmethod
436
+ def hasTempName(self, base_name):
437
+ pass
438
+
439
+ @abstractmethod
440
+ def getExceptionEscape(self):
441
+ pass
442
+
443
+ @abstractmethod
444
+ def setExceptionEscape(self, label):
445
+ pass
446
+
447
+ @abstractmethod
448
+ def getLoopBreakTarget(self):
449
+ pass
450
+
451
+ @abstractmethod
452
+ def setLoopBreakTarget(self, label):
453
+ pass
454
+
455
+ @abstractmethod
456
+ def getLoopContinueTarget(self):
457
+ pass
458
+
459
+ @abstractmethod
460
+ def setLoopContinueTarget(self, label):
461
+ pass
462
+
463
+ @abstractmethod
464
+ def allocateLabel(self, label):
465
+ pass
466
+
467
+ @abstractmethod
468
+ def allocateExceptionKeeperVariables(self):
469
+ pass
470
+
471
+ @abstractmethod
472
+ def getExceptionKeeperVariables(self):
473
+ pass
474
+
475
+ @abstractmethod
476
+ def setExceptionKeeperVariables(self, keeper_vars):
477
+ pass
478
+
479
+ @abstractmethod
480
+ def addExceptionPreserverVariables(self, count):
481
+ pass
482
+
483
+ @abstractmethod
484
+ def getTrueBranchTarget(self):
485
+ pass
486
+
487
+ @abstractmethod
488
+ def getFalseBranchTarget(self):
489
+ pass
490
+
491
+ @abstractmethod
492
+ def setTrueBranchTarget(self, label):
493
+ pass
494
+
495
+ @abstractmethod
496
+ def setFalseBranchTarget(self, label):
497
+ pass
498
+
499
+ @abstractmethod
500
+ def getCleanupTempNames(self):
501
+ pass
502
+
503
+ @abstractmethod
504
+ def addCleanupTempName(self, tmp_name):
505
+ pass
506
+
507
+ @abstractmethod
508
+ def removeCleanupTempName(self, tmp_name):
509
+ pass
510
+
511
+ @abstractmethod
512
+ def needsCleanup(self, tmp_name):
513
+ pass
514
+
515
+ @abstractmethod
516
+ def pushCleanupScope(self):
517
+ pass
518
+
519
+ @abstractmethod
520
+ def popCleanupScope(self):
521
+ pass
522
+
523
+
524
+ class PythonChildContextBase(PythonContextBase):
525
+ # Base classes can be abstract, pylint: disable=I0021,abstract-method
526
+
527
+ __slots__ = ("parent",)
528
+
529
+ def __init__(self, parent):
530
+ PythonContextBase.__init__(self)
531
+
532
+ self.parent = parent
533
+
534
+ def getConstantCode(self, constant, deep_check=False):
535
+ return self.parent.getConstantCode(constant, deep_check=deep_check)
536
+
537
+ def addModuleInitCode(self, code):
538
+ self.parent.addModuleInitCode(code)
539
+
540
+ def getModuleCodeName(self):
541
+ return self.parent.getModuleCodeName()
542
+
543
+ def getModuleName(self):
544
+ return self.parent.getModuleName()
545
+
546
+ def addHelperCode(self, key, code):
547
+ return self.parent.addHelperCode(key, code)
548
+
549
+ def hasHelperCode(self, key):
550
+ return self.parent.hasHelperCode(key)
551
+
552
+ def addDeclaration(self, key, code):
553
+ self.parent.addDeclaration(key, code)
554
+
555
+ def pushFrameVariables(self, frame_variables):
556
+ return self.parent.pushFrameVariables(frame_variables)
557
+
558
+ def popFrameVariables(self):
559
+ return self.parent.popFrameVariables()
560
+
561
+ def getFrameVariableTypeDescriptions(self):
562
+ return self.parent.getFrameVariableTypeDescriptions()
563
+
564
+ def getFrameVariableTypeDescription(self):
565
+ return self.parent.getFrameVariableTypeDescription()
566
+
567
+ def getFrameTypeDescriptionDeclaration(self):
568
+ return self.parent.getFrameTypeDescriptionDeclaration()
569
+
570
+ def getFrameVariableCodeNames(self):
571
+ return self.parent.getFrameVariableCodeNames()
572
+
573
+ def addFunctionCreationInfo(self, creation_info):
574
+ return self.parent.addFunctionCreationInfo(creation_info)
575
+
576
+ def setModuleVariableAccessorCaching(self, variable_name, caching):
577
+ self.parent.setModuleVariableAccessorCaching(variable_name, caching)
578
+
579
+
580
+ class FrameDeclarationsMixin(object):
581
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
582
+ __slots__ = ()
583
+
584
+ def __init__(self):
585
+ # Frame is active or not, default not.
586
+ self.frame_variables_stack = [""]
587
+ # Type descriptions of the current frame.
588
+ self.frame_type_descriptions = [()]
589
+
590
+ # Types of variables for current frame.
591
+ self.frame_variable_types = {}
592
+
593
+ self.frames_used = 0
594
+
595
+ # Currently active frame stack inside the context.
596
+ self.frame_stack = [None]
597
+
598
+ self.locals_dict_names = None
599
+
600
+ def getFrameHandle(self):
601
+ return self.frame_stack[-1]
602
+
603
+ def pushFrameHandle(self, frame_code_name, is_light):
604
+ self.frames_used += 1
605
+
606
+ if is_light:
607
+ frame_identifier = VariableDeclaration(
608
+ "struct Nuitka_FrameObject *",
609
+ "m_frame",
610
+ None,
611
+ self.getContextObjectName(),
612
+ )
613
+
614
+ else:
615
+ frame_handle = "frame_" + frame_code_name
616
+
617
+ if self.frames_used > 1:
618
+ frame_handle += "_%d" % self.frames_used
619
+
620
+ frame_identifier = self.variable_storage.addVariableDeclarationTop(
621
+ "struct Nuitka_FrameObject *", frame_handle, None
622
+ )
623
+
624
+ self.variable_storage.addVariableDeclarationTop(
625
+ "NUITKA_MAY_BE_UNUSED char const *",
626
+ "type_description_%d" % self.frames_used,
627
+ "NULL",
628
+ )
629
+
630
+ self.frame_stack.append(frame_identifier)
631
+ return frame_identifier
632
+
633
+ def popFrameHandle(self):
634
+ result = self.frame_stack[-1]
635
+ del self.frame_stack[-1]
636
+
637
+ return result
638
+
639
+ def getFramesCount(self):
640
+ return self.frames_used
641
+
642
+ def pushFrameVariables(self, frame_variables):
643
+ """Set current the frame variables."""
644
+ self.frame_variables_stack.append(frame_variables)
645
+ self.frame_type_descriptions.append(set())
646
+
647
+ def popFrameVariables(self):
648
+ """End of frame, restore previous ones."""
649
+ del self.frame_variables_stack[-1]
650
+ del self.frame_type_descriptions[-1]
651
+
652
+ def setVariableType(self, variable, variable_declaration):
653
+ assert variable.isLocalVariable(), variable
654
+
655
+ # TODO: Change value of that dict to take advantage of declaration.
656
+ self.frame_variable_types[variable] = (
657
+ str(variable_declaration),
658
+ variable_declaration.getCType().getTypeIndicator(),
659
+ )
660
+
661
+ def getFrameVariableTypeDescriptions(self):
662
+ return self.frame_type_descriptions[-1]
663
+
664
+ def getFrameTypeDescriptionDeclaration(self):
665
+ return self.variable_storage.getVariableDeclarationTop(
666
+ "type_description_%d" % (len(self.frame_stack) - 1)
667
+ )
668
+
669
+ def getFrameVariableTypeDescription(self):
670
+ result = "".join(
671
+ self.frame_variable_types.get(variable, ("NULL", "N"))[1]
672
+ for variable in self.frame_variables_stack[-1]
673
+ )
674
+
675
+ if result:
676
+ self.frame_type_descriptions[-1].add(result)
677
+
678
+ return result
679
+
680
+ def getFrameVariableCodeNames(self):
681
+ result = []
682
+
683
+ for variable in self.frame_variables_stack[-1]:
684
+ variable_code_name, variable_code_type = self.frame_variable_types.get(
685
+ variable, ("NULL", "N")
686
+ )
687
+
688
+ if variable_code_type in ("b",):
689
+ result.append("(int)" + variable_code_name)
690
+ else:
691
+ result.append(variable_code_name)
692
+
693
+ return result
694
+
695
+ def getLocalsDictNames(self):
696
+ return self.locals_dict_names or ()
697
+
698
+ def addLocalsDictName(self, locals_dict_name):
699
+ result = self.variable_storage.getVariableDeclarationTop(locals_dict_name)
700
+
701
+ if result is None:
702
+ result = self.variable_storage.addVariableDeclarationTop(
703
+ "PyObject *", locals_dict_name, "NULL"
704
+ )
705
+
706
+ if self.locals_dict_names is None:
707
+ self.locals_dict_names = set()
708
+
709
+ self.locals_dict_names.add(result)
710
+
711
+ return result
712
+
713
+
714
+ class ReturnReleaseModeMixin(object):
715
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
716
+ __slots__ = ()
717
+
718
+ def __init__(self):
719
+ self.return_release_mode = False
720
+
721
+ self.return_exit = None
722
+
723
+ def setReturnReleaseMode(self, value):
724
+ result = self.return_release_mode
725
+ self.return_release_mode = value
726
+ return result
727
+
728
+ def getReturnReleaseMode(self):
729
+ return self.return_release_mode
730
+
731
+ def setReturnTarget(self, label):
732
+ result = self.return_exit
733
+ self.return_exit = label
734
+ return result
735
+
736
+ def getReturnTarget(self):
737
+ return self.return_exit
738
+
739
+
740
+ class ReturnValueNameMixin(object):
741
+ # Mixins are not allowed to specify slots, pylint: disable=assigning-non-slot
742
+ __slots__ = ()
743
+
744
+ def __init__(self):
745
+ self.return_name = None
746
+
747
+ def getReturnValueName(self):
748
+ if self.return_name is None:
749
+ self.return_name = self.allocateTempName("return_value", unique=True)
750
+
751
+ return self.return_name
752
+
753
+ def setReturnValueName(self, value):
754
+ result = self.return_name
755
+ self.return_name = value
756
+ return result
757
+
758
+
759
+ class PythonModuleContext(
760
+ FrameDeclarationsMixin,
761
+ TempMixin,
762
+ CodeObjectsMixin,
763
+ ReturnReleaseModeMixin,
764
+ ReturnValueNameMixin,
765
+ PythonContextBase,
766
+ ):
767
+ # Plenty of attributes, because it's storing so many different things.
768
+ # pylint: disable=too-many-instance-attributes
769
+
770
+ __slots__ = (
771
+ "module",
772
+ "name",
773
+ "code_name",
774
+ "declaration_codes",
775
+ "helper_codes",
776
+ "frame_handle",
777
+ "variable_storage",
778
+ "function_table_entries",
779
+ "constant_accessor",
780
+ "module_init_codes",
781
+ "module_variable_caching",
782
+ # FrameDeclarationsMixin
783
+ "frame_variables_stack",
784
+ "frame_type_descriptions",
785
+ "frame_variable_types",
786
+ "frames_used",
787
+ "frame_stack",
788
+ "locals_dict_names",
789
+ # TempMixin:
790
+ "tmp_names",
791
+ "labels",
792
+ "exception_escape",
793
+ "loop_continue",
794
+ "loop_break",
795
+ "true_target",
796
+ "false_target",
797
+ "keeper_variable_count",
798
+ "exception_keepers",
799
+ "preserver_variable_declaration",
800
+ "cleanup_names",
801
+ # TODO: Remove when isExperimental("new-code-objects") is becoming the
802
+ # standard.
803
+ # CodeObjectsMixin
804
+ "code_objects",
805
+ # ReturnReleaseModeMixin
806
+ "return_release_mode",
807
+ "return_exit",
808
+ # ReturnValueNameMixin
809
+ "return_name",
810
+ )
811
+
812
+ def __init__(self, module, data_filename):
813
+ PythonContextBase.__init__(self)
814
+
815
+ TempMixin.__init__(self)
816
+ CodeObjectsMixin.__init__(self)
817
+ FrameDeclarationsMixin.__init__(self)
818
+ ReturnReleaseModeMixin.__init__(self)
819
+
820
+ # TODO: For outlines bodies.
821
+ ReturnValueNameMixin.__init__(self)
822
+
823
+ self.module = module
824
+ self.name = module.getFullName()
825
+ self.code_name = module.getCodeName()
826
+
827
+ self.declaration_codes = {}
828
+ self.helper_codes = {}
829
+
830
+ self.frame_handle = None
831
+
832
+ self.variable_storage = VariableStorage(heap_name=None)
833
+
834
+ self.function_table_entries = []
835
+
836
+ self.constant_accessor = ConstantAccessor(
837
+ top_level_name="mod_consts", data_filename=data_filename
838
+ )
839
+
840
+ self.module_init_codes = []
841
+
842
+ self.module_variable_caching = {}
843
+
844
+ def __repr__(self):
845
+ return "<PythonModuleContext instance for module %s>" % self.name
846
+
847
+ def getOwner(self):
848
+ return self.module
849
+
850
+ def getEntryPoint(self):
851
+ return self.module
852
+
853
+ def setModuleVariableAccessorCaching(self, variable_name, caching):
854
+ if caching:
855
+ self.module_variable_caching[variable_name] = True
856
+ elif variable_name not in self.module_variable_caching:
857
+ self.module_variable_caching[variable_name] = False
858
+
859
+ def isModuleVariableAccessorCaching(self, variable_name):
860
+ return self.module_variable_caching.get(variable_name, False)
861
+
862
+ def getModuleVariableAccessors(self):
863
+ return self.module_variable_caching
864
+
865
+ def isCompiledPythonModule(self):
866
+ return True
867
+
868
+ def getName(self):
869
+ return self.name
870
+
871
+ def mayRaiseException(self):
872
+ body = self.module.subnode_body
873
+
874
+ return body is not None and body.mayRaiseException(BaseException)
875
+
876
+ getModuleName = getName
877
+
878
+ def getModuleCodeName(self):
879
+ return self.code_name
880
+
881
+ def setFrameGuardMode(self, guard_mode):
882
+ assert guard_mode == "once"
883
+
884
+ def addHelperCode(self, key, code):
885
+ assert key not in self.helper_codes, key
886
+
887
+ self.helper_codes[key] = code
888
+
889
+ def hasHelperCode(self, key):
890
+ return key in self.helper_codes
891
+
892
+ def getHelperCodes(self):
893
+ return self.helper_codes
894
+
895
+ def addDeclaration(self, key, code):
896
+ assert key not in self.declaration_codes
897
+
898
+ self.declaration_codes[key] = code
899
+
900
+ def getDeclarations(self):
901
+ return self.declaration_codes
902
+
903
+ def mayRecurse(self):
904
+ return False
905
+
906
+ def getConstantCode(self, constant, deep_check=False):
907
+ if deep_check and Options.is_debug:
908
+ assert not isMutable(constant)
909
+
910
+ return self.constant_accessor.getConstantCode(constant)
911
+
912
+ def getConstantsCount(self):
913
+ return self.constant_accessor.getConstantsCount()
914
+
915
+ def getModuleInitCodes(self):
916
+ return self.module_init_codes
917
+
918
+ def addModuleInitCode(self, code):
919
+ self.module_init_codes.append(code)
920
+
921
+ def addFunctionCreationInfo(self, creation_info):
922
+ self.function_table_entries.append(creation_info)
923
+
924
+ def getFunctionCreationInfos(self):
925
+ result = self.function_table_entries
926
+
927
+ # Release the memory once possible.
928
+ del self.function_table_entries
929
+ return result
930
+
931
+ @staticmethod
932
+ def getContextObjectName():
933
+ return None
934
+
935
+
936
+ class PythonFunctionContext(
937
+ FrameDeclarationsMixin,
938
+ TempMixin,
939
+ ReturnReleaseModeMixin,
940
+ ReturnValueNameMixin,
941
+ PythonChildContextBase,
942
+ ):
943
+ __slots__ = (
944
+ "function",
945
+ "frame_handle",
946
+ "variable_storage",
947
+ # FrameDeclarationsMixin
948
+ "frame_variables_stack",
949
+ "frame_type_descriptions",
950
+ "frame_variable_types",
951
+ "frames_used",
952
+ "frame_stack",
953
+ "locals_dict_names",
954
+ # TempMixin:
955
+ "tmp_names",
956
+ "labels",
957
+ "exception_escape",
958
+ "loop_continue",
959
+ "loop_break",
960
+ "true_target",
961
+ "false_target",
962
+ "keeper_variable_count",
963
+ "exception_keepers",
964
+ "preserver_variable_declaration",
965
+ "cleanup_names",
966
+ # ReturnReleaseModeMixin
967
+ "return_release_mode",
968
+ "return_exit",
969
+ # ReturnValueNameMixin
970
+ "return_name",
971
+ )
972
+
973
+ def __init__(self, parent, function):
974
+ PythonChildContextBase.__init__(self, parent=parent)
975
+
976
+ TempMixin.__init__(self)
977
+ FrameDeclarationsMixin.__init__(self)
978
+ ReturnReleaseModeMixin.__init__(self)
979
+ ReturnValueNameMixin.__init__(self)
980
+
981
+ self.function = function
982
+
983
+ self.setExceptionEscape("function_exception_exit")
984
+ self.setReturnTarget("function_return_exit")
985
+
986
+ self.frame_handle = None
987
+
988
+ self.variable_storage = self._makeVariableStorage()
989
+
990
+ def _makeVariableStorage(self):
991
+ return VariableStorage(heap_name=None)
992
+
993
+ def __repr__(self):
994
+ return "<%s for %s '%s'>" % (
995
+ self.__class__.__name__,
996
+ "function" if not self.function.isExpressionClassBodyBase() else "class",
997
+ self.function.getName(),
998
+ )
999
+
1000
+ def getFunction(self):
1001
+ return self.function
1002
+
1003
+ def getOwner(self):
1004
+ return self.function
1005
+
1006
+ def getEntryPoint(self):
1007
+ return self.function
1008
+
1009
+ def mayRecurse(self):
1010
+ # TODO: Determine this at compile time for enhanced optimizations.
1011
+ return True
1012
+
1013
+ def getCodeObjectHandle(self, code_object):
1014
+ return self.parent.getCodeObjectHandle(code_object)
1015
+
1016
+
1017
+ class PythonFunctionDirectContext(PythonFunctionContext):
1018
+ __slots__ = ()
1019
+
1020
+ @staticmethod
1021
+ def getContextObjectName():
1022
+ return None
1023
+
1024
+ @staticmethod
1025
+ def isForDirectCall():
1026
+ return True
1027
+
1028
+ @staticmethod
1029
+ def isForCreatedFunction():
1030
+ return False
1031
+
1032
+
1033
+ class PythonGeneratorObjectContext(PythonFunctionContext):
1034
+ __slots__ = ()
1035
+
1036
+ def _makeVariableStorage(self):
1037
+ return VariableStorage(heap_name="%s_heap" % self.getContextObjectName())
1038
+
1039
+ @staticmethod
1040
+ def isForDirectCall():
1041
+ return False
1042
+
1043
+ @staticmethod
1044
+ def isForCreatedFunction():
1045
+ return False
1046
+
1047
+ @staticmethod
1048
+ def getContextObjectName():
1049
+ return "generator"
1050
+
1051
+ def getGeneratorReturnValueName(self):
1052
+ if python_version >= 0x300:
1053
+ return self.allocateTempName("return_value", "PyObject *", unique=True)
1054
+ else:
1055
+ return self.allocateTempName("generator_return", "bool", unique=True)
1056
+
1057
+
1058
+ class PythonCoroutineObjectContext(PythonGeneratorObjectContext):
1059
+ __slots__ = ()
1060
+
1061
+ @staticmethod
1062
+ def getContextObjectName():
1063
+ return "coroutine"
1064
+
1065
+
1066
+ class PythonAsyncgenObjectContext(PythonGeneratorObjectContext):
1067
+ __slots__ = ()
1068
+
1069
+ @staticmethod
1070
+ def getContextObjectName():
1071
+ return "asyncgen"
1072
+
1073
+
1074
+ class PythonFunctionCreatedContext(PythonFunctionContext):
1075
+ __slots__ = ()
1076
+
1077
+ @staticmethod
1078
+ def getContextObjectName():
1079
+ return None
1080
+
1081
+ @staticmethod
1082
+ def isForDirectCall():
1083
+ return False
1084
+
1085
+ @staticmethod
1086
+ def isForCreatedFunction():
1087
+ return True
1088
+
1089
+
1090
+ class PythonFunctionOutlineContext(
1091
+ ReturnReleaseModeMixin, ReturnValueNameMixin, PythonChildContextBase
1092
+ ):
1093
+ __slots__ = (
1094
+ "outline",
1095
+ "variable_storage",
1096
+ # ReturnReleaseModeMixin
1097
+ "return_release_mode",
1098
+ "return_exit",
1099
+ # ReturnValueNameMixin
1100
+ "return_name",
1101
+ )
1102
+
1103
+ def __init__(self, parent, outline):
1104
+ PythonChildContextBase.__init__(self, parent=parent)
1105
+
1106
+ ReturnReleaseModeMixin.__init__(self)
1107
+ ReturnValueNameMixin.__init__(self)
1108
+
1109
+ self.outline = outline
1110
+
1111
+ self.variable_storage = parent.variable_storage
1112
+
1113
+ def getOwner(self):
1114
+ return self.outline
1115
+
1116
+ def getEntryPoint(self):
1117
+ return self.outline.getEntryPoint()
1118
+
1119
+ def allocateLabel(self, label):
1120
+ return self.parent.allocateLabel(label)
1121
+
1122
+ def allocateTempName(self, base_name, type_name="PyObject *", unique=False):
1123
+ return self.parent.allocateTempName(base_name, type_name, unique)
1124
+
1125
+ def skipTempName(self, base_name):
1126
+ return self.parent.skipTempName(base_name)
1127
+
1128
+ def hasTempName(self, base_name):
1129
+ return self.parent.hasTempName(base_name)
1130
+
1131
+ def getCleanupTempNames(self):
1132
+ return self.parent.getCleanupTempNames()
1133
+
1134
+ # TODO: Make this work on shared data instead.
1135
+ def addCleanupTempName(self, tmp_name):
1136
+ self.parent.addCleanupTempName(tmp_name)
1137
+
1138
+ def transferCleanupTempName(self, tmp_source, tmp_dest):
1139
+ self.parent.transferCleanupTempName(tmp_source, tmp_dest)
1140
+
1141
+ def removeCleanupTempName(self, tmp_name):
1142
+ self.parent.removeCleanupTempName(tmp_name)
1143
+
1144
+ def needsCleanup(self, tmp_name):
1145
+ return self.parent.needsCleanup(tmp_name)
1146
+
1147
+ def pushCleanupScope(self):
1148
+ return self.parent.pushCleanupScope()
1149
+
1150
+ def popCleanupScope(self):
1151
+ self.parent.popCleanupScope()
1152
+
1153
+ # TODO: Remove when isExperimental("new-code-objects") is becoming the
1154
+ # standard.
1155
+ def getCodeObjectHandle(self, code_object):
1156
+ return self.parent.getCodeObjectHandle(code_object)
1157
+
1158
+ def getExceptionEscape(self):
1159
+ return self.parent.getExceptionEscape()
1160
+
1161
+ def setExceptionEscape(self, label):
1162
+ return self.parent.setExceptionEscape(label)
1163
+
1164
+ def getLoopBreakTarget(self):
1165
+ return self.parent.getLoopBreakTarget()
1166
+
1167
+ def setLoopBreakTarget(self, label):
1168
+ return self.parent.setLoopBreakTarget(label)
1169
+
1170
+ def getLoopContinueTarget(self):
1171
+ return self.parent.getLoopContinueTarget()
1172
+
1173
+ def setLoopContinueTarget(self, label):
1174
+ return self.parent.setLoopContinueTarget(label)
1175
+
1176
+ def getTrueBranchTarget(self):
1177
+ return self.parent.getTrueBranchTarget()
1178
+
1179
+ def getFalseBranchTarget(self):
1180
+ return self.parent.getFalseBranchTarget()
1181
+
1182
+ def setTrueBranchTarget(self, label):
1183
+ self.parent.setTrueBranchTarget(label)
1184
+
1185
+ def setFalseBranchTarget(self, label):
1186
+ self.parent.setFalseBranchTarget(label)
1187
+
1188
+ def getFrameHandle(self):
1189
+ return self.parent.getFrameHandle()
1190
+
1191
+ def pushFrameHandle(self, code_object_access_code, is_light):
1192
+ return self.parent.pushFrameHandle(code_object_access_code, is_light)
1193
+
1194
+ def popFrameHandle(self):
1195
+ return self.parent.popFrameHandle()
1196
+
1197
+ def getExceptionKeeperVariables(self):
1198
+ return self.parent.getExceptionKeeperVariables()
1199
+
1200
+ def setExceptionKeeperVariables(self, keeper_vars):
1201
+ return self.parent.setExceptionKeeperVariables(keeper_vars)
1202
+
1203
+ def setVariableType(self, variable, variable_declaration):
1204
+ self.parent.setVariableType(variable, variable_declaration)
1205
+
1206
+ def getIntResName(self):
1207
+ return self.parent.getIntResName()
1208
+
1209
+ def getBoolResName(self):
1210
+ return self.parent.getBoolResName()
1211
+
1212
+ def allocateExceptionKeeperVariables(self):
1213
+ return self.parent.allocateExceptionKeeperVariables()
1214
+
1215
+ def isForDirectCall(self):
1216
+ return self.parent.isForDirectCall()
1217
+
1218
+ def mayRecurse(self):
1219
+ # The outline is only accessible via its parent.
1220
+ return self.parent.mayRecurse()
1221
+
1222
+ def getLocalsDictNames(self):
1223
+ return self.parent.getLocalsDictNames()
1224
+
1225
+ def addLocalsDictName(self, locals_dict_name):
1226
+ return self.parent.addLocalsDictName(locals_dict_name)
1227
+
1228
+ def addExceptionPreserverVariables(self, count):
1229
+ return self.parent.addExceptionPreserverVariables(count)
1230
+
1231
+ def getContextObjectName(self):
1232
+ return self.parent.getContextObjectName()
1233
+
1234
+
1235
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
1236
+ # integrates with CPython, but also works on its own.
1237
+ #
1238
+ # Licensed under the Apache License, Version 2.0 (the "License");
1239
+ # you may not use this file except in compliance with the License.
1240
+ # You may obtain a copy of the License at
1241
+ #
1242
+ # http://www.apache.org/licenses/LICENSE-2.0
1243
+ #
1244
+ # Unless required by applicable law or agreed to in writing, software
1245
+ # distributed under the License is distributed on an "AS IS" BASIS,
1246
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1247
+ # See the License for the specific language governing permissions and
1248
+ # limitations under the License.