Nuitka-winsvc 2.6__cp311-cp311-win_amd64.whl → 2.6.5__cp311-cp311-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of Nuitka-winsvc might be problematic. Click here for more details.

Files changed (65) hide show
  1. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/RECORD +65 -61
  3. nuitka/BytecodeCaching.py +14 -3
  4. nuitka/ModuleRegistry.py +18 -3
  5. nuitka/Options.py +92 -66
  6. nuitka/PythonFlavors.py +15 -0
  7. nuitka/Version.py +1 -1
  8. nuitka/build/SconsCompilerSettings.py +3 -4
  9. nuitka/build/SconsInterface.py +2 -2
  10. nuitka/build/include/nuitka/compiled_frame.h +1 -1
  11. nuitka/build/include/nuitka/exceptions.h +1 -1
  12. nuitka/build/include/nuitka/type_aliases.h +1 -1
  13. nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
  14. nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
  15. nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
  16. nuitka/build/static_src/CompiledAsyncgenType.c +2 -11
  17. nuitka/build/static_src/CompiledCodeHelpers.c +4 -2
  18. nuitka/build/static_src/CompiledCoroutineType.c +5 -13
  19. nuitka/build/static_src/CompiledGeneratorType.c +0 -10
  20. nuitka/build/static_src/HelpersConsole.c +1 -1
  21. nuitka/build/static_src/HelpersTypes.c +4 -4
  22. nuitka/build/static_src/MainProgram.c +24 -0
  23. nuitka/build/static_src/MetaPathBasedLoader.c +17 -10
  24. nuitka/build/static_src/OnefileBootstrap.c +3 -1
  25. nuitka/code_generation/TypeAliasCodes.py +3 -2
  26. nuitka/freezer/DllDependenciesMacOS.py +7 -2
  27. nuitka/freezer/DllDependenciesPosix.py +22 -3
  28. nuitka/freezer/DllDependenciesWin32.py +1 -0
  29. nuitka/freezer/IncludedDataFiles.py +1 -1
  30. nuitka/freezer/IncludedEntryPoints.py +8 -0
  31. nuitka/freezer/Standalone.py +11 -2
  32. nuitka/importing/Importing.py +2 -1
  33. nuitka/nodes/ChildrenHavingMixins.py +13 -13
  34. nuitka/nodes/FunctionNodes.py +7 -0
  35. nuitka/nodes/ModuleNodes.py +21 -7
  36. nuitka/nodes/PackageMetadataNodes.py +3 -1
  37. nuitka/nodes/TypeNodes.py +3 -3
  38. nuitka/plugins/PluginBase.py +67 -13
  39. nuitka/plugins/Plugins.py +1 -1
  40. nuitka/plugins/standard/AntiBloatPlugin.py +136 -65
  41. nuitka/plugins/standard/ImplicitImports.py +3 -2
  42. nuitka/plugins/standard/PySidePyQtPlugin.py +13 -0
  43. nuitka/plugins/standard/standard.nuitka-package.config.yml +151 -53
  44. nuitka/reports/Reports.py +25 -2
  45. nuitka/tools/general/find_module/FindModuleCode.py +4 -1
  46. nuitka/tools/scanning/DisplayPackageDLLs.py +5 -6
  47. nuitka/tools/watch/__main__.py +7 -2
  48. nuitka/tree/Building.py +4 -6
  49. nuitka/tree/FutureSpecState.py +71 -0
  50. nuitka/tree/ReformulationAssignmentStatements.py +2 -2
  51. nuitka/tree/ReformulationDictionaryCreation.py +2 -2
  52. nuitka/tree/ReformulationFunctionStatements.py +1 -1
  53. nuitka/tree/ReformulationImportStatements.py +4 -51
  54. nuitka/tree/ReformulationMultidist.py +1 -1
  55. nuitka/tree/ReformulationNamespacePackages.py +27 -5
  56. nuitka/tree/SourceHandling.py +56 -17
  57. nuitka/utils/Distributions.py +26 -6
  58. nuitka/utils/FileOperations.py +18 -6
  59. nuitka/utils/StaticLibraries.py +4 -0
  60. {Nuitka_winsvc-2.6.data → Nuitka_winsvc-2.6.5.data}/scripts/nuitka-run.cmd +0 -0
  61. {Nuitka_winsvc-2.6.data → Nuitka_winsvc-2.6.5.data}/scripts/nuitka.cmd +0 -0
  62. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/LICENSE.txt +0 -0
  63. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/WHEEL +0 -0
  64. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/entry_points.txt +0 -0
  65. {Nuitka_winsvc-2.6.dist-info → Nuitka_winsvc-2.6.5.dist-info}/top_level.txt +0 -0
