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,1580 @@
1
+ // Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+ /* The main program for onefile bootstrap.
4
+ *
5
+ * It needs to unpack the attached files and and then loads and executes
6
+ * the compiled program as a separate process.
7
+ *
8
+ * spell-checker: ignore _wrename,SHFILEOPSTRUCTW,FOF_NOCONFIRMATION,FOF_NOERRORUI
9
+ * spell-checker: ignore HRESULT,HINSTANCE,lpUnkcaller,MAKELANGID,SUBLANG
10
+ *
11
+ */
12
+
13
+ #define _CRT_SECURE_NO_WARNINGS
14
+
15
+ #if !defined(_WIN32)
16
+ #define _POSIX_C_SOURCE 200809L
17
+ #ifndef _GNU_SOURCE
18
+ #define _GNU_SOURCE
19
+ #endif
20
+ #endif
21
+
22
+ #ifdef __NUITKA_NO_ASSERT__
23
+ #undef NDEBUG
24
+ #define NDEBUG
25
+ #endif
26
+
27
+ #if defined(_WIN32)
28
+ // Note: Keep this separate line, must be included before other Windows headers.
29
+ #include <windows.h>
30
+
31
+ // Other windows header files.
32
+ #include <psapi.h>
33
+
34
+ #endif
35
+
36
+ #include <assert.h>
37
+ #include <errno.h>
38
+ #include <signal.h>
39
+ #include <stdint.h>
40
+ #include <stdio.h>
41
+ #include <stdlib.h>
42
+ #include <string.h>
43
+ #include <time.h>
44
+ #include <wchar.h>
45
+
46
+ /* Type bool */
47
+ #ifndef __cplusplus
48
+ #include <stdbool.h>
49
+ #endif
50
+
51
+ #if !defined(_WIN32)
52
+ #include <dirent.h>
53
+ #include <signal.h>
54
+ #include <sys/stat.h>
55
+ #include <sys/types.h>
56
+ #include <sys/wait.h>
57
+ #include <unistd.h>
58
+ #endif
59
+
60
+ #ifndef __IDE_ONLY__
61
+ // Generated during build with optional defines.
62
+ #include "onefile_definitions.h"
63
+ #else
64
+ #define _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_CACHING
65
+ #define _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
66
+ #define _NUITKA_ONEFILE_TEMP_BOOL 0
67
+ #define _NUITKA_ONEFILE_CHILD_GRACE_TIME_INT 5000
68
+ #define _NUITKA_ONEFILE_TEMP_SPEC "{TEMP}/onefile_{PID}_{TIME}"
69
+
70
+ #define _NUITKA_AUTO_UPDATE_BOOL 1
71
+ #define _NUITKA_AUTO_UPDATE_DEBUG_BOOL 1
72
+ #define _NUITKA_AUTO_UPDATE_URL_SPEC "https://..."
73
+
74
+ #define _NUITKA_ATTACH_CONSOLE_WINDOW 1
75
+ #endif
76
+
77
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
78
+ // Header of zstd goes first, spellchecker: ignore ZSTDERRORLIB,ZSTDLIB
79
+ #define ZSTDERRORLIB_VISIBILITY
80
+ #define ZSTDLIB_VISIBILITY
81
+ #include "zstd.h"
82
+
83
+ // Should be in our inline copy, we include all C files into this one.
84
+ #include "common/error_private.c"
85
+ #include "common/fse_decompress.c"
86
+ #include "common/xxhash.c"
87
+ #include "common/zstd_common.c"
88
+ // Need to make sure this is last in common as it depends on the others.
89
+ #include "common/entropy_common.c"
90
+
91
+ // Decompression stuff.
92
+ #include "decompress/huf_decompress.c"
93
+ #include "decompress/zstd_ddict.c"
94
+ #include "decompress/zstd_decompress.c"
95
+ #include "decompress/zstd_decompress_block.c"
96
+ #endif
97
+
98
+ // Some handy macro definitions, e.g. unlikely and NUITKA_MAY_BE_UNUSED
99
+ #include "nuitka/hedley.h"
100
+ #define likely(x) HEDLEY_LIKELY(x)
101
+ #define unlikely(x) HEDLEY_UNLIKELY(x)
102
+ #ifdef __GNUC__
103
+ #define NUITKA_MAY_BE_UNUSED __attribute__((__unused__))
104
+ #else
105
+ #define NUITKA_MAY_BE_UNUSED
106
+ #endif
107
+
108
+ #include "HelpersChecksumTools.c"
109
+ #include "HelpersEnvironmentVariablesSystem.c"
110
+ #include "HelpersFilesystemPaths.c"
111
+ #include "HelpersSafeStrings.c"
112
+
113
+ #if defined(_WIN32) && (defined(_NUITKA_ATTACH_CONSOLE_WINDOW) || defined(_NUITKA_HIDE_CONSOLE_WINDOW))
114
+ #include "HelpersConsole.c"
115
+ #endif
116
+
117
+ // For tracing outputs if enabled at compile time.
118
+ #include "nuitka/tracing.h"
119
+
120
+ static void fatalError(char const *message) {
121
+ puts(message);
122
+ exit(2);
123
+ }
124
+
125
+ static void fatalIOError(char const *message, error_code_t error_code) {
126
+ printOSErrorMessage(message, error_code);
127
+ exit(2);
128
+ }
129
+
130
+ // Failure to expand the template for where to extract to.
131
+ static void fatalErrorTempFiles(void) {
132
+ fatalIOError("Error, couldn't unpack file to target path.", getLastErrorCode());
133
+ }
134
+
135
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
136
+ static void fatalErrorAttachedData(void) { fatalError("Error, couldn't decode attached data."); }
137
+ #endif
138
+
139
+ static void fatalErrorHeaderAttachedData(void) { fatalError("Error, couldn't find attached data header."); }
140
+
141
+ // Out of memory error.
142
+ #if !defined(_WIN32) || _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
143
+ static void fatalErrorMemory(void) { fatalError("Error, couldn't allocate memory."); }
144
+ #endif
145
+
146
+ // Could not launch child process.
147
+ static void fatalErrorChild(char const *message, error_code_t error_code) { fatalIOError(message, error_code); }
148
+
149
+ static void fatalErrorTempFileCreate(filename_char_t const *filename) {
150
+ fprintf(stderr, "Error, failed to open '" FILENAME_FORMAT_STR "' for writing.\n", filename);
151
+ exit(2);
152
+ }
153
+
154
+ static void fatalErrorSpec(filename_char_t const *spec) {
155
+ fprintf(stderr, "Error, couldn't runtime expand spec '" FILENAME_FORMAT_STR "'.\n", spec);
156
+ abort();
157
+ }
158
+
159
+ static FILE_HANDLE createFileForWritingChecked(filename_char_t const *filename) {
160
+ FILE_HANDLE result = createFileForWriting(filename);
161
+
162
+ if (result == FILE_HANDLE_NULL) {
163
+ fatalErrorTempFileCreate(filename);
164
+ }
165
+
166
+ return result;
167
+ }
168
+
169
+ static unsigned char const *payload_data = NULL;
170
+ static unsigned char const *payload_current = NULL;
171
+ static unsigned long long payload_size = 0;
172
+
173
+ #ifdef __APPLE__
174
+
175
+ #include <mach-o/getsect.h>
176
+ #include <mach-o/ldsyms.h>
177
+
178
+ static void initPayloadData2(void) {
179
+ const struct mach_header *header = &_mh_execute_header;
180
+
181
+ unsigned long section_size;
182
+
183
+ payload_data = getsectiondata(header, "payload", "payload", &section_size);
184
+ payload_current = payload_data;
185
+ payload_size = section_size;
186
+ }
187
+
188
+ static void closePayloadData(void) {}
189
+
190
+ #elif defined(_WIN32)
191
+
192
+ static void initPayloadData2(void) {
193
+ HRSRC windows_resource = FindResource(NULL, MAKEINTRESOURCE(27), RT_RCDATA);
194
+
195
+ payload_data = (const unsigned char *)LockResource(LoadResource(NULL, windows_resource));
196
+ payload_current = payload_data;
197
+
198
+ payload_size = SizeofResource(NULL, windows_resource);
199
+ }
200
+
201
+ // Note: it appears unlocking the resource is not actually foreseen.
202
+ static void closePayloadData(void) {}
203
+
204
+ #else
205
+
206
+ static void fatalErrorFindAttachedData(char const *erroring_function, error_code_t error_code) {
207
+ char buffer[1024] = "Error, couldn't find attached data:";
208
+ appendStringSafe(buffer, erroring_function, sizeof(buffer));
209
+
210
+ fatalIOError(buffer, error_code);
211
+ }
212
+
213
+ static struct MapFileToMemoryInfo exe_file_mapped;
214
+
215
+ static void initPayloadData2(void) {
216
+ exe_file_mapped = mapFileToMemory(getBinaryPath());
217
+
218
+ if (exe_file_mapped.error) {
219
+ fatalErrorFindAttachedData(exe_file_mapped.erroring_function, exe_file_mapped.error_code);
220
+ }
221
+
222
+ payload_data = exe_file_mapped.data;
223
+ payload_current = payload_data;
224
+ }
225
+
226
+ static void closePayloadData(void) { unmapFileFromMemory(&exe_file_mapped); }
227
+
228
+ #endif
229
+
230
+ static void initPayloadData(void) {
231
+ initPayloadData2();
232
+
233
+ #if !defined(__APPLE__) && !defined(_WIN32)
234
+ const off_t size_end_offset = exe_file_mapped.file_size;
235
+
236
+ NUITKA_PRINT_TIMING("ONEFILE: Determining payload start position.");
237
+
238
+ assert(sizeof(payload_size) == sizeof(unsigned long long));
239
+ memcpy(&payload_size, payload_data + size_end_offset - sizeof(payload_size), sizeof(payload_size));
240
+
241
+ unsigned long long start_pos = size_end_offset - sizeof(payload_size) - payload_size;
242
+
243
+ payload_current += start_pos;
244
+ payload_data += start_pos;
245
+ #endif
246
+ }
247
+
248
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
249
+
250
+ static ZSTD_DCtx *dest_ctx = NULL;
251
+ static ZSTD_inBuffer input = {NULL, 0, 0};
252
+ static ZSTD_outBuffer output = {NULL, 0, 0};
253
+
254
+ static void initZSTD(void) {
255
+ input.src = NULL;
256
+
257
+ size_t const output_buffer_size = ZSTD_DStreamOutSize();
258
+ output.dst = malloc(output_buffer_size);
259
+ if (output.dst == NULL) {
260
+ fatalErrorMemory();
261
+ }
262
+
263
+ dest_ctx = ZSTD_createDCtx();
264
+ if (dest_ctx == NULL) {
265
+ fatalErrorMemory();
266
+ }
267
+ }
268
+
269
+ static void releaseZSTD(void) {
270
+ ZSTD_freeDCtx(dest_ctx);
271
+
272
+ free(output.dst);
273
+ }
274
+
275
+ #endif
276
+
277
+ static void readChunk(void *buffer, size_t size) {
278
+ // printf("Reading %d\n", size);
279
+
280
+ memcpy(buffer, payload_current, size);
281
+ payload_current += size;
282
+ }
283
+
284
+ static void readPayloadChunk(void *buffer, size_t size) {
285
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1 && _NUITKA_ONEFILE_ARCHIVE_BOOL == 0
286
+ bool end_of_buffer = false;
287
+
288
+ // Loop until finished with asked chunk.
289
+ while (size > 0) {
290
+ size_t available = output.size - output.pos;
291
+
292
+ // printf("already available %d asking for %d\n", available, size);
293
+
294
+ // Consider available data.
295
+ if (available != 0) {
296
+ size_t use = available;
297
+ if (size < use) {
298
+ use = size;
299
+ }
300
+
301
+ memcpy(buffer, ((char *)output.dst) + output.pos, use);
302
+ buffer = (void *)(((char *)buffer) + use);
303
+ size -= use;
304
+
305
+ output.pos += use;
306
+
307
+ // Loop end check may exist when "size" is "use".
308
+ continue;
309
+ }
310
+
311
+ // Nothing available, make sure to make it available from existing input.
312
+ if (input.pos < input.size || end_of_buffer) {
313
+ output.pos = 0;
314
+ output.size = ZSTD_DStreamOutSize();
315
+
316
+ size_t const ret = ZSTD_decompressStream(dest_ctx, &output, &input);
317
+ // printf("return output %d %d\n", output.pos, output.size);
318
+ end_of_buffer = (output.pos == output.size);
319
+
320
+ if (ZSTD_isError(ret)) {
321
+ fatalErrorAttachedData();
322
+ }
323
+
324
+ output.size = output.pos;
325
+ output.pos = 0;
326
+
327
+ // printf("made output %d %d\n", output.pos, output.size);
328
+
329
+ // Above code gets a turn.
330
+ continue;
331
+ }
332
+
333
+ if (input.size != input.pos) {
334
+ fatalErrorAttachedData();
335
+ }
336
+ }
337
+ #else
338
+ readChunk(buffer, size);
339
+ #endif
340
+ }
341
+
342
+ #if _NUITKA_ONEFILE_TEMP_BOOL == 0
343
+ static uint32_t readPayloadChecksumValue(void) {
344
+ unsigned int result;
345
+ readPayloadChunk(&result, sizeof(unsigned int));
346
+
347
+ return (uint32_t)result;
348
+ }
349
+ #endif
350
+
351
+ #if !defined(_WIN32) && !defined(__MSYS__)
352
+ static unsigned char readPayloadFileFlagsValue(void) {
353
+ unsigned char result;
354
+ readPayloadChunk(&result, 1);
355
+
356
+ return result;
357
+ }
358
+ #endif
359
+
360
+ static unsigned long long readPayloadSizeValue(void) {
361
+ unsigned long long result;
362
+ readPayloadChunk(&result, sizeof(unsigned long long));
363
+
364
+ return result;
365
+ }
366
+
367
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1 && _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
368
+ static unsigned long long readArchiveFileSizeValue(void) {
369
+ unsigned long long result;
370
+ readPayloadChunk(&result, sizeof(unsigned int));
371
+
372
+ return result;
373
+ }
374
+ #endif
375
+
376
+ static filename_char_t readPayloadFilenameCharacter(void) {
377
+ filename_char_t result;
378
+
379
+ readPayloadChunk(&result, sizeof(filename_char_t));
380
+
381
+ return result;
382
+ }
383
+
384
+ static filename_char_t *readPayloadFilename(void) {
385
+ static filename_char_t buffer[1024];
386
+
387
+ filename_char_t *w = buffer;
388
+
389
+ for (;;) {
390
+ *w = readPayloadFilenameCharacter();
391
+
392
+ if (*w == 0) {
393
+ break;
394
+ }
395
+
396
+ w += 1;
397
+ }
398
+
399
+ return buffer;
400
+ }
401
+
402
+ static void writeContainedFile(FILE_HANDLE target_file, unsigned long long file_size) {
403
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
404
+
405
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 0
406
+ if (target_file != FILE_HANDLE_NULL) {
407
+ if (writeFileChunk(target_file, payload_current, file_size) == false) {
408
+ fatalErrorTempFiles();
409
+ }
410
+ }
411
+
412
+ payload_current += file_size;
413
+ #else
414
+ if (target_file != FILE_HANDLE_NULL) {
415
+
416
+ // Nothing available, make sure to make it available from existing input.
417
+ while (input.pos < input.size) {
418
+ // printf("available input %ld %ld\n", input.pos, input.size);
419
+
420
+ output.pos = 0;
421
+ output.size = ZSTD_DStreamOutSize();
422
+
423
+ size_t const ret = ZSTD_decompressStream(dest_ctx, &output, &input);
424
+ if (ZSTD_isError(ret)) {
425
+ fatalErrorAttachedData();
426
+ }
427
+
428
+ // printf("available output %ld %ld\n", output.pos, output.size);
429
+
430
+ if (writeFileChunk(target_file, (char const *)output.dst, output.pos) == false) {
431
+ fatalErrorTempFiles();
432
+ }
433
+
434
+ // printf("made output %ld %lld\n", output.pos, file_size);
435
+ file_size -= output.pos;
436
+ assert(file_size >= 0);
437
+ }
438
+
439
+ assert(file_size == 0);
440
+ }
441
+ #endif
442
+ #else
443
+ while (file_size > 0) {
444
+ static char chunk[32768];
445
+
446
+ long chunk_size;
447
+
448
+ // Doing min manually, as otherwise the compiler is confused from types.
449
+ if (file_size <= sizeof(chunk)) {
450
+ chunk_size = (long)file_size;
451
+ } else {
452
+ chunk_size = sizeof(chunk);
453
+ }
454
+
455
+ readPayloadChunk(chunk, chunk_size);
456
+
457
+ if (target_file != FILE_HANDLE_NULL) {
458
+ if (writeFileChunk(target_file, chunk, chunk_size) == false) {
459
+ fatalErrorTempFiles();
460
+ }
461
+ }
462
+
463
+ file_size -= chunk_size;
464
+ }
465
+
466
+ assert(file_size == 0);
467
+ #endif
468
+ }
469
+
470
+ // Zero means, not yet created, created unsuccessfully, terminated already.
471
+ #if defined(_WIN32)
472
+ HANDLE handle_process = 0;
473
+ #else
474
+ pid_t handle_process = 0;
475
+ #endif
476
+
477
+ static filename_char_t payload_path[4096] = {0};
478
+
479
+ #if _NUITKA_ONEFILE_TEMP_BOOL
480
+ static bool payload_created = false;
481
+ #endif
482
+
483
+ #define MAX_CREATED_DIRS 1024
484
+ static filename_char_t *created_dir_paths[MAX_CREATED_DIRS];
485
+ int created_dir_count = 0;
486
+
487
+ static bool createDirectory(filename_char_t const *path) {
488
+ bool bool_res;
489
+
490
+ #if defined(_WIN32)
491
+ if (created_dir_count == 0) {
492
+ filename_char_t home_path[4096];
493
+ wchar_t *pattern = L"{HOME}";
494
+
495
+ bool_res = expandTemplatePathFilename(home_path, pattern, sizeof(payload_path) / sizeof(filename_char_t));
496
+
497
+ if (unlikely(bool_res == false)) {
498
+ fatalErrorSpec(pattern);
499
+ }
500
+
501
+ created_dir_paths[created_dir_count] = wcsdup(home_path);
502
+ created_dir_count += 1;
503
+ }
504
+ #endif
505
+
506
+ for (int i = 0; i < created_dir_count; i++) {
507
+ if (strcmpFilename(path, created_dir_paths[i]) == 0) {
508
+ return true;
509
+ }
510
+ }
511
+
512
+ #if defined(_WIN32)
513
+ // On Windows, lets ignore drive letters.
514
+ if (strlenFilename(path) == 2 && path[1] == L':') {
515
+ return true;
516
+ }
517
+ #endif
518
+
519
+ #if defined(_WIN32)
520
+ bool_res = CreateDirectoryW(path, NULL);
521
+
522
+ if (bool_res == false && GetLastError() == 183) {
523
+ bool_res = true;
524
+ }
525
+ #else
526
+ if (access(path, F_OK) != -1) {
527
+ bool_res = true;
528
+ } else {
529
+ bool_res = mkdir(path, 0700) == 0;
530
+ }
531
+ #endif
532
+
533
+ if (bool_res != false && created_dir_count < MAX_CREATED_DIRS) {
534
+ created_dir_paths[created_dir_count] = strdupFilename(path);
535
+ created_dir_count += 1;
536
+ }
537
+
538
+ return bool_res;
539
+ }
540
+
541
+ static bool createContainingDirectory(filename_char_t const *path) {
542
+ filename_char_t dir_path[4096] = {0};
543
+ dir_path[0] = 0;
544
+
545
+ appendStringSafeFilename(dir_path, path, sizeof(dir_path) / sizeof(filename_char_t));
546
+
547
+ filename_char_t *w = dir_path + strlenFilename(dir_path);
548
+
549
+ while (w > dir_path) {
550
+ if (*w == FILENAME_SEP_CHAR) {
551
+ *w = 0;
552
+
553
+ bool res = createDirectory(dir_path);
554
+ if (res != false) {
555
+ return true;
556
+ }
557
+
558
+ createContainingDirectory(dir_path);
559
+ return createDirectory(dir_path);
560
+ }
561
+
562
+ w--;
563
+ }
564
+
565
+ return true;
566
+ }
567
+
568
+ #if _NUITKA_ONEFILE_TEMP_BOOL
569
+ #if defined(_WIN32)
570
+
571
+ static bool isDirectory(wchar_t const *path) {
572
+ DWORD dwAttrib = GetFileAttributesW(path);
573
+
574
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES && (dwAttrib & FILE_ATTRIBUTE_DIRECTORY) != 0);
575
+ }
576
+
577
+ static void _removeDirectory(wchar_t const *path) {
578
+ SHFILEOPSTRUCTW file_op_struct = {
579
+ NULL, FO_DELETE, payload_path, L"", FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT, false, 0, L""};
580
+ SHFileOperationW(&file_op_struct);
581
+ }
582
+
583
+ static void removeDirectory(wchar_t const *path) {
584
+ _removeDirectory(path);
585
+
586
+ for (int i = 0; i < 20; i++) {
587
+ if (!isDirectory(path)) {
588
+ break;
589
+ }
590
+
591
+ // Delay 0.1s before trying again.
592
+ Sleep(100);
593
+
594
+ _removeDirectory(path);
595
+ }
596
+ }
597
+
598
+ #else
599
+ static int removeDirectory(char const *path) {
600
+ DIR *d = opendir(path);
601
+ size_t path_len = strlen(path);
602
+
603
+ int r = -1;
604
+
605
+ if (d != NULL) {
606
+ struct dirent *p;
607
+
608
+ r = 0;
609
+ while (!r && (p = readdir(d))) {
610
+ int r2 = -1;
611
+
612
+ size_t len;
613
+
614
+ // Ignore special names
615
+ if (!strcmp(p->d_name, ".") || !strcmp(p->d_name, "..")) {
616
+ continue;
617
+ }
618
+
619
+ len = path_len + strlen(p->d_name) + 2;
620
+ char *buf = (char *)malloc(len);
621
+
622
+ if (buf == NULL) {
623
+ fatalErrorMemory();
624
+ }
625
+
626
+ struct stat statbuf;
627
+
628
+ snprintf(buf, len, "%s/%s", path, p->d_name);
629
+
630
+ if (!stat(buf, &statbuf)) {
631
+ if (S_ISDIR(statbuf.st_mode))
632
+ r2 = removeDirectory(buf);
633
+ else
634
+ r2 = unlink(buf);
635
+ }
636
+ free(buf);
637
+ r = r2;
638
+ }
639
+ closedir(d);
640
+ }
641
+
642
+ if (!r) {
643
+ rmdir(path);
644
+ }
645
+
646
+ return r;
647
+ }
648
+ #endif
649
+ #endif
650
+
651
+ #if !defined(_WIN32)
652
+ static int waitpid_retried(pid_t pid, int *status, bool async) {
653
+ int res;
654
+
655
+ for (;;) {
656
+ if (status != NULL) {
657
+ *status = 0;
658
+ }
659
+
660
+ res = waitpid(pid, status, async ? WNOHANG : 0);
661
+
662
+ if ((res == -1) && (errno == EINTR)) {
663
+ continue;
664
+ }
665
+
666
+ break;
667
+ }
668
+
669
+ return res;
670
+ }
671
+
672
+ static int waitpid_timeout(pid_t pid) {
673
+ // Check if already exited.
674
+ if (waitpid(pid, NULL, WNOHANG) == -1) {
675
+ return 0;
676
+ }
677
+
678
+ // Checking 5 times per second should be good enough.
679
+ long ns = 200000000L; // 0.2s
680
+
681
+ // Seconds, nanoseconds from our milliseconds value.
682
+ struct timespec timeout = {
683
+ _NUITKA_ONEFILE_CHILD_GRACE_TIME_INT / 1000,
684
+ (_NUITKA_ONEFILE_CHILD_GRACE_TIME_INT % 1000) * 1000,
685
+ };
686
+ struct timespec delay = {0, ns};
687
+ struct timespec elapsed = {0, 0};
688
+ struct timespec rem;
689
+
690
+ do {
691
+ // Only want to care about SIGCHLD here.
692
+ int res = waitpid_retried(pid, NULL, true);
693
+
694
+ if (unlikely(res < 0)) {
695
+ perror("waitpid");
696
+
697
+ return -1;
698
+ }
699
+
700
+ if (res != 0) {
701
+ break;
702
+ }
703
+
704
+ nanosleep(&delay, &rem);
705
+
706
+ elapsed.tv_sec += (elapsed.tv_nsec + ns) / 1000000000L;
707
+ elapsed.tv_nsec = (elapsed.tv_nsec + ns) % 1000000000L;
708
+ } while (elapsed.tv_sec < timeout.tv_sec ||
709
+ (elapsed.tv_sec == timeout.tv_sec && elapsed.tv_nsec < timeout.tv_nsec));
710
+
711
+ return 0;
712
+ }
713
+ #endif
714
+
715
+ static void cleanupChildProcess(bool send_sigint) {
716
+
717
+ // Cause KeyboardInterrupt in the child process.
718
+ if (handle_process != 0) {
719
+
720
+ if (send_sigint) {
721
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
722
+ puts("Sending CTRL-C to child\n");
723
+ #endif
724
+
725
+ #if defined(_WIN32)
726
+ AttachConsole(GetProcessId(handle_process));
727
+ SetConsoleCtrlHandler(NULL, TRUE);
728
+ BOOL res = GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0);
729
+ FreeConsole();
730
+
731
+ if (res == false) {
732
+ printOSErrorMessage("Failed to send CTRL-C to child process.", GetLastError());
733
+ // No error exit is done, we still want to cleanup when it does exit
734
+ }
735
+ #else
736
+ kill(handle_process, SIGINT);
737
+ #endif
738
+ }
739
+
740
+ // TODO: We ought to only need to wait if there is a need to cleanup
741
+ // files when we are on Windows, on Linux maybe exec can be used so
742
+ // this process to exist anymore if there is nothing to do.
743
+ #if _NUITKA_ONEFILE_TEMP_BOOL || 1
744
+ NUITKA_PRINT_TRACE("Waiting for child to exit.\n");
745
+ #if defined(_WIN32)
746
+ if (WaitForSingleObject(handle_process, _NUITKA_ONEFILE_CHILD_GRACE_TIME_INT) != 0) {
747
+ TerminateProcess(handle_process, 0);
748
+ }
749
+
750
+ CloseHandle(handle_process);
751
+ #else
752
+ waitpid_timeout(handle_process);
753
+ kill(handle_process, SIGKILL);
754
+ #endif
755
+ NUITKA_PRINT_TRACE("Child is exited.\n");
756
+ #endif
757
+ }
758
+
759
+ #if _NUITKA_ONEFILE_TEMP_BOOL
760
+ if (payload_created) {
761
+ #if _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
762
+ wprintf(L"Removing payload path '%lS'\n", payload_path);
763
+ #endif
764
+ removeDirectory(payload_path);
765
+ }
766
+ #endif
767
+ }
768
+
769
+ #if defined(_WIN32)
770
+ BOOL WINAPI ourConsoleCtrlHandler(DWORD fdwCtrlType) {
771
+ switch (fdwCtrlType) {
772
+ // Handle the CTRL-C signal.
773
+ case CTRL_C_EVENT:
774
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
775
+ puts("Ctrl-C event");
776
+ #endif
777
+ cleanupChildProcess(false);
778
+ return FALSE;
779
+
780
+ // CTRL-CLOSE: confirm that the user wants to exit.
781
+ case CTRL_CLOSE_EVENT:
782
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
783
+ puts("Ctrl-Close event");
784
+ #endif
785
+ cleanupChildProcess(false);
786
+ return FALSE;
787
+
788
+ // Pass other signals to the next handler.
789
+ case CTRL_BREAK_EVENT:
790
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
791
+ puts("Ctrl-Break event");
792
+ #endif
793
+ cleanupChildProcess(false);
794
+ return FALSE;
795
+
796
+ case CTRL_LOGOFF_EVENT:
797
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
798
+ puts("Ctrl-Logoff event");
799
+ #endif
800
+ cleanupChildProcess(false);
801
+ return FALSE;
802
+
803
+ case CTRL_SHUTDOWN_EVENT:
804
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
805
+ puts("Ctrl-Shutdown event");
806
+ #endif
807
+ cleanupChildProcess(false);
808
+ return FALSE;
809
+
810
+ default:
811
+ return FALSE;
812
+ }
813
+ }
814
+
815
+ #else
816
+ void ourConsoleCtrlHandler(int sig) { cleanupChildProcess(false); }
817
+ #endif
818
+
819
+ #if _NUITKA_AUTO_UPDATE_BOOL && !defined(__IDE_ONLY__)
820
+ #include "nuitka_onefile_auto_updater.h"
821
+ #endif
822
+
823
+ #if _NUITKA_AUTO_UPDATE_BOOL
824
+ extern bool exe_file_updatable;
825
+ #endif
826
+
827
+ #ifdef _NUITKA_ONEFILE_SPLASH_SCREEN
828
+ #ifdef __cplusplus
829
+ extern "C" {
830
+ #endif
831
+ extern void initSplashScreen(void);
832
+ extern bool checkSplashScreen(void);
833
+ #ifdef __cplusplus
834
+ }
835
+ #endif
836
+ #endif
837
+
838
+ #ifdef _WIN32
839
+
840
+ static bool containsWStringAny(wchar_t const *source, wchar_t const *characters) {
841
+ while (*characters) {
842
+ if (wcschr(source, *characters) != NULL) {
843
+ return true;
844
+ }
845
+
846
+ characters++;
847
+ }
848
+
849
+ return false;
850
+ }
851
+
852
+ static wchar_t *getCommandLineForChildProcess(void) {
853
+
854
+ wchar_t *orig_command_line = GetCommandLineW();
855
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
856
+ wprintf(L"Command line was '%ls'\n", orig_command_line);
857
+ #endif
858
+
859
+ int argc;
860
+ LPWSTR *argv = CommandLineToArgvW(orig_command_line, &argc);
861
+ assert(argv != NULL);
862
+ assert(argc > 0);
863
+
864
+ static wchar_t result[32768];
865
+ result[0] = 0;
866
+
867
+ // Assigning constant value to there, strongly hoping nothing ever modifies
868
+ // the contents.
869
+ argv[0] = (wchar_t *)getBinaryPath();
870
+
871
+ for (int i = 0; i < argc; i++) {
872
+ if (i >= 1) {
873
+ appendWCharSafeW(result, L' ', sizeof(result) / sizeof(wchar_t));
874
+ }
875
+
876
+ bool needs_quote = containsWStringAny(argv[i], L" \t\n\v\"");
877
+
878
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
879
+ wprintf(L"Command line arg %d was '%ls' needs quoting %ls\n", i, argv[i], needs_quote ? L"yes" : L"no");
880
+ #endif
881
+
882
+ if (needs_quote) {
883
+ appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
884
+
885
+ wchar_t const *current = argv[i];
886
+
887
+ for (;;) {
888
+ int backslash_count = 0;
889
+
890
+ while (*current == L'\\') {
891
+ current++;
892
+ backslash_count += 1;
893
+ }
894
+
895
+ if (*current == 0) {
896
+ for (int j = 0; j < backslash_count * 2; j++) {
897
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
898
+ }
899
+
900
+ break;
901
+ } else if (*current == L'"') {
902
+ for (int j = 0; j < backslash_count * 2 + 1; j++) {
903
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
904
+ }
905
+ } else {
906
+ for (int j = 0; j < backslash_count; j++) {
907
+ appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
908
+ }
909
+ }
910
+
911
+ appendWCharSafeW(result, *current, sizeof(result) / sizeof(wchar_t));
912
+
913
+ current++;
914
+ }
915
+
916
+ appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
917
+
918
+ } else {
919
+ appendWStringSafeW(result, argv[i], sizeof(result) / sizeof(wchar_t));
920
+ }
921
+ }
922
+
923
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
924
+ wprintf(L"Command line composed to '%ls'\n", result);
925
+ #endif
926
+ return result;
927
+ }
928
+ #endif
929
+
930
+ #if _NUITKA_ONEFILE_DLL_MODE
931
+ static int runPythonCodeDLL(filename_char_t const *dll_filename, int argc, native_command_line_argument_t **argv) {
932
+
933
+ #if defined(_WIN32)
934
+ DLL_DIRECTORY_COOKIE dll_dir_cookie = AddDllDirectory(payload_path);
935
+ assert(dll_dir_cookie != 0);
936
+
937
+ HINSTANCE hGetProcIDDLL = LoadLibraryExW(dll_filename, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
938
+
939
+ if (!hGetProcIDDLL) {
940
+ fatalIOError("Error, load DLL.", getLastErrorCode());
941
+
942
+ return EXIT_FAILURE;
943
+ }
944
+
945
+ typedef int(__stdcall * nuitka_dll_function_ptr)(int, wchar_t **);
946
+
947
+ nuitka_dll_function_ptr nuitka_dll_function = (nuitka_dll_function_ptr)GetProcAddress(hGetProcIDDLL, "run_code");
948
+
949
+ if (nuitka_dll_function == NULL) {
950
+ fatalError("Error, DLL entry point not found.");
951
+
952
+ return EXIT_FAILURE;
953
+ }
954
+
955
+ return (*nuitka_dll_function)(argc, argv);
956
+ #else
957
+ typedef int (*nuitka_dll_function_ptr)(int, native_command_line_argument_t **);
958
+
959
+ void *handle = dlopen(dll_filename, RTLD_LOCAL | RTLD_NOW);
960
+
961
+ if (unlikely(handle == NULL)) {
962
+ const char *error = dlerror();
963
+
964
+ if (unlikely(error == NULL)) {
965
+ error = "unknown dlopen() error";
966
+ }
967
+
968
+ fatalError(error);
969
+ return EXIT_FAILURE;
970
+ }
971
+
972
+ nuitka_dll_function_ptr nuitka_dll_function = (nuitka_dll_function_ptr)dlsym(handle, "run_code");
973
+ assert(nuitka_dll_function);
974
+
975
+ return (*nuitka_dll_function)(argc, argv);
976
+ #endif
977
+ }
978
+ #endif
979
+
980
+ #ifdef _NUITKA_WINMAIN_ENTRY_POINT
981
+ int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpCmdLine, int nCmdShow) {
982
+ int argc = __argc;
983
+ wchar_t **argv = __wargv;
984
+ #else
985
+ #if defined(_WIN32)
986
+ #ifdef _NUITKA_WINSVC_BOOL
987
+ SERVICE_STATUS_HANDLE svcStatusHandle;
988
+ SERVICE_STATUS svcStatus;
989
+ int startup(int, wchar_t**);
990
+
991
+ DWORD PrintError(const wchar_t* fnName)
992
+ {
993
+ LPWSTR errorMessage = NULL;
994
+ DWORD errorCode = GetLastError();
995
+ FormatMessageW(
996
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
997
+ FORMAT_MESSAGE_FROM_SYSTEM |
998
+ FORMAT_MESSAGE_IGNORE_INSERTS,
999
+ NULL,
1000
+ errorCode,
1001
+ MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),
1002
+ (LPWSTR)&errorMessage,
1003
+ 0, NULL);
1004
+ wprintf(L"%ls failed (%d): %ls", fnName, errorCode, errorMessage);
1005
+ LocalFree(errorMessage);
1006
+ return errorCode;
1007
+ }
1008
+
1009
+ DWORD SvcInstall(LPCWSTR cmdLine)
1010
+ {
1011
+ SC_HANDLE scManagerHandle = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS);
1012
+ if (NULL == scManagerHandle) {
1013
+ return PrintError(L"OpenSCManager");
1014
+ }
1015
+ SC_HANDLE serviceHandle = CreateServiceW(
1016
+ scManagerHandle,
1017
+ _NUITKA_WINSVC_NAME_WIDE_STRING,
1018
+ _NUITKA_WINSVC_DISPLAY_NAME_WIDE_STRING,
1019
+ SERVICE_ALL_ACCESS,
1020
+ SERVICE_WIN32_OWN_PROCESS,
1021
+ SERVICE_AUTO_START,
1022
+ SERVICE_ERROR_NORMAL,
1023
+ cmdLine,
1024
+ NULL, NULL, NULL, NULL, NULL);
1025
+ if (NULL == serviceHandle) {
1026
+ CloseServiceHandle(scManagerHandle);
1027
+ return PrintError(L"CreateService");
1028
+ }
1029
+ else wprintf(L"Service installed successfully\n");
1030
+ #ifdef _NUITKA_WINSVC_DESCRIPTION_WIDE_STRING
1031
+ SERVICE_DESCRIPTIONW serviceDescription;
1032
+ serviceDescription.lpDescription = _NUITKA_WINSVC_DESCRIPTION_WIDE_STRING;
1033
+ if (0 == ChangeServiceConfig2W(serviceHandle, SERVICE_CONFIG_DESCRIPTION, &serviceDescription)) {
1034
+ return PrintError(L"ChangeServiceConfig2W");
1035
+ }
1036
+ #endif
1037
+ CloseServiceHandle(serviceHandle);
1038
+ CloseServiceHandle(scManagerHandle);
1039
+ return NO_ERROR;
1040
+ }
1041
+
1042
+ DWORD SvcUninstall()
1043
+ {
1044
+ SC_HANDLE scManagerHandle = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS);
1045
+ if (NULL == scManagerHandle) {
1046
+ return PrintError(L"OpenSCManager");
1047
+ }
1048
+ SC_HANDLE serviceHandle = OpenServiceW(scManagerHandle, _NUITKA_WINSVC_NAME_WIDE_STRING, DELETE);
1049
+ if (serviceHandle == NULL) {
1050
+ CloseServiceHandle(scManagerHandle);
1051
+ return PrintError(L"OpenService");
1052
+ }
1053
+ if (!DeleteService(serviceHandle)) {
1054
+ CloseServiceHandle(serviceHandle);
1055
+ return PrintError(L"DeleteService");
1056
+ }
1057
+ else wprintf(L"Service uninstalled successfully\n");
1058
+ CloseServiceHandle(serviceHandle);
1059
+ CloseServiceHandle(scManagerHandle);
1060
+ return NO_ERROR;
1061
+ }
1062
+
1063
+ VOID ReportSvcStatus(DWORD currentState, DWORD win32ExitCode, DWORD waitHint)
1064
+ {
1065
+ static DWORD checkPoint = 1;
1066
+ svcStatus.dwCurrentState = currentState;
1067
+ svcStatus.dwWin32ExitCode = win32ExitCode;
1068
+ svcStatus.dwWaitHint = waitHint;
1069
+
1070
+ if (currentState == SERVICE_START_PENDING)
1071
+ svcStatus.dwControlsAccepted = 0;
1072
+ else svcStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
1073
+
1074
+ if ((currentState == SERVICE_RUNNING) ||
1075
+ (currentState == SERVICE_STOPPED))
1076
+ svcStatus.dwCheckPoint = 0;
1077
+ else svcStatus.dwCheckPoint = checkPoint++;
1078
+ SetServiceStatus(svcStatusHandle, &svcStatus);
1079
+ }
1080
+
1081
+ VOID WINAPI SvcCtrlHandler(DWORD ctrl)
1082
+ {
1083
+ switch (ctrl) {
1084
+ case SERVICE_CONTROL_STOP:
1085
+ ReportSvcStatus(SERVICE_STOP_PENDING, NO_ERROR, 0);
1086
+ cleanupChildProcess(true);
1087
+ ReportSvcStatus(svcStatus.dwCurrentState, NO_ERROR, 0);
1088
+ return;
1089
+ case SERVICE_CONTROL_INTERROGATE:
1090
+ break;
1091
+ default:
1092
+ break;
1093
+ }
1094
+ }
1095
+
1096
+ VOID WINAPI SvcMain(DWORD argc, LPSTR* argv)
1097
+ {
1098
+ svcStatusHandle = RegisterServiceCtrlHandlerW(_NUITKA_WINSVC_NAME_WIDE_STRING, SvcCtrlHandler);
1099
+ if (!svcStatusHandle) {
1100
+ return;
1101
+ }
1102
+ svcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
1103
+ svcStatus.dwServiceSpecificExitCode = 0;
1104
+ ReportSvcStatus(SERVICE_START_PENDING, NO_ERROR, 100);
1105
+
1106
+ ReportSvcStatus(SERVICE_RUNNING, NO_ERROR, 0);
1107
+ startup(argc, (wchar_t **)argv);
1108
+ ReportSvcStatus(SERVICE_STOPPED, NO_ERROR, 0);
1109
+ }
1110
+
1111
+ int wmain(int argc, wchar_t** argv)
1112
+ {
1113
+ if (argc == 2) {
1114
+ if (wcscmp(argv[1], _NUITKA_WINSVC_INSTALL_WIDE_STRING) == 0) {
1115
+ wchar_t imagePath[MAX_PATH];
1116
+ if (0 == GetModuleFileNameW(NULL, imagePath, MAX_PATH)) {
1117
+ return PrintError(L"GetModuleFileNameW");
1118
+ }
1119
+ #ifdef _NUITKA_WINSVC_CMDLINE_WIDE_STRING
1120
+ wchar_t cmdLine[2 << 12];
1121
+ swprintf_s(cmdLine, _countof(cmdLine), L"%s %s", imagePath, _NUITKA_WINSVC_CMDLINE_WIDE_STRING);
1122
+ return SvcInstall(cmdLine);
1123
+ #else
1124
+ return SvcInstall(imagePath);
1125
+ #endif
1126
+ }
1127
+ else if (wcscmp(argv[1], _NUITKA_WINSVC_UNINSTALL_WIDE_STRING) == 0) {
1128
+ return SvcUninstall();
1129
+ }
1130
+ }
1131
+
1132
+ SERVICE_TABLE_ENTRYW serviceTable[] = {
1133
+ { (LPWSTR)_NUITKA_WINSVC_NAME_WIDE_STRING, (LPSERVICE_MAIN_FUNCTIONW)SvcMain },
1134
+ { NULL, NULL }
1135
+ };
1136
+ if (!StartServiceCtrlDispatcherW(serviceTable)) {
1137
+ return startup(argc, argv);
1138
+ }
1139
+ }
1140
+
1141
+ int startup(int argc, wchar_t **argv) {
1142
+ #else
1143
+ int wmain(int argc, wchar_t **argv) {
1144
+ #if defined(_NUITKA_HIDE_CONSOLE_WINDOW)
1145
+ hideConsoleIfSpawned();
1146
+ #endif
1147
+ #endif
1148
+ #else
1149
+ int main(int argc, char **argv) {
1150
+ #endif
1151
+ #endif
1152
+ // Attach to the parent console respecting redirection only, otherwise we cannot
1153
+ // even output traces.
1154
+ #if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
1155
+ inheritAttachedConsole();
1156
+ #endif
1157
+
1158
+ NUITKA_PRINT_TIMING("ONEFILE: Entered main().");
1159
+
1160
+ filename_char_t const *pattern = FILENAME_EMPTY_STR _NUITKA_ONEFILE_TEMP_SPEC;
1161
+ bool bool_res = expandTemplatePathFilename(payload_path, pattern, sizeof(payload_path) / sizeof(filename_char_t));
1162
+
1163
+ // _putws(payload_path);
1164
+
1165
+ #if _NUITKA_ONEFILE_DLL_MODE
1166
+ environment_char_t const *process_role = getEnvironmentVariable("NUITKA_ONEFILE_PARENT");
1167
+
1168
+ // Empty strings do not count.
1169
+ if (process_role != NULL && *process_role == 0) {
1170
+ process_role = NULL;
1171
+ }
1172
+
1173
+ #if defined(_WIN32)
1174
+ if (process_role != NULL) {
1175
+ errno = 0;
1176
+ wchar_t *endptr = NULL;
1177
+ unsigned long onefile_parent_pid = wcstoul(process_role, &endptr, 10);
1178
+
1179
+ if (errno == 0 && *endptr == 0) {
1180
+ HANDLE parent_process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, onefile_parent_pid);
1181
+
1182
+ if (parent_process != NULL) {
1183
+ filename_char_t onefile_parent_path[2048];
1184
+
1185
+ DWORD len = GetModuleFileNameExW(parent_process, NULL, onefile_parent_path,
1186
+ sizeof(onefile_parent_path) / sizeof(onefile_parent_path[0]));
1187
+
1188
+ if (len == 0) {
1189
+ process_role = NULL;
1190
+ } else {
1191
+ resolveFileSymbolicLink(onefile_parent_path, onefile_parent_path,
1192
+ sizeof(onefile_parent_path) / sizeof(wchar_t), true);
1193
+ makeShortDirFilename(onefile_parent_path, sizeof(onefile_parent_path) / sizeof(wchar_t));
1194
+ }
1195
+
1196
+ if (strcmpFilename(onefile_parent_path, getBinaryFilenameWideChars(true)) != 0) {
1197
+ process_role = NULL;
1198
+ }
1199
+ } else {
1200
+ process_role = NULL;
1201
+ }
1202
+
1203
+ CloseHandle(parent_process);
1204
+ } else {
1205
+ process_role = NULL;
1206
+ }
1207
+ }
1208
+ #endif
1209
+
1210
+ #else
1211
+ environment_char_t const *process_role = NULL;
1212
+ #endif
1213
+
1214
+ // IF we are the bootstrasp binary, show the splash screen.
1215
+ #if defined(_NUITKA_ONEFILE_SPLASH_SCREEN) && _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1216
+ if (process_role == NULL) {
1217
+ initSplashScreen();
1218
+ }
1219
+ #endif
1220
+
1221
+ NUITKA_PRINT_TIMING("ONEFILE: Unpacking payload.");
1222
+ initPayloadData();
1223
+
1224
+ static filename_char_t first_filename[1024] = {0};
1225
+
1226
+ if (unlikely(bool_res == false)) {
1227
+ fatalErrorSpec(pattern);
1228
+ }
1229
+
1230
+ #if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
1231
+ wprintf(L"payload path: '%lS'\n", payload_path);
1232
+ #endif
1233
+
1234
+ #if defined(_WIN32)
1235
+ bool_res = SetConsoleCtrlHandler(ourConsoleCtrlHandler, true);
1236
+ if (bool_res == false) {
1237
+ fatalError("Error, failed to register signal handler.");
1238
+ }
1239
+ #else
1240
+ signal(SIGINT, ourConsoleCtrlHandler);
1241
+ signal(SIGQUIT, ourConsoleCtrlHandler);
1242
+ signal(SIGTERM, ourConsoleCtrlHandler);
1243
+ #endif
1244
+
1245
+ #if _NUITKA_AUTO_UPDATE_BOOL
1246
+ checkAutoUpdates();
1247
+ #endif
1248
+
1249
+ NUITKA_PRINT_TIMING("ONEFILE: Checking header for compression.");
1250
+
1251
+ char header[3];
1252
+ readChunk(&header, sizeof(header));
1253
+
1254
+ if (header[0] != 'K' || header[1] != 'A') {
1255
+ fatalErrorHeaderAttachedData();
1256
+ }
1257
+
1258
+ NUITKA_PRINT_TIMING("ONEFILE: Header is OK.");
1259
+
1260
+ // The 'X' stands for no compression, 'Y' is compressed, handle that.
1261
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1262
+ if (header[2] != 'Y') {
1263
+ fatalErrorHeaderAttachedData();
1264
+ }
1265
+ initZSTD();
1266
+
1267
+ input.src = payload_current;
1268
+ input.pos = 0;
1269
+
1270
+ // TODO: Ought to assert that this doesn't truncate anything.
1271
+ input.size = (size_t)payload_size;
1272
+
1273
+ assert(payload_size > 0);
1274
+ #else
1275
+ if (header[2] != 'X') {
1276
+ fatalErrorHeaderAttachedData();
1277
+ }
1278
+ #endif
1279
+
1280
+ NUITKA_PRINT_TIMING("ONEFILE: Entering decompression.");
1281
+
1282
+ #if _NUITKA_ONEFILE_TEMP_BOOL
1283
+ payload_created = true;
1284
+ #endif
1285
+
1286
+ for (;;) {
1287
+ filename_char_t *filename = readPayloadFilename();
1288
+
1289
+ // printf("Filename: " FILENAME_FORMAT_STR "\n", filename);
1290
+
1291
+ // Detect EOF from empty filename.
1292
+ if (filename[0] == 0) {
1293
+ break;
1294
+ }
1295
+
1296
+ static filename_char_t target_path[4096] = {0};
1297
+ target_path[0] = 0;
1298
+
1299
+ appendStringSafeFilename(target_path, payload_path, sizeof(target_path) / sizeof(filename_char_t));
1300
+ appendCharSafeFilename(target_path, FILENAME_SEP_CHAR, sizeof(target_path) / sizeof(filename_char_t));
1301
+ appendStringSafeFilename(target_path, filename, sizeof(target_path) / sizeof(filename_char_t));
1302
+
1303
+ if (first_filename[0] == 0) {
1304
+ appendStringSafeFilename(first_filename, target_path, sizeof(target_path) / sizeof(filename_char_t));
1305
+
1306
+ // Run the Python code DLL if it's already unpacked.
1307
+ #if _NUITKA_ONEFILE_DLL_MODE
1308
+ if (process_role != NULL) {
1309
+ return runPythonCodeDLL(first_filename, argc, argv);
1310
+ }
1311
+ #endif
1312
+ }
1313
+
1314
+ #if !defined(_WIN32) && !defined(__MSYS__)
1315
+ unsigned char file_flags = readPayloadFileFlagsValue();
1316
+ #endif
1317
+
1318
+ #if !defined(_WIN32) && !defined(__MSYS__)
1319
+ if (file_flags & 2) {
1320
+ filename_char_t *link_target_path = readPayloadFilename();
1321
+
1322
+ // printf("Filename: " FILENAME_FORMAT_STR " symlink to " FILENAME_FORMAT_STR "\n", target_path,
1323
+ // link_target_path);
1324
+
1325
+ createContainingDirectory(target_path);
1326
+
1327
+ unlink(target_path);
1328
+ if (symlink(link_target_path, target_path) != 0) {
1329
+ fatalErrorTempFileCreate(target_path);
1330
+ }
1331
+
1332
+ continue;
1333
+ }
1334
+ #endif
1335
+ // _putws(target_path);
1336
+ unsigned long long file_size = readPayloadSizeValue();
1337
+
1338
+ bool needs_write = true;
1339
+
1340
+ #if _NUITKA_ONEFILE_TEMP_BOOL == 0
1341
+ uint32_t contained_file_checksum = readPayloadChecksumValue();
1342
+ uint32_t existing_file_checksum = getFileCRC32(target_path);
1343
+
1344
+ if (contained_file_checksum == existing_file_checksum) {
1345
+ needs_write = false;
1346
+
1347
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_CACHING
1348
+ fprintf(stderr, "CACHE HIT for '" FILENAME_FORMAT_STR "'.\n", target_path);
1349
+ #endif
1350
+ } else {
1351
+ #ifdef _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_CACHING
1352
+ fprintf(stderr, "CACHE MISS for '" FILENAME_FORMAT_STR "'.\n", target_path);
1353
+ #endif
1354
+ }
1355
+ #endif
1356
+
1357
+ #if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
1358
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1359
+ uint32_t contained_archive_file_size = readArchiveFileSizeValue();
1360
+
1361
+ input.src = payload_current;
1362
+ input.pos = 0;
1363
+ input.size = contained_archive_file_size;
1364
+
1365
+ output.pos = 0;
1366
+ output.size = 0;
1367
+
1368
+ payload_current += contained_archive_file_size;
1369
+ #endif
1370
+ #endif
1371
+ FILE_HANDLE target_file = FILE_HANDLE_NULL;
1372
+
1373
+ if (needs_write) {
1374
+ createContainingDirectory(target_path);
1375
+ target_file = createFileForWritingChecked(target_path);
1376
+ }
1377
+
1378
+ writeContainedFile(target_file, file_size);
1379
+
1380
+ #if !defined(_WIN32) && !defined(__MSYS__)
1381
+ if ((file_flags & 1) && (target_file != FILE_HANDLE_NULL)) {
1382
+ int fd = fileno(target_file);
1383
+
1384
+ struct stat stat_buffer;
1385
+ int res = fstat(fd, &stat_buffer);
1386
+
1387
+ if (res == -1) {
1388
+ printOSErrorMessage("fstat", errno);
1389
+ }
1390
+
1391
+ // User shall be able to execute if at least.
1392
+ stat_buffer.st_mode |= S_IXUSR;
1393
+
1394
+ // Follow read flags for group, others according to umask.
1395
+ if ((stat_buffer.st_mode & S_IRGRP) != 0) {
1396
+ stat_buffer.st_mode |= S_IXOTH;
1397
+ }
1398
+
1399
+ if ((stat_buffer.st_mode & S_IRGRP) != 0) {
1400
+ stat_buffer.st_mode |= S_IXOTH;
1401
+ }
1402
+
1403
+ res = fchmod(fd, stat_buffer.st_mode);
1404
+
1405
+ if (res == -1) {
1406
+ printOSErrorMessage("fchmod", errno);
1407
+ }
1408
+ }
1409
+ #endif
1410
+
1411
+ if (target_file != FILE_HANDLE_NULL) {
1412
+ if (closeFile(target_file) == false) {
1413
+ fatalErrorTempFiles();
1414
+ }
1415
+ }
1416
+ }
1417
+
1418
+ NUITKA_PRINT_TIMING("ONEFILE: Finishing decompression, cleanup payload.");
1419
+
1420
+ closePayloadData();
1421
+
1422
+ #if _NUITKA_AUTO_UPDATE_BOOL
1423
+ exe_file_updatable = true;
1424
+ #endif
1425
+
1426
+ #if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
1427
+ releaseZSTD();
1428
+ #endif
1429
+
1430
+ // Pass our pid by value to the child. If we exit for some reason, re-parenting
1431
+ // might change it by the time the child looks at its parent.
1432
+ if (process_role == NULL) {
1433
+ #if defined(_WIN32)
1434
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", GetCurrentProcessId());
1435
+ #else
1436
+ setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", (long)getpid());
1437
+ #endif
1438
+ }
1439
+
1440
+ #if defined(_WIN32)
1441
+ filename_char_t const *binary_filename = getBinaryFilenameWideChars(false);
1442
+ #else
1443
+ filename_char_t const *binary_filename = getBinaryFilenameHostEncoded(false);
1444
+ #endif
1445
+ setEnvironmentVariable("NUITKA_ONEFILE_DIRECTORY", stripBaseFilename(binary_filename));
1446
+
1447
+ setEnvironmentVariable("NUITKA_ORIGINAL_ARGV0", argv[0]);
1448
+
1449
+ NUITKA_PRINT_TIMING("ONEFILE: Preparing forking of slave process.");
1450
+
1451
+ #if _NUITKA_ONEFILE_DLL_MODE
1452
+ filename_char_t const *fork_binary = getBinaryPath();
1453
+ #else
1454
+ filename_char_t const *fork_binary = first_filename;
1455
+ #endif
1456
+
1457
+ #if defined(_WIN32)
1458
+
1459
+ // spell-checker: ignore STARTUPINFOW, STARTF_USESTDHANDLES
1460
+ STARTUPINFOW si;
1461
+ memset(&si, 0, sizeof(si));
1462
+ si.dwFlags = STARTF_USESTDHANDLES;
1463
+ si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
1464
+ si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
1465
+ si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
1466
+ si.cb = sizeof(si);
1467
+
1468
+ PROCESS_INFORMATION pi;
1469
+
1470
+ bool_res = CreateProcessW(fork_binary,
1471
+ getCommandLineForChildProcess(), // command line
1472
+ NULL, // process attributes
1473
+ NULL, // thread attributes
1474
+ TRUE, // inherit handles
1475
+ NORMAL_PRIORITY_CLASS, // creation flags
1476
+ NULL, NULL, &si, &pi);
1477
+
1478
+ NUITKA_PRINT_TIMING("ONEFILE: Started slave process.");
1479
+
1480
+ if (bool_res == false) {
1481
+ fatalErrorChild("Error, couldn't launch child", GetLastError());
1482
+ }
1483
+
1484
+ CloseHandle(pi.hThread);
1485
+ handle_process = pi.hProcess;
1486
+
1487
+ DWORD exit_code = 0;
1488
+
1489
+ #if _NUITKA_ONEFILE_SPLASH_SCREEN
1490
+ DWORD wait_time = 50;
1491
+ #else
1492
+ DWORD wait_time = INFINITE;
1493
+ #endif
1494
+
1495
+ // Loop with splash screen, otherwise this will be only once.
1496
+ while (handle_process != 0) {
1497
+ WaitForSingleObject(handle_process, wait_time);
1498
+
1499
+ if (!GetExitCodeProcess(handle_process, &exit_code)) {
1500
+ exit_code = 1;
1501
+ }
1502
+
1503
+ #if _NUITKA_ONEFILE_SPLASH_SCREEN
1504
+ if (process_role == NULL) {
1505
+ if (exit_code == STILL_ACTIVE) {
1506
+ bool done = checkSplashScreen();
1507
+
1508
+ // Stop checking splash screen, can increase timeout.
1509
+ if (done) {
1510
+ wait_time = INFINITE;
1511
+ }
1512
+
1513
+ continue;
1514
+ }
1515
+ }
1516
+ #endif
1517
+ CloseHandle(handle_process);
1518
+
1519
+ handle_process = 0;
1520
+ }
1521
+
1522
+ cleanupChildProcess(false);
1523
+ #else
1524
+ pid_t pid = fork();
1525
+ int exit_code;
1526
+
1527
+ if (pid < 0) {
1528
+ int error_code = errno;
1529
+
1530
+ cleanupChildProcess(false);
1531
+
1532
+ fatalErrorChild("Error, couldn't launch child (fork)", error_code);
1533
+ exit_code = 2;
1534
+ } else if (pid == 0) {
1535
+ // Child process
1536
+
1537
+ // Make sure, we use the absolute program path for argv[0]
1538
+ argv[0] = (char *)getBinaryPath();
1539
+
1540
+ execv(fork_binary, argv);
1541
+
1542
+ fatalErrorChild("Error, couldn't launch child (exec)", errno);
1543
+ exit_code = 2;
1544
+ } else {
1545
+ // Onefile bootstrap process
1546
+ handle_process = pid;
1547
+
1548
+ int status;
1549
+ int res = waitpid_retried(handle_process, &status, false);
1550
+
1551
+ if (res == -1 && errno != ECHILD) {
1552
+ exit_code = 2;
1553
+ } else {
1554
+ exit_code = WEXITSTATUS(status);
1555
+ }
1556
+
1557
+ cleanupChildProcess(false);
1558
+ }
1559
+
1560
+ #endif
1561
+
1562
+ NUITKA_PRINT_TIMING("ONEFILE: Exiting.");
1563
+
1564
+ return exit_code;
1565
+ }
1566
+
1567
+ // Part of "Nuitka", an optimizing Python compiler that is compatible and
1568
+ // integrates with CPython, but also works on its own.
1569
+ //
1570
+ // Licensed under the Apache License, Version 2.0 (the "License");
1571
+ // you may not use this file except in compliance with the License.
1572
+ // You may obtain a copy of the License at
1573
+ //
1574
+ // http://www.apache.org/licenses/LICENSE-2.0
1575
+ //
1576
+ // Unless required by applicable law or agreed to in writing, software
1577
+ // distributed under the License is distributed on an "AS IS" BASIS,
1578
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1579
+ // See the License for the specific language governing permissions and
1580
+ // limitations under the License.