Nuitka-winsvc 1.9.3__cp312-cp312-win_amd64.whl → 1.9.6__cp312-cp312-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 (48) hide show
  1. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/METADATA +1 -1
  2. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/RECORD +48 -46
  3. nuitka/MainControl.py +4 -4
  4. nuitka/Options.py +6 -1
  5. nuitka/PythonFlavors.py +13 -0
  6. nuitka/PythonVersions.py +6 -1
  7. nuitka/Version.py +1 -1
  8. nuitka/build/Backend.scons +2 -0
  9. nuitka/build/SconsCompilerSettings.py +3 -0
  10. nuitka/build/SconsUtils.py +21 -11
  11. nuitka/build/include/nuitka/safe_string_ops.h +2 -0
  12. nuitka/build/static_src/CompiledFunctionType.c +0 -5
  13. nuitka/build/static_src/CompiledMethodType.c +0 -5
  14. nuitka/build/static_src/HelpersComparisonEq.c +2 -2
  15. nuitka/build/static_src/HelpersComparisonGe.c +2 -2
  16. nuitka/build/static_src/HelpersComparisonGt.c +2 -2
  17. nuitka/build/static_src/HelpersComparisonLe.c +2 -2
  18. nuitka/build/static_src/HelpersComparisonLt.c +2 -2
  19. nuitka/build/static_src/HelpersComparisonNe.c +2 -2
  20. nuitka/build/static_src/HelpersDictionariesGenerated.c +1 -1
  21. nuitka/build/static_src/HelpersFilesystemPaths.c +1 -1
  22. nuitka/build/static_src/HelpersSafeStrings.c +1 -1
  23. nuitka/build/static_src/MainProgram.c +0 -1
  24. nuitka/build/static_src/MetaPathBasedLoader.c +1 -1
  25. nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +11 -0
  26. nuitka/code_generation/templates/CodeTemplatesModules.py +18 -1
  27. nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +1 -1
  28. nuitka/code_generation/templates_c/HelperLongTools.c.j2 +1 -1
  29. nuitka/distutils/DistutilCommands.py +3 -1
  30. nuitka/nodes/PackageMetadataNodes.py +2 -3
  31. nuitka/plugins/PluginBase.py +8 -10
  32. nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
  33. nuitka/plugins/standard/DillPlugin/dill-postLoad.py +249 -0
  34. nuitka/plugins/standard/DillPlugin.py +11 -23
  35. nuitka/plugins/standard/ImplicitImports.py +1 -0
  36. nuitka/plugins/standard/OptionsNannyPlugin.py +1 -1
  37. nuitka/plugins/standard/standard.nuitka-package.config.yml +45 -8
  38. nuitka/reports/Reports.py +12 -0
  39. nuitka/utils/Distributions.py +7 -14
  40. nuitka/utils/FileOperations.py +15 -0
  41. nuitka/utils/Utils.py +8 -0
  42. nuitka/utils/WindowsResources.py +6 -1
  43. {Nuitka_winsvc-1.9.3.data → Nuitka_winsvc-1.9.6.data}/scripts/nuitka-run.bat +0 -0
  44. {Nuitka_winsvc-1.9.3.data → Nuitka_winsvc-1.9.6.data}/scripts/nuitka.bat +0 -0
  45. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/LICENSE.txt +0 -0
  46. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/WHEEL +0 -0
  47. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/entry_points.txt +0 -0
  48. {Nuitka_winsvc-1.9.3.dist-info → Nuitka_winsvc-1.9.6.dist-info}/top_level.txt +0 -0
@@ -28,7 +28,7 @@ from nuitka.PythonVersions import python_version
28
28
  from .FileOperations import searchPrefixPath
29
29
  from .Importing import getModuleNameAndKindFromFilenameSuffix
30
30
  from .ModuleNames import ModuleName, checkModuleName
31
- from .Utils import isLinux
31
+ from .Utils import isMacOS, isWin32Windows
32
32
 
33
33
  _package_to_distribution = None
34
34
 
@@ -82,6 +82,8 @@ def getDistributionTopLevelPackageNames(distribution):
82
82
  continue