@@ -197,10 +197,10 @@
197
197
  - depends:
198
198
  - 'apt_pkg'
199
199
 
200
- - module-name: 'arcade' # checksum: d7d0718b
200
+ - module-name: 'arcade' # checksum: 25cf95c9
201
201
  data-files:
202
202
  - dirs:
203
- - 'resources/system'
203
+ - 'resources'
204
204
  - patterns:
205
205
  - 'VERSION'
206
206
  anti-bloat:
@@ -512,6 +512,12 @@
512
512
  'IPython': 'ignore'
513
513
  when: 'not use_ipython'
514
514
 
515
+ - module-name: 'blib2to3' # checksum: a54cab2a
516
+ data-files:
517
+ - patterns:
518
+ - 'Grammar.txt'
519
+ - 'PatternGrammar.txt'
520
+
515
521
  - module-name: 'bokeh' # checksum: 20c33794
516
522
  data-files:
517
523
  - dirs:
@@ -1493,28 +1499,25 @@
1493
1499
  - dirs:
1494
1500
  - 'templates'
1495
1501
 
1502
+ - module-name: 'fontTools' # checksum: 5c1ede46
1503
+ anti-bloat:
1504
+ - description: 'remove doctest reference'
1505
+ no-auto-follow:
1506
+ 'doctest': 'ignore'
1507
+ when: 'not use_unittest'
1508
+ - description: 'remove cython usage'
1509
+ no-auto-follow:
1510
+ 'cython': 'ignore'
1511
+ when: 'not use_setuptools'
1512
+ - description: 'remove argparse reference'
1513
+ no-auto-follow:
1514
+ 'argparse': 'ignore'
1515
+
1496
1516
  - module-name: 'fontTools.cu2qu.cu2qu' # checksum: 5673e8a6
1497
1517
  implicit-imports:
1498
1518
  - depends:
1499
1519
  - 'fontTools.cu2qu.errors'
1500
1520
 
1501
- - module-name: 'fontTools.feaLib.lexer' # checksum: d92ed463
1502
- implicit-imports:
1503
- - depends:
1504
- - 'fontTools.feaLib.error'
1505
- - 'fontTools.feaLib.location'
1506
-
1507
- - module-name: 'fontTools.misc.bezierTools' # checksum: 7bee054
1508
- implicit-imports:
1509
- - depends:
1510
- - 'fontTools.misc.arrayTools'
1511
- - 'fontTools.misc.transform'
1512
-
1513
- - module-name: 'fontTools.qu2cu.qu2cu' # checksum: bdfe3a4f
1514
- implicit-imports:
1515
- - depends:
1516
- - 'fontTools.misc.bezierTools'
1517
-
1518
1521
  - module-name: 'Foundation' # checksum: f269907b
1519
1522
  options:
1520
1523
  checks:
@@ -2033,6 +2036,17 @@
2033
2036
  - depends:
2034
2037
  - 'jarowinkler._initialize_cpp'
2035
2038
 
2039
+ - module-name: 'jaxlib.version' # checksum: cd20d237
2040
+ anti-bloat:
2041
+ - description: 'remove git call'
2042
+ change_function:
2043
+ # No git version after compilation of course.
2044
+ '_version_from_git_tree': "'None'"
2045
+ - description: 'remove setuptools reference'
2046
+ change_function:
2047
+ '_get_cmdclass': 'un-callable'
2048
+ when: 'not use_setuptools'
2049
+
2036
2050
  - module-name: 'jaxtyping' # checksum: 809b3e69
2037
2051
  data-files:
2038
2052
  - include-metadata:
@@ -2589,6 +2603,17 @@
2589
2603
  'uninstall_repl_displayhook': "'(lambda: None)'"
2590
2604
  when: 'not use_ipython'
2591
2605
 
2606
+ - module-name: 'mediapipe.python._framework_bindings' # checksum: 7ab15297
2607
+ implicit-imports:
2608
+ - post-import-code:
2609
+ - |
2610
+ import sys
2611
+ _framework_bindings = sys.modules["mediapipe.python._framework_bindings"]
2612
+ _framework_bindings.__path__ = []
2613
+ for sub_module_name in [key for key in sys.modules.keys() if key.startswith("_framework_bindings.")]:
2614
+ sys.modules["mediapipe.python."+sub_module_name] = sys.modules.pop(sub_module_name)
2615
+ when: 'python312_or_higher and not static_libpython'
2616
+
2592
2617
  - module-name: 'mercurial.encoding' # checksum: de4741d0