83
83
  if first_path_element == "__pycache__":
84
84
  continue
85
+ if not checkModuleName(first_path_element) or first_path_element == ".":
86
+ continue
85
87
 
86
88
  if remainder:
87
89
  module_name = ModuleName(first_path_element)
@@ -262,23 +264,14 @@ def isDistributionPoetryPackage(distribution_name):
262
264
 
263
265
 
264
266
  def isDistributionSystemPackage(distribution_name):
265
- result = (
266
- not isDistributionPipPackage(distribution_name)
267
+ return (
268
+ not isMacOS()
269
+ and not isWin32Windows()
270
+ and not isDistributionPipPackage(distribution_name)
267
271
  and not isDistributionPoetryPackage(distribution_name)
268
272
  and not isDistributionCondaPackage(distribution_name)
269
273
  )
270
274
 
271
- # This should only ever happen on Linux, lets know when it does happen
272
- # elsewhere, since that is most probably a bug in our installer detection on
273
- # non-Linux as well.
274
- if result:
275
- assert isLinux(), (
276
- distribution_name,
277
- getDistributionInstallerName(distribution_name),
278
- )
279
-
280
- return result
281
-
282
275
 
283
276
  _pdm_dir_cache = {}
284
277
 
@@ -33,6 +33,7 @@ import stat
33
33
  import sys
34
34
  import tempfile
35
35
  import time
36
+ import unicodedata
36
37
  from contextlib import contextmanager
37
38
 
38
39
  from nuitka.__past__ import ( # pylint: disable=redefined-builtin
@@ -1386,3 +1387,17 @@ def syncFileOutput(file_handle):
1386
1387
  except AttributeError:
1387
1388
  # Too old to have "syncfs" available.
1388
1389
  return
1390
+
1391
+
1392
+ def isFilesystemEncodable(filename):
1393
+ """Decide if a filename is safe for use as a file system path with tools."""
1394
+ if os.name == "nt":
1395
+ value = (
1396
+ unicodedata.normalize("NFKD", filename)
1397
+ .encode("ascii", "ignore")
1398
+ .decode("ascii")
1399
+ )
1400
+
1401
+ return value == filename
1402
+ else:
1403
+ return True
nuitka/utils/Utils.py CHANGED
@@ -101,6 +101,8 @@ def getLinuxDistribution():
101
101
 
102
102
  if os.path.exists("/etc/os-release"):
103
103
  result, base, version = _parseOsReleaseFileContents("/etc/os-release")
104
+ elif os.path.exists("/usr/lib/os-release"):
105
+ result, base, version = _parseOsReleaseFileContents("/usr/lib/os-release")
104
106
  elif os.path.exists("/etc/SuSE-release"):
105
107
  result, base, version = _parseOsReleaseFileContents("/etc/SuSE-release")
106
108
  elif os.path.exists("/etc/issue"):
@@ -157,6 +159,12 @@ def isFedoraBasedLinux():
157
159
  return (base or dist_name) == "Fedora"
158
160
 
159
161
 
162
+ def isArchBasedLinux():
163
+ dist_name, base, _dist_version = getLinuxDistribution()
164
+
165
+ return (base or dist_name) == "Arch"
166
+
167
+
160
168
  def isAndroidBasedLinux():
161
169
  # spell-checker: ignore googlesource
162
170
  if not isLinux():
@@ -351,7 +351,7 @@ def getDefaultWindowsExecutableManifest():
351
351
  # Note: Supported OS are lied about by CPython.
352
352
  template = (
353
353
  """\
354
- <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
354
+ <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
355
355
  <assemblyIdentity type="win32" name="Mini" version="1.0.0.0"/>
356
356
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
357
357
  <application>
@@ -362,6 +362,11 @@ def getDefaultWindowsExecutableManifest():
362
362
  <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
363
363
  </application>
364
364
  </compatibility>
365
+ <asmv3:application>
366
+ <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
367
+ <ws2:longPathAware>true</ws2:longPathAware>
368
+ </asmv3:windowsSettings>
369
+ </asmv3:application>
365
370
  %s
366
371
  </assembly>
367
372
  """