2593
2618
  implicit-imports:
2594
2619
  - depends:
@@ -2813,14 +2838,27 @@
2813
2838
  - patterns:
2814
2839
  - 'usage.txt'
2815
2840
 
2816
- - module-name: 'numba' # checksum: 9bea0dec
2841
+ - module-name: 'numba' # checksum: 95f3f759
2817
2842
  parameters:
2818
2843
  - 'name': 'disable-jit'
2819
2844
  'values': 'value in ("yes", "no")'
2845
+ variables:
2846
+ # TODO: Limit this to the versions of numba doing it, eventually it will go
2847
+ # away.
2848
+ setup_code:
2849
+ - 'from numba.core import config'
2850
+ declarations:
2851
+ 'numba_legacy_type_system': 'str(getattr(config, "USE_LEGACY_TYPE_SYSTEM", 1) == 1)'
2820
2852
  anti-bloat:
2821
2853
  - description: 'remove numba testing reference'
2822
2854
  change_function:
2823
2855
  'test': 'un-callable'
2856
+ - description: 'resolve numba legacy type config choice'
2857
+ global_replacements:
2858
+ 'config.USE_LEGACY_TYPE_SYSTEM': 'get_variable("numba_legacy_type_system")'
2859
+ - description: 'resolve numba legacy type config choice'
2860
+ global_replacements_re:
2861
+ '(_RedirectSubpackage\s*\(\s*.*?\s*"(numba.*?)"\s*\))': '\1; import \2'
2824
2862
  options:
2825
2863
  checks:
2826
2864
  - description: "Numba is not yet fully working with Nuitka standalone, try to use '--noinclude-numba-mode=nofollow', but it may fail."
@@ -2882,7 +2920,7 @@
2882
2920
  replacements_plain:
2883
2921
  'type(attr) is types.MethodType': 'isinstance(attr, types.MethodType)'
2884
2922
 
2885
- - module-name: 'numpy' # checksum: 7c09160e
2923
+ - module-name: 'numpy' # checksum: 10720e3
2886
2924
  dlls:
2887
2925
  - from_filenames:
2888
2926
  relative_path: '.libs'
@@ -2911,9 +2949,12 @@
2911
2949
  no-auto-follow:
2912
2950
  'numpy.distutils': 'ignore'
2913
2951
  when: 'not use_setuptools'
2914
- - description: 'avoid pyyaml dependency'
2952
+ - description: 'avoid PyYAML dependency'
2915
2953
  no-auto-follow:
2916
2954
  'yaml': 'ignore'
2955
+ - description: 'avoid charset_normalizer dependency'
2956
+ no-auto-follow:
2957
+ 'charset_normalizer': 'ignore'
2917
2958
  implicit-imports:
2918
2959
  - depends:
2919
2960
  - 'numpy._mklinit'
@@ -3022,7 +3063,7 @@
3022
3063
  - depends:
3023
3064
  - 'secrets'
3024
3065
 
3025
- - module-name: 'numpy.testing' # checksum: 4d5ed09e
3066
+ - module-name: 'numpy.testing' # checksum: 7958db4c
3026
3067
  anti-bloat:
3027
3068
  - description: 'remove numpy testing framework'
3028
3069
  module_code: |
@@ -3067,6 +3108,19 @@
3067
3108
  with _assert_warns_context(warning_class, name=func.__name__):
3068
3109
  return func(*args, **kwargs)
3069
3110
 
3111
+ @contextmanager
3112
+ def _assert_no_warnings_context(name=None):
3113
+ yield
3114
+
3115
+ def assert_no_warnings(*args, **kwargs):
3116
+ if not args:
3117
+ return _assert_no_warnings_context()
3118
+
3119
+ func = args[0]
3120
+ args = args[1:]
3121
+ with _assert_no_warnings_context(name=func.__name__):
3122
+ return func(*args, **kwargs)
3123
+
3070
3124
  def assert_(val, msg=''):
3071
3125
  if not val:
3072
3126
  try:
@@ -3178,12 +3232,17 @@
3178
3232
  support_info: 'error'
3179
3233
  when: 'version("pyobjc") < (9,)'
3180
3234
 
3181
- - module-name: 'onnx' # checksum: 5eb1b195
3182
- options:
3183
- checks:
3184
- - description: "onnx is is not supported with Python3.12 unless '--static-libpython' is used"
3185
- support_info: 'error'
3186
- when: 'python312_or_higher and not static_libpython'
3235
+ - module-name: 'onnx.onnx_cpp2py_export' # checksum: 6d25b34c
3236
+ implicit-imports:
3237
+ - post-import-code:
3238
+ - |
3239
+ import sys
3240
+ onnx_cpp2py_export = sys.modules["onnx.onnx_cpp2py_export"]
3241
+ onnx_cpp2py_export.__path__ = []
3242
+
3243
+ for sub_module_name in [key for key in sys.modules.keys() if key.startswith("onnx_cpp2py_export.")]:
3244
+ sys.modules["onnx."+sub_module_name] = sys.modules.pop(sub_module_name)
3245
+ when: 'python312_or_higher and not static_libpython'
3187
3246
 
3188
3247
  - module-name: 'onnxruntime' # checksum: 37a94e21
3189
3248
  dlls:
@@ -3454,7 +3513,7 @@
3454
3513
  - 'libpandaegg'
3455
3514
  dest_path: '.'
3456
3515
 
3457
- - module-name: 'pandas' # checksum: 158bd2af
3516
+ - module-name: 'pandas' # checksum: b4c6897a
3458
3517
  anti-bloat:
3459
3518
  - description: 'remove pandas testing framework'
3460
3519
  replacements_plain:
@@ -3465,6 +3524,7 @@
3465
3524
  - description: 'avoid numba in pandas'
3466
3525
  no-auto-follow:
3467
3526
  'pandas.core._numba.extensions': 'no numba acceleration'
3527
+ 'lxml': 'no stylesheet support in pandas.io.formats.xml without including lxml'
3468
3528
  when: 'not use_numba'
3469
3529
 
3470
3530
  - module-name: 'pandas._libs' # checksum: 582d52b9
@@ -4250,11 +4310,12 @@
4250
4310
  'setuptools_scm': 'ignore'
4251
4311
  when: 'not use_setuptools'
4252
4312
 
4253
- - module-name: 'pyarrow.dataset' # checksum: 37675d7a
4313
+ - module-name: 'pyarrow.dataset' # checksum: a16a7618
4254
4314
  implicit-imports:
4255
4315
  - depends:
4256
4316
  - 'pyarrow._acero'
4257
4317
  - 'pyarrow._json'
4318
+ - 'pyarrow._csv'
4258
4319
 
4259
4320
  - module-name: 'pyarrow.lib' # checksum: 302be0c2
4260
4321
  implicit-imports:
@@ -4720,7 +4781,7 @@
4720
4781
  - find-dlls-near-module:
4721
4782
  - 'shiboken2'
4722
4783
 
4723
- - module-name: 'PySide6' # checksum: 27df3ea2
4784
+ - module-name: 'PySide6' # checksum: 1d5fdbbd
4724
4785
  implicit-imports:
4725
4786
  - post-import-code:
4726
4787
  - |
@@ -4779,6 +4840,8 @@
4779
4840
  - 'libqtquickcontrols2fluentwinui3styleimplplugin'
4780
4841
  - 'libqtquickcontrols2fluentwinui3styleplugin'
4781
4842
  - 'libqtwebviewquickplugin'
4843
+ - 'libqtquickscene3dplugin'
4844
+ - 'libqsqlmimer'
4782
4845
 
4783
4846
  - module-name: 'PySide6.QtCore' # checksum: be0d99ac
4784
4847
  implicit-imports:
@@ -5140,7 +5203,7 @@
5140
5203
  - depends:
5141
5204
  - 'scapy.layers.*'
5142
5205
 
5143
- - module-name: 'scipy' # checksum: 5023b38
5206
+ - module-name: 'scipy' # checksum: 831d0852
5144
5207
  data-files:
5145
5208
  - patterns:
5146
5209
  - 'stats/_sobol_direction_numbers.npz' # for scipy.stats._sobol._initialize_direction_numbers
@@ -5163,6 +5226,10 @@
5163
5226
  'torch': 'ignore'
5164
5227
  'jax': 'ignore'
5165
5228
  'dask': 'ignore'
5229
+ 'matplotlib': 'ignore'
5230
+ 'sparse': 'ignore'
5231
+ 'ndonnx': 'ignore'
5232
+ 'yaml': 'ignore'
5166
5233
  bloat-mode-overrides:
5167
5234
  'pydoc': 'allow'
5168
5235
 
@@ -5653,7 +5720,15 @@
5653
5720
  replacements_plain:
5654
5721
  "os.getenv('CONDA_PREFIX', '')": "''"
5655
5722
 
5656
- - module-name: 'shiboken6' # checksum: 9f9886af
5723
+ - module-name: 'shiboken6' # checksum: ccdf53fe
5724
+ dlls:
5725
+ # Do not put these top level, some packages are really incompatible with
5726
+ # this library potentially
5727
+ - from_filenames:
5728
+ prefixes:
5729
+ - 'msvcp'
5730
+ when: 'win32'
5731
+
5657
5732
  implicit-imports:
5658
5733
  - depends:
5659
5734
  - 'argparse'
@@ -5864,6 +5939,19 @@
5864
5939
  'import dask.array as da': 'raise ImportError'
5865
5940
  when: 'not use_dask'
5866
5941
 
5942
+ - module-name: 'sklearn' # checksum: acc187b0
5943
+ anti-bloat:
5944
+ - description: 'pandas check should not cause usage'
5945
+ no-auto-follow:
5946
+ 'pandas': 'ignore'
5947
+ - description: 'matplotlib check should not cause usage'
5948
+ no-auto-follow:
5949
+ 'matplotlib': 'ignore'
5950
+ - description: 'remove pytest testing framework'
5951
+ no-auto-follow:
5952
+ 'pytest': 'ignore'
5953
+ when: 'not use_pytest'
5954
+
5867
5955
  - module-name: 'sklearn._distributor_init' # checksum: 8597e1a6
5868
5956
  dlls:
5869
5957
  - from_filenames:
@@ -5900,6 +5988,12 @@
5900
5988
  - 'sklearn.datasets.data'
5901
5989
  - 'sklearn.datasets.descr'
5902
5990
 
5991
+ - module-name: 'sklearn.datasets._base' # checksum: 521f4991
5992
+ anti-bloat:
5993
+ - description: 'avoid PIL dependency for sample image testing'
5994
+ change_function:
5995
+ 'load_sample_images': 'un-callable'
5996
+
5903
5997
  - module-name: 'sklearn.decomposition' # checksum: 61c8cb5d
5904
5998
  implicit-imports:
5905
5999
  - depends:
@@ -6046,15 +6140,10 @@
6046
6140
  - depends:
6047
6141
  - 'sklearn.neighbors._quad_tree'
6048
6142
 
6049
- - module-name: 'sklearn.utils' # checksum: 4aeaf812
6143
+ - module-name: 'sklearn.utils' # checksum: cecf5599
6050
6144
  data-files:
6051
6145
  - patterns:
6052
6146
  - '*.css'
6053
- anti-bloat:
6054
- - description: 'pandas and matplotlib checks should not cause usage'
6055
- no-auto-follow:
6056
- 'pandas': 'ignore'
6057
- 'matplotlib': 'ignore'
6058
6147
  implicit-imports:
6059
6148
  - depends:
6060
6149
  - 'sklearn.utils.arrayfuncs'
@@ -6250,6 +6339,12 @@
6250
6339
  - depends:
6251
6340
  - 'sqlalchemy.dialects.mssql.pyodbc'
6252
6341
 
6342
+ - module-name: 'sqlalchemy.orm' # checksum: 807b0764
6343
+ implicit-imports:
6344
+ - depends:
6345
+ - 'sqlalchemy.orm.*'
6346
+ - 'sqlalchemy.ext.*'
6347
+
6253
6348
  - module-name: 'sqlalchemy.orm.util' # checksum: 629852fa
6254
6349
  anti-bloat:
6255
6350
  - description: 'remove pytest reference'
@@ -6294,6 +6389,11 @@
6294
6389
  - 'sqlfluff.core.plugin.*'
6295
6390
  - 'sqlfluff.rules.*'
6296
6391
 
6392
+ - module-name: 'sqlglot.dialects' # checksum: b0ad4de6
6393
+ implicit-imports:
6394
+ - depends:
6395
+ - 'sqlglot.dialects.*'
6396
+
6297
6397
  - module-name: 'srsly.msgpack._packer' # checksum: ef9e3a96
6298
6398
  implicit-imports:
6299
6399
  - depends:
@@ -7905,13 +8005,23 @@
7905
8005
  change_function:
7906
8006
  'doctests': "'(lambda: None)'"
7907
8007
 
7908
- - module-name: 'tqdm' # checksum: dac19097
8008
+ - module-name: 'tqdm' # checksum: f48e841d
7909
8009
  anti-bloat:
7910
8010
  - description: 'remove IPython reference'
7911
8011
  change_function:
7912
8012
  'tnrange': "'(lambda *args, **kwargs: None)'"
7913
8013
  'tqdm_notebook': "'(lambda *args, **kwargs: None)'"
7914
8014
  when: 'not use_ipython'
8015
+ - description: 'remove matplotlib reference'
8016
+ no-auto-follow:
8017
+ 'matplotlib': 'ignore'
8018
+ - description: 'remove setuptools reference'
8019
+ no-auto-follow:
8020
+ 'setuptools_scm': 'ignore'
8021
+ when: 'not use_setuptools'
8022
+ - description: 'remove pandas reference'
8023
+ no-auto-follow:
8024
+ 'pandas': 'ignore'
7915
8025
 
7916
8026
  - module-name: 'tqdm.autonotebook' # checksum: 6ac095cb
7917
8027
  anti-bloat:
@@ -7919,18 +8029,6 @@
7919
8029
  module_code: "from .std import tqdm, trange\n"
7920
8030
  when: 'not use_ipython'
7921
8031
 
7922
- - module-name: 'tqdm.std' # checksum: 2e350129
7923
- anti-bloat:
7924
- - no-auto-follow:
7925
- 'pandas': 'ignore'
7926
-
7927
- - module-name: 'tqdm.version' # checksum: 6b612ba4
7928
- anti-bloat:
7929
- - description: 'remove IPython reference'
7930
- no-auto-follow:
7931
- 'setuptools_scm': 'ignore'
7932
- when: 'not use_setuptools'
7933
-
7934
8032
  - module-name: 'tracerite' # checksum: fe3c0d7b
7935
8033
  data-files:
7936
8034
  - patterns:
nuitka/reports/Reports.py CHANGED
@@ -56,6 +56,7 @@ from nuitka.utils.Distributions import (
56
56
  getDistributionName,
57
57
  getDistributionsFromModuleName,
58
58
  getDistributionVersion,
59
+ isDistributionVendored,
59
60
  )
60
61
  from nuitka.utils.FileOperations import (
61
62
  getReportPath,
@@ -161,6 +162,14 @@ def _getReportInputData(aborted):
161
162
  for dist in all_distributions
162
163
  )
163
164
 
165
+ module_distribution_vendored = dict(
166
+ (
167
+ getDistributionName(dist),
168
+ isDistributionVendored(getDistributionName(dist)),
169
+ )
170
+ for dist in all_distributions
171
+ )
172
+
164
173
  module_exclusions = dict((module.getFullName(), {}) for module in getDoneModules())
165
174
 
166
175
  # TODO: The module filename, and other things can be None. Once we change to
@@ -320,7 +329,12 @@ def _addModulesToReport(root, report_input_data, diffable):
320
329
  )
321
330
  influence_xml_node.attrib["result"] = str(condition_result).lower()
322
331
  elif influence == "variable-used":
323
- variable_name, condition_tags_used, variable_value = detail
332
+ (
333
+ variable_name,
334
+ condition_tags_used,
335
+ variable_value,
336
+ config_module_name,
337
+ ) = detail
324
338
 
325
339
  influence_xml_node.attrib["variable"] = variable_name
326
340
  if condition_tags_used:
@@ -328,6 +342,10 @@ def _addModulesToReport(root, report_input_data, diffable):
328
342
  condition_tags_used
329
343
  )
330
344
  influence_xml_node.attrib["value"] = variable_value
345
+
346
+ if module_name != config_module_name:
347
+ influence_xml_node.attrib["config_module"] = config_module_name
348
+
331
349
  elif influence == "parameter-used":
332
350
  parameter_name, condition_tags_used, parameter_value = detail
333
351
 
@@ -711,7 +729,7 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
711
729
  )
712
730
 
713
731
  for distribution in report_input_data["all_distributions"]:
714
- TreeXML.appendTreeElement(
732
+ distribution_node = TreeXML.appendTreeElement(
715
733
  distributions_xml_node,
716
734
  "distribution",
717
735
  name=getDistributionName(distribution),
@@ -721,6 +739,11 @@ def writeCompilationReport(report_filename, report_input_data, diffable):
721
739
  ],
722
740
  )
723
741
 
742
+ if report_input_data["module_distribution_vendored"][
743
+ getDistributionName(distribution)
744
+ ]:
745
+ distribution_node.attrib["vendored"] = "yes"
746
+
724
747
  python_xml_node = TreeXML.appendTreeElement(
725
748
  root,
726
749
  "python",
@@ -63,13 +63,16 @@ def editModuleCode(module_search_desc):
63
63
 
64
64
  candidate = module_search_desc
65
65
 
66
- while not candidate.endswith(".dist") and candidate:
66
+ while not candidate.endswith((".dist", ".app")) and candidate:
67
67
  candidate = os.path.dirname(candidate)
68
68
 
69
69
  if candidate:
70
70
  module_name = relpath(module_search_desc, start=candidate).replace(
71
71
  "/", "."
72
72
  )
73
+
74
+ if module_name.startswith("Contents.MacOS."):
75
+ module_name = module_name[15:]
73
76
  else:
74
77
  module_name = None
75
78
  else:
@@ -97,7 +97,7 @@ def scanModule(module_name, scan_function):
97
97
  if isFileExtensionModule(package_dll_filename):
98
98
  continue
99
99
 
100
- yield package_dll_filename, package_dll_dir
100
+ yield package_directory, package_dll_filename, package_dll_dir
101
101
 
102
102
 
103
103
  def displayDLLs(module_name):
@@ -105,12 +105,11 @@ def displayDLLs(module_name):
105
105
 
106
106
  count = 0
107
107
 
108
- for package_dll_filename, package_dll_dir in scanModule(
108
+ for package_directory, package_dll_filename, _package_dll_dir in scanModule(
109
109
  module_name=module_name, scan_function=listDllFilesFromDirectory
110
110
  ):
111
-
112
111
  tools_logger.my_print(
113
- " %s" % relpath(package_dll_filename, start=package_dll_dir),
112
+ " %s" % relpath(package_dll_filename, start=package_directory),
114
113
  )
115
114
 
116
115
  count += 1
@@ -123,12 +122,12 @@ def displayEXEs(module_name):
123
122
 
124
123
  count = 0
125
124
 
126
- for package_dll_filename, package_dll_dir in scanModule(
125
+ for package_directory, package_dll_filename, _package_dll_dir in scanModule(
127
126
  module_name=module_name, scan_function=listExeFilesFromDirectory
128
127
  ):
129
128
 
130
129
  tools_logger.my_print(
131
- " %s" % relpath(package_dll_filename, start=package_dll_dir),
130
+ " %s" % relpath(package_dll_filename, start=package_directory),
132
131
  )
133
132
 
134
133
  count += 1
@@ -20,7 +20,7 @@ from nuitka.TreeXML import fromFile
20
20
  from nuitka.utils.Execution import (
21
21
  check_call,
22
22
  executeProcess,
23
- withEnvironmentVarOverridden,
23
+ withEnvironmentVarsOverridden,
24
24
  )
25
25
  from nuitka.utils.FileOperations import (
26
26
  deleteFile,
@@ -194,7 +194,12 @@ def _compileCase(case_data, case_dir, installed_python, lock_filename, jobs):
194
194
  if len(binaries) != 1:
195
195
  sys.exit("Error, failed to identify created binary.")
196
196
 
197
- with withEnvironmentVarOverridden("NUITKA_LAUNCH_TOKEN", "1"):
197
+ env = {
198
+ "NUITKA_LAUNCH_TOKEN": "1",
199
+ "NUITKA_TEST_INTERACTIVE": "0",
200
+ }
201
+
202
+ with withEnvironmentVarsOverridden(env):
198
203
  stdout, stderr, exit_nuitka = executeProcess([binaries[0]], timeout=5 * 60)
199
204
 
200
205
  with open("compiled-stdout.txt", "wb") as output:
nuitka/tree/Building.py CHANGED
@@ -138,6 +138,7 @@ from nuitka.utils.ModuleNames import ModuleName
138
138
  from nuitka.utils.Utils import withNoSyntaxWarning
139
139
 
140
140
  from . import SyntaxErrors
141
+ from .FutureSpecState import getFutureSpec, popFutureSpec, pushFutureSpec
141
142
  from .ReformulationAssertStatements import buildAssertNode
142
143
  from .ReformulationAssignmentStatements import (
143
144
  buildAnnAssignNode,
@@ -172,9 +173,6 @@ from .ReformulationImportStatements import (
172
173
  buildImportFromNode,
173
174
  buildImportModulesNode,
174
175
  checkFutureImportsOnlyAtStart,
175
- getFutureSpec,
176
- popFutureSpec,
177
- pushFutureSpec,
178
176
  )
179
177
  from .ReformulationLambdaExpressions import buildLambdaNode
180
178
  from .ReformulationMatchStatements import buildMatchNode
@@ -1018,14 +1016,14 @@ def _loadUncompiledModuleFromCache(
1018
1016
 
1019
1017
  used_modules = OrderedSet()
1020
1018
 
1021
- used_modules = getCachedImportedModuleUsageAttempts(
1019
+ used_modules, timing_info = getCachedImportedModuleUsageAttempts(
1022
1020
  module_name=module_name, source_code=source_code, source_ref=source_ref
1023
1021
  )
1024
1022
 
1025
- # assert not is_package, (module_name, used_modules, result, result.getCompileTimeFilename())
1026
-
1027
1023
  result.setUsedModules(used_modules)
1028
1024
 
1025
+ ModuleRegistry.setModuleOptimizationTimingInfos(module_name, timing_info)
1026
+
1029
1027
  return result
1030
1028
 
1031
1029
 
@@ -0,0 +1,71 @@
1
+ # Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
2
+
3
+
4
+ """ State of a stack of future specs during parsing. """
5
+
6
+ from nuitka.nodes.FutureSpecs import FutureSpec
7
+ from nuitka.plugins.Plugins import Plugins
8
+ from nuitka.PythonVersions import python_version
9
+
10
+ from .SyntaxErrors import raiseSyntaxError
11
+
12
+ _future_specs = []
13
+
14
+
15
+ def pushFutureSpec(module_name):
16
+ _future_specs.append(
17
+ FutureSpec(use_annotations=Plugins.decideAnnotations(module_name))
18
+ )
19
+
20
+
21
+ def getFutureSpec():
22
+ return _future_specs[-1]
23
+
24
+
25
+ def popFutureSpec():
26
+ del _future_specs[-1]
27
+
28
+
29
+ def enableFutureFeature(node, object_name, source_ref):
30
+ future_spec = _future_specs[-1]
31
+
32
+ if object_name == "unicode_literals":
33
+ future_spec.enableUnicodeLiterals()
34
+ elif object_name == "absolute_import":
35
+ future_spec.enableAbsoluteImport()
36
+ elif object_name == "division":
37
+ future_spec.enableFutureDivision()
38
+ elif object_name == "print_function":
39
+ future_spec.enableFuturePrint()
40
+ elif object_name == "barry_as_FLUFL" and python_version >= 0x300:
41
+ future_spec.enableBarry()
42
+ elif object_name == "generator_stop":
43
+ future_spec.enableGeneratorStop()
44
+ elif object_name == "braces":
45
+ raiseSyntaxError("not a chance", source_ref.atColumnNumber(node.col_offset))
46
+ elif object_name in ("nested_scopes", "generators", "with_statement"):
47
+ # These are enabled in all cases already.
48
+ pass
49
+ elif object_name == "annotations" and python_version >= 0x370:
50
+ future_spec.enableFutureAnnotations()
51
+ else:
52
+ raiseSyntaxError(
53
+ "future feature %s is not defined" % object_name,
54
+ source_ref.atColumnNumber(node.col_offset),
55
+ )
56
+
57
+
58
+ # Part of "Nuitka", an optimizing Python compiler that is compatible and
59
+ # integrates with CPython, but also works on its own.
60
+ #
61
+ # Licensed under the Apache License, Version 2.0 (the "License");
62
+ # you may not use this file except in compliance with the License.
63
+ # You may obtain a copy of the License at
64
+ #
65
+ # http://www.apache.org/licenses/LICENSE-2.0
66
+ #
67
+ # Unless required by applicable law or agreed to in writing, software
68
+ # distributed under the License is distributed on an "AS IS" BASIS,
69
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
70
+ # See the License for the specific language governing permissions and
71
+ # limitations under the License.
@@ -67,7 +67,7 @@ from nuitka.Options import isExperimental
67
67
  from nuitka.PythonVersions import python_version
68
68
  from nuitka.Tracing import general
69
69
 
70
- from .ReformulationImportStatements import getFutureSpec
70
+ from .FutureSpecState import getFutureSpec
71
71
  from .ReformulationTryFinallyStatements import makeTryFinallyReleaseStatement
72
72
  from .SyntaxErrors import raiseSyntaxError
73
73
  from .TreeHelpers import (
@@ -1231,7 +1231,7 @@ def buildTypeAliasNode(provider, node, source_ref):
1231
1231
  assert not node.type_params, node.type_params
1232
1232
  type_alias_node = ExpressionTypeAlias(
1233
1233
  type_params=buildNodeTuple(provider, node.type_params, source_ref),
1234
- compute_value=buildNode(provider, node.value, source_ref),
1234
+ value=buildNode(provider, node.value, source_ref),
1235
1235
  source_ref=source_ref,
1236
1236
  )
1237
1237