Nuitka-winsvc 2.4.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +2 -1
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/RECORD +294 -271
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +31 -0
- nuitka/HardImportRegistry.py +8 -0
- nuitka/MainControl.py +9 -4
- nuitka/OptionParsing.py +105 -52
- nuitka/Options.py +73 -16
- nuitka/OutputDirectories.py +7 -2
- nuitka/PostProcessing.py +69 -38
- nuitka/Progress.py +16 -1
- nuitka/PythonVersions.py +2 -1
- nuitka/Serialization.py +4 -2
- nuitka/Tracing.py +69 -1
- nuitka/Version.py +2 -2
- nuitka/build/Backend.scons +45 -5
- nuitka/build/CCompilerVersion.scons +6 -0
- nuitka/build/Onefile.scons +6 -0
- nuitka/build/SconsCaching.py +12 -2
- nuitka/build/SconsCompilerSettings.py +17 -6
- nuitka/build/SconsInterface.py +1 -0
- nuitka/build/SconsUtils.py +5 -0
- nuitka/build/include/nuitka/allocator.h +124 -1
- nuitka/build/include/nuitka/calling.h +6 -6
- nuitka/build/include/nuitka/compiled_asyncgen.h +10 -7
- nuitka/build/include/nuitka/compiled_frame.h +2 -1
- nuitka/build/include/nuitka/constants.h +6 -0
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/exceptions.h +264 -121
- nuitka/build/include/nuitka/helper/attributes.h +0 -4
- nuitka/build/include/nuitka/helper/calling_generated.h +52 -52
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/dictionaries.h +65 -29
- nuitka/build/include/nuitka/helper/ints.h +86 -37
- nuitka/build/include/nuitka/helper/iterators.h +82 -34
- nuitka/build/include/nuitka/helper/operations.h +3 -0
- nuitka/build/include/nuitka/helper/operations_binary_add.h +6 -0
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +6 -0
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +3 -0
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +3 -0
- nuitka/build/include/nuitka/helper/raising.h +47 -28
- nuitka/build/include/nuitka/helper/richcomparisons.h +7 -0
- nuitka/build/include/nuitka/helpers.h +12 -2
- nuitka/build/include/nuitka/prelude.h +35 -25
- nuitka/build/include/nuitka/printing.h +9 -7
- nuitka/build/include/nuitka/threading.h +15 -1
- nuitka/build/include/nuitka/type_aliases.h +3 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +307 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +45 -39
- nuitka/build/static_src/CompiledCellType.c +6 -4
- nuitka/build/static_src/CompiledCodeHelpers.c +104 -40
- nuitka/build/static_src/CompiledCoroutineType.c +40 -30
- nuitka/build/static_src/CompiledFrameType.c +110 -79
- nuitka/build/static_src/CompiledFunctionType.c +173 -151
- nuitka/build/static_src/CompiledGeneratorType.c +51 -49
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +424 -46
- nuitka/build/static_src/CompiledMethodType.c +10 -13
- nuitka/build/static_src/HelpersAllocator.c +270 -32
- nuitka/build/static_src/HelpersAttributes.c +0 -21
- nuitka/build/static_src/HelpersBuiltin.c +22 -13
- nuitka/build/static_src/HelpersCalling.c +7 -7
- nuitka/build/static_src/HelpersCallingGenerated.c +70 -70
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +18 -4
- nuitka/build/static_src/HelpersComparisonEqUtils.c +1 -0
- nuitka/build/static_src/HelpersComparisonGe.c +18 -4
- nuitka/build/static_src/HelpersComparisonGt.c +18 -4
- nuitka/build/static_src/HelpersComparisonLe.c +18 -4
- nuitka/build/static_src/HelpersComparisonLt.c +18 -4
- nuitka/build/static_src/HelpersComparisonNe.c +18 -4
- nuitka/build/static_src/HelpersConsole.c +34 -8
- nuitka/build/static_src/HelpersConstantsBlob.c +10 -4
- nuitka/build/static_src/HelpersDictionaries.c +181 -34
- nuitka/build/static_src/HelpersDictionariesGenerated.c +0 -106
- nuitka/build/static_src/HelpersExceptions.c +24 -50
- nuitka/build/static_src/HelpersFiles.c +79 -5
- nuitka/build/static_src/HelpersImport.c +13 -9
- nuitka/build/static_src/HelpersImportHard.c +23 -46
- nuitka/build/static_src/HelpersLists.c +98 -9
- nuitka/build/static_src/HelpersMatching.c +1 -1
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +224 -6
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +3 -0
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +5 -5
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +8 -2
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +14 -8
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +36 -36
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +1 -0
- nuitka/build/static_src/HelpersOperationBinaryMod.c +22 -10
- nuitka/build/static_src/HelpersOperationBinaryMult.c +17 -7
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +14 -8
- nuitka/build/static_src/HelpersOperationBinaryPow.c +24 -24
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +4 -4
- nuitka/build/static_src/HelpersOperationBinarySub.c +229 -8
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +8 -2
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +162 -10
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +5 -5
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +20 -20
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +1 -0
- nuitka/build/static_src/HelpersOperationInplaceMod.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceMult.c +11 -6
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +11 -6
- nuitka/build/static_src/HelpersOperationInplacePow.c +20 -20
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +4 -4
- nuitka/build/static_src/HelpersOperationInplaceSub.c +163 -10
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +6 -1
- nuitka/build/static_src/HelpersProfiling.c +1 -1
- nuitka/build/static_src/HelpersRaising.c +255 -310
- nuitka/build/static_src/HelpersStrings.c +1 -1
- nuitka/build/static_src/HelpersTuples.c +1 -1
- nuitka/build/static_src/HelpersTypes.c +98 -2
- nuitka/build/static_src/MainProgram.c +117 -29
- nuitka/build/static_src/MetaPathBasedLoader.c +18 -19
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +134 -11
- nuitka/build/static_src/OnefileBootstrap.c +6 -1
- nuitka/code_generation/AsyncgenCodes.py +2 -6
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +269 -167
- nuitka/code_generation/BuiltinCodes.py +9 -1
- nuitka/code_generation/CallCodes.py +16 -16
- nuitka/code_generation/CodeGeneration.py +14 -2
- nuitka/code_generation/CodeHelperSelection.py +1 -1
- nuitka/code_generation/CodeHelpers.py +4 -1
- nuitka/code_generation/CodeObjectCodes.py +2 -2
- nuitka/code_generation/ComparisonCodes.py +13 -2
- nuitka/code_generation/ComparisonHelperDefinitions.py +23 -8
- nuitka/code_generation/Contexts.py +28 -16
- nuitka/code_generation/CoroutineCodes.py +2 -6
- nuitka/code_generation/DictCodes.py +3 -3
- nuitka/code_generation/ErrorCodes.py +34 -50
- nuitka/code_generation/ExceptionCodes.py +165 -96
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +25 -10
- nuitka/code_generation/FrameCodes.py +4 -11
- nuitka/code_generation/FunctionCodes.py +2 -6
- nuitka/code_generation/GeneratorCodes.py +2 -6
- nuitka/code_generation/GlobalConstants.py +8 -2
- nuitka/code_generation/GlobalsLocalsCodes.py +2 -2
- nuitka/code_generation/IteratorCodes.py +67 -54
- nuitka/code_generation/LineNumberCodes.py +1 -3
- nuitka/code_generation/ModuleCodes.py +28 -4
- nuitka/code_generation/OperationCodes.py +51 -20
- nuitka/code_generation/PackageResourceCodes.py +37 -0
- nuitka/code_generation/RaisingCodes.py +164 -90
- nuitka/code_generation/Reports.py +13 -5
- nuitka/code_generation/ReturnCodes.py +2 -16
- nuitka/code_generation/TryCodes.py +12 -24
- nuitka/code_generation/TypeAliasCodes.py +48 -0
- nuitka/code_generation/VariableCodes.py +99 -40
- nuitka/code_generation/VariableDeclarations.py +8 -8
- nuitka/code_generation/YieldCodes.py +1 -1
- nuitka/code_generation/c_types/CTypeBases.py +10 -2
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +3 -0
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +3 -4
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +70 -25
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +1 -1
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +16 -6
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesConstants.py +11 -3
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +15 -16
- nuitka/code_generation/templates/CodeTemplatesFrames.py +18 -10
- nuitka/code_generation/templates/CodeTemplatesFunction.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +2 -2
- nuitka/code_generation/templates/CodeTemplatesIterators.py +1 -35
- nuitka/code_generation/templates/CodeTemplatesModules.py +34 -4
- nuitka/code_generation/templates/CodeTemplatesVariables.py +73 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +3 -3
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +3 -3
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +0 -105
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +1 -2
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +7 -7
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +9 -9
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +7 -7
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +4 -4
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +1 -1
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +1 -1
- nuitka/containers/Namedtuples.py +6 -0
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/distutils/Build.py +14 -0
- nuitka/distutils/DistutilCommands.py +50 -10
- nuitka/finalizations/Finalization.py +3 -3
- nuitka/finalizations/FinalizeMarkups.py +10 -14
- nuitka/freezer/DependsExe.py +13 -3
- nuitka/freezer/DllDependenciesMacOS.py +18 -1
- nuitka/freezer/DllDependenciesWin32.py +26 -12
- nuitka/freezer/ImportDetection.py +3 -0
- nuitka/freezer/IncludedDataFiles.py +31 -8
- nuitka/freezer/IncludedEntryPoints.py +3 -2
- nuitka/freezer/Standalone.py +76 -18
- nuitka/importing/Importing.py +33 -6
- nuitka/importing/Recursion.py +12 -1
- nuitka/importing/StandardLibrary.py +57 -59
- nuitka/nodes/AsyncgenNodes.py +3 -6
- nuitka/nodes/BuiltinIteratorNodes.py +1 -1
- nuitka/nodes/BuiltinRefNodes.py +14 -30
- nuitka/nodes/ChildrenHavingMixins.py +439 -46
- nuitka/nodes/ConditionalNodes.py +3 -2
- nuitka/nodes/CoroutineNodes.py +3 -6
- nuitka/nodes/ExceptionNodes.py +102 -26
- nuitka/nodes/ExpressionBasesGenerated.py +288 -4
- nuitka/nodes/FrameNodes.py +22 -11
- nuitka/nodes/FunctionNodes.py +3 -3
- nuitka/nodes/GeneratorNodes.py +3 -6
- nuitka/nodes/HardImportNodesGenerated.py +182 -0
- nuitka/nodes/ImportNodes.py +2 -2
- nuitka/nodes/NodeBases.py +28 -1
- nuitka/nodes/NodeMakingHelpers.py +71 -50
- nuitka/nodes/OperatorNodesUnary.py +128 -3
- nuitka/nodes/OsSysNodes.py +37 -6
- nuitka/nodes/OutlineNodes.py +2 -2
- nuitka/nodes/StatementBasesGenerated.py +0 -2
- nuitka/nodes/StatementNodes.py +8 -7
- nuitka/nodes/SubscriptNodes.py +1 -1
- nuitka/nodes/TypeNodes.py +28 -1
- nuitka/nodes/shapes/BuiltinTypeShapes.py +24 -7
- nuitka/nodes/shapes/ShapeMixins.py +17 -0
- nuitka/nodes/shapes/StandardShapes.py +53 -1
- nuitka/optimizations/BytecodeDemotion.py +2 -1
- nuitka/plugins/PluginBase.py +64 -22
- nuitka/plugins/Plugins.py +6 -3
- nuitka/plugins/standard/AntiBloatPlugin.py +23 -12
- nuitka/plugins/standard/ImplicitImports.py +1 -13
- nuitka/plugins/standard/KivyPlugin.py +3 -12
- nuitka/plugins/standard/MatplotlibPlugin.py +12 -1
- nuitka/plugins/standard/MultiprocessingPlugin.py +11 -20
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PySidePyQtPlugin.py +8 -0
- nuitka/plugins/standard/TkinterPlugin.py +0 -56
- nuitka/plugins/standard/TransformersPlugin.py +70 -275
- nuitka/plugins/standard/standard.nuitka-package.config.yml +510 -28
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +35 -2
- nuitka/reports/CompilationReportReader.py +12 -0
- nuitka/reports/Reports.py +11 -0
- nuitka/specs/BuiltinParameterSpecs.py +5 -1
- nuitka/specs/HardImportSpecs.py +7 -0
- nuitka/specs/ParameterSpecs.py +4 -4
- nuitka/tools/general/dll_report/__main__.py +10 -1
- nuitka/tools/onefile_compressor/OnefileCompressor.py +1 -1
- nuitka/tools/specialize/CTypeDescriptions.py +158 -9
- nuitka/tools/specialize/SpecializeC.py +218 -56
- nuitka/tools/testing/Common.py +70 -63
- nuitka/tools/testing/compare_with_cpython/__main__.py +3 -1
- nuitka/tools/testing/measure_construct_performance/__main__.py +1 -8
- nuitka/tools/testing/run_nuitka_tests/__main__.py +77 -11
- nuitka/tools/watch/AutoStage.py +1 -0
- nuitka/tree/Building.py +10 -37
- nuitka/tree/ComplexCallHelperFunctions.py +4 -0
- nuitka/tree/ReformulationAssertStatements.py +31 -14
- nuitka/tree/ReformulationAssignmentStatements.py +5 -1
- nuitka/tree/ReformulationClasses3.py +94 -19
- nuitka/tree/ReformulationDictionaryCreation.py +1 -0
- nuitka/tree/ReformulationFunctionStatements.py +1 -1
- nuitka/tree/ReformulationMatchStatements.py +3 -1
- nuitka/tree/ReformulationYieldExpressions.py +23 -5
- nuitka/utils/CommandLineOptions.py +27 -3
- nuitka/utils/Download.py +2 -2
- nuitka/utils/Execution.py +36 -31
- nuitka/utils/FileOperations.py +39 -54
- nuitka/utils/Importing.py +2 -14
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +9 -4
- nuitka/utils/Json.py +2 -2
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/Utils.py +17 -0
- {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka-run.cmd +0 -0
- {Nuitka_winsvc-2.4.8.data → Nuitka_winsvc-2.5.1.data}/scripts/nuitka.cmd +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-2.4.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -18,7 +18,7 @@ from nuitka.Options import isExperimental
|
|
|
18
18
|
from nuitka.plugins.YamlPluginBase import NuitkaYamlPluginBase
|
|
19
19
|
from nuitka.utils.ModuleNames import ModuleName
|
|
20
20
|
|
|
21
|
-
# spell-checker: ignore dask,numba,statsmodels,matplotlib,sqlalchemy,ipykernel
|
|
21
|
+
# spell-checker: ignore dask,numba,statsmodels,matplotlib,sqlalchemy,ipykernel,pyximport
|
|
22
22
|
|
|
23
23
|
_mode_choices = ("error", "warning", "nofollow", "allow")
|
|
24
24
|
|
|
@@ -111,6 +111,10 @@ class NuitkaPluginAntiBloat(NuitkaYamlPluginBase):
|
|
|
111
111
|
noinclude_setuptools_mode,
|
|
112
112
|
"setuptools",
|
|
113
113
|
)
|
|
114
|
+
self.handled_modules["wheel.util"] = (
|
|
115
|
+
noinclude_setuptools_mode,
|
|
116
|
+
"setuptools",
|
|
117
|
+
)
|
|
114
118
|
else:
|
|
115
119
|
self.control_tags["use_setuptools"] = True
|
|
116
120
|
|
|
@@ -267,7 +271,7 @@ form 'module_name:[%s]'."""
|
|
|
267
271
|
dest="show_changes",
|
|
268
272
|
default=False,
|
|
269
273
|
help="""\
|
|
270
|
-
Annotate what changes are by the plugin
|
|
274
|
+
Annotate what changes are done by the plugin.""",
|
|
271
275
|
)
|
|
272
276
|
|
|
273
277
|
group.add_option(
|
|
@@ -411,7 +415,7 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
|
|
|
411
415
|
replace_dst = self.evaluateExpression(
|
|
412
416
|
full_name=module_name,
|
|
413
417
|
expression=replace_code,
|
|
414
|
-
config_name="module '%s' config 'replacements'
|
|
418
|
+
config_name="module '%s' config 'replacements'" % module_name,
|
|
415
419
|
extra_context=self._getContextCode(
|
|
416
420
|
module_name=module_name, anti_bloat_config=anti_bloat_config
|
|
417
421
|
),
|
|
@@ -556,10 +560,10 @@ Error, cannot exec module '%s', context code '%s' due to: %s"""
|
|
|
556
560
|
def onFunctionBodyParsing(self, module_name, function_name, body):
|
|
557
561
|
result = False
|
|
558
562
|
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
+
for anti_bloat_config in self.config.get(module_name, section="anti-bloat"):
|
|
564
|
+
if self.evaluateCondition(
|
|
565
|
+
full_name=module_name, condition=anti_bloat_config.get("when", "True")
|
|
566
|
+
):
|
|
563
567
|
if self._onFunctionBodyParsing(
|
|
564
568
|
module_name=module_name,
|
|
565
569
|
anti_bloat_config=anti_bloat_config,
|
|
@@ -604,7 +608,7 @@ class %(class_name)s:
|
|
|
604
608
|
replacement = ast.parse(replacement).body[0]
|
|
605
609
|
|
|
606
610
|
node.body[:] = replacement.body
|
|
607
|
-
node.bases = replacement.bases
|
|
611
|
+
node.bases[:] = replacement.bases
|
|
608
612
|
|
|
609
613
|
if self.show_changes:
|
|
610
614
|
self.info(
|
|
@@ -616,10 +620,10 @@ class %(class_name)s:
|
|
|
616
620
|
def onClassBodyParsing(self, module_name, class_name, node):
|
|
617
621
|
result = False
|
|
618
622
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
+
for anti_bloat_config in self.config.get(module_name, section="anti-bloat"):
|
|
624
|
+
if self.evaluateCondition(
|
|
625
|
+
full_name=module_name, condition=anti_bloat_config.get("when", "True")
|
|
626
|
+
):
|
|
623
627
|
if self._onClassBodyParsing(
|
|
624
628
|
module_name=module_name,
|
|
625
629
|
anti_bloat_config=anti_bloat_config,
|
|
@@ -869,6 +873,13 @@ slow down compilation."""
|
|
|
869
873
|
if module_name.hasNamespace(handled_module_name):
|
|
870
874
|
return "bytecode"
|
|
871
875
|
|
|
876
|
+
# TODO: Detect effective "change_class" and "change_function"
|
|
877
|
+
# configuration for standard library modules, but often enough we are
|
|
878
|
+
# happy to let the bytecode not have the effect, but for these ones it's
|
|
879
|
+
# required. TODO: Make the compilation mode part of the config.
|
|
880
|
+
if module_name == "xmlrpc.server":
|
|
881
|
+
return "compiled"
|
|
882
|
+
|
|
872
883
|
def onModuleCompleteSet(self, module_set):
|
|
873
884
|
# TODO: Maybe have an entry point that works on the set of names
|
|
874
885
|
# instead, we are not looking at the modules, and most plugins probably
|
|
@@ -102,7 +102,7 @@ class NuitkaPluginImplicitImports(NuitkaYamlPluginBase):
|
|
|
102
102
|
for resolved in self._resolveModulePattern(v):
|
|
103
103
|
yield resolved
|
|
104
104
|
else:
|
|
105
|
-
yield v
|
|
105
|
+
yield ModuleName(v)
|
|
106
106
|
elif "*" in dependency or "?" in dependency:
|
|
107
107
|
for resolved in self._resolveModulePattern(dependency):
|
|
108
108
|
yield resolved
|
|
@@ -361,19 +361,7 @@ class NuitkaPluginImplicitImports(NuitkaYamlPluginBase):
|
|
|
361
361
|
yield item
|
|
362
362
|
|
|
363
363
|
def onModuleSourceCode(self, module_name, source_filename, source_code):
|
|
364
|
-
# Too much code here, pylint: disable=too-many-branches
|
|
365
364
|
# TODO: Move the ones that would be possible to yaml config,
|
|
366
|
-
# e.g. the numexpr hack.
|
|
367
|
-
|
|
368
|
-
if module_name == "numexpr.cpuinfo":
|
|
369
|
-
# We cannot intercept "is" tests, but need it to be "isinstance",
|
|
370
|
-
# so we patch it on the file. TODO: This is only temporary, in
|
|
371
|
-
# the future, we may use optimization that understands the right
|
|
372
|
-
# hand size of the "is" argument well enough to allow for our
|
|
373
|
-
# type too.
|
|
374
|
-
source_code = source_code.replace(
|
|
375
|
-
"type(attr) is types.MethodType", "isinstance(attr, types.MethodType)"
|
|
376
|
-
)
|
|
377
365
|
|
|
378
366
|
if module_name == "site":
|
|
379
367
|
if source_code.startswith("def ") or source_code.startswith("class "):
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
from nuitka.Options import isStandaloneMode
|
|
8
8
|
from nuitka.plugins.PluginBase import NuitkaPluginBase
|
|
9
|
-
from nuitka.utils.Utils import isMacOS, isWin32Windows
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
class NuitkaPluginKivy(NuitkaPluginBase):
|
|
@@ -64,7 +63,9 @@ except ImportError:
|
|
|
64
63
|
return info
|
|
65
64
|
|
|
66
65
|
def getImplicitImports(self, module):
|
|
67
|
-
#
|
|
66
|
+
# TODO: Move this all to yaml configuration, we now can
|
|
67
|
+
# query Kivy installation and use variables to solve some
|
|
68
|
+
# of the more difficult ones.
|
|
68
69
|
|
|
69
70
|
full_name = module.getFullName()
|
|
70
71
|
|
|
@@ -92,16 +93,6 @@ except ImportError:
|
|
|
92
93
|
yield "kivy.graphics.cgl_backend.cgl_sdl2"
|
|
93
94
|
elif full_name == "kivy.graphics.cgl_backend.cgl_glew":
|
|
94
95
|
yield "kivy.graphics.cgl_backend.cgl_gl"
|
|
95
|
-
elif full_name == "kivymd.app":
|
|
96
|
-
yield self.locateModules("kivymd.uix")
|
|
97
|
-
elif full_name == "kivy.core.clipboard":
|
|
98
|
-
if isWin32Windows():
|
|
99
|
-
yield "kivy.core.clipboard.clipboard_winctypes"
|
|
100
|
-
if isMacOS():
|
|
101
|
-
if self.locateModule("pyobjus"):
|
|
102
|
-
yield "kivy.core.clipboard.clipboard_nspaste"
|
|
103
|
-
else:
|
|
104
|
-
yield "kivy.core.clipboard.clipboard_sdl2"
|
|
105
96
|
|
|
106
97
|
def getExtraDlls(self, module):
|
|
107
98
|
"""Copy extra shared libraries or data for this installation.
|
|
@@ -8,6 +8,7 @@ import os
|
|
|
8
8
|
from nuitka.Options import isStandaloneMode
|
|
9
9
|
from nuitka.plugins.PluginBase import NuitkaPluginBase
|
|
10
10
|
from nuitka.plugins.Plugins import (
|
|
11
|
+
getActiveQtPlugin,
|
|
11
12
|
getActiveQtPluginBindingName,
|
|
12
13
|
hasActivePlugin,
|
|
13
14
|
)
|
|
@@ -76,7 +77,7 @@ from inspect import getsource
|
|
|
76
77
|
),
|
|
77
78
|
)
|
|
78
79
|
except NuitkaCalledProcessError as e:
|
|
79
|
-
self.debug("Exception during detection: %
|
|
80
|
+
self.debug("Exception during detection: %s" % str(e))
|
|
80
81
|
|
|
81
82
|
if "MPLBACKEND" not in os.environ:
|
|
82
83
|
self.sysexit(
|
|
@@ -92,6 +93,15 @@ https://matplotlib.org/stable/users/installing/environment_variables_faq.html#en
|
|
|
92
93
|
if info is None:
|
|
93
94
|
self.sysexit("Error, it seems 'matplotlib' is not installed or broken.")
|
|
94
95
|
|
|
96
|
+
# Auto correct for using tk-inter the system setting.
|
|
97
|
+
if "tk" not in info.backend.lower() and hasActivePlugin("tk-inter"):
|
|
98
|
+
info = info.replace(backend="TkAgg")
|
|
99
|
+
|
|
100
|
+
if info.backend == "QtAgg" and getActiveQtPlugin() is None:
|
|
101
|
+
self.sysexit(
|
|
102
|
+
"Error, cannot use 'QtAgg' with not plugin for Qt binding active."
|
|
103
|
+
)
|
|
104
|
+
|
|
95
105
|
return info
|
|
96
106
|
|
|
97
107
|
def getImplicitImports(self, module):
|
|
@@ -183,6 +193,7 @@ https://matplotlib.org/stable/users/installing/environment_variables_faq.html#en
|
|
|
183
193
|
if hasActivePlugin("tk-inter"):
|
|
184
194
|
return True, "Needed for tkinter matplotlib backend"
|
|
185
195
|
|
|
196
|
+
# For Qt binding, include matplotlib backend, spell-checker: ignore qtagg
|
|
186
197
|
if module_name == "matplotlib.backends.backend_qtagg":
|
|
187
198
|
if getActiveQtPluginBindingName() is not None:
|
|
188
199
|
return True, "Needed for qt matplotlib backend"
|
|
@@ -9,7 +9,7 @@ point to a "Python.exe" and won't use compiled code by default.
|
|
|
9
9
|
|
|
10
10
|
The issue applies to accelerated and standalone mode alike.
|
|
11
11
|
|
|
12
|
-
spell-checker: ignore joblib
|
|
12
|
+
spell-checker: ignore joblib,anyio
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
from nuitka import Options
|
|
@@ -51,28 +51,21 @@ class NuitkaPluginMultiprocessingWorkarounds(NuitkaPluginBase):
|
|
|
51
51
|
def createPreModuleLoadCode(module):
|
|
52
52
|
full_name = module.getFullName()
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# reusable or supports conditional replacements based on plugin activity and is
|
|
58
|
-
# always on.
|
|
59
|
-
if full_name == "multiprocessing":
|
|
60
|
-
code = """\
|
|
54
|
+
if full_name in ("multiprocessing", "anyio"):
|
|
55
|
+
yield (
|
|
56
|
+
"""\
|
|
61
57
|
import sys, os
|
|
62
|
-
sys.frozen = 1
|
|
63
58
|
argv0 = sys.argv[0]
|
|
64
59
|
if sys.platform == "win32" and not os.path.exists(argv0) and not argv0.endswith(".exe"):
|
|
65
60
|
argv0 += ".exe"
|
|
66
61
|
|
|
67
62
|
sys.executable = %s
|
|
68
63
|
sys._base_executable = sys.executable
|
|
69
|
-
"""
|
|
70
|
-
"__nuitka_binary_exe" if Options.isStandaloneMode() else "argv0"
|
|
71
|
-
)
|
|
72
|
-
return (
|
|
73
|
-
code,
|
|
64
|
+
"""
|
|
65
|
+
% ("__nuitka_binary_exe" if Options.isStandaloneMode() else "argv0"),
|
|
74
66
|
"""\
|
|
75
|
-
Monkey patching "
|
|
67
|
+
Monkey patching "%s" load environment."""
|
|
68
|
+
% full_name,
|
|
76
69
|
)
|
|
77
70
|
|
|
78
71
|
@staticmethod
|
|
@@ -80,7 +73,8 @@ Monkey patching "multiprocessing" load environment.""",
|
|
|
80
73
|
full_name = module.getFullName()
|
|
81
74
|
|
|
82
75
|
if full_name == "multiprocessing":
|
|
83
|
-
|
|
76
|
+
yield (
|
|
77
|
+
"""\
|
|
84
78
|
try:
|
|
85
79
|
from multiprocessing.forking import ForkingPickler
|
|
86
80
|
except ImportError:
|
|
@@ -99,10 +93,7 @@ def _reduce_compiled_method(m):
|
|
|
99
93
|
ForkingPickler.register(type(C().f), _reduce_compiled_method)
|
|
100
94
|
if str is bytes:
|
|
101
95
|
ForkingPickler.register(type(C.f), _reduce_compiled_method)
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
return (
|
|
105
|
-
code,
|
|
96
|
+
""",
|
|
106
97
|
"""\
|
|
107
98
|
Monkey patching "multiprocessing" for compiled methods.""",
|
|
108
99
|
)
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Copyright 2024, Kevin Rodriguez <mailto:turcioskevinr@gmail.com> find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" Plugin for Playwright.
|
|
5
|
+
|
|
6
|
+
spell-checker: ignore Playwright
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
from nuitka.Options import isStandaloneMode
|
|
12
|
+
from nuitka.plugins.PluginBase import NuitkaPluginBase
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class NuitkaPluginPlaywright(NuitkaPluginBase):
|
|
16
|
+
"""This class represents the main logic of the plugin."""
|
|
17
|
+
|
|
18
|
+
plugin_name = "playwright"
|
|
19
|
+
plugin_desc = "Required by 'playwright' package."
|
|
20
|
+
|
|
21
|
+
def __init__(self, include_browsers):
|
|
22
|
+
self.include_browsers = list(include_browsers)
|
|
23
|
+
self.installed_browsers = None
|
|
24
|
+
|
|
25
|
+
@staticmethod
|
|
26
|
+
def isAlwaysEnabled():
|
|
27
|
+
return True
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def isRelevant():
|
|
31
|
+
return isStandaloneMode()
|
|
32
|
+
|
|
33
|
+
@classmethod
|
|
34
|
+
def addPluginCommandLineOptions(cls, group):
|
|
35
|
+
group.add_option(
|
|
36
|
+
"--playwright-include-browser",
|
|
37
|
+
action="append",
|
|
38
|
+
dest="include_browsers",
|
|
39
|
+
default=[],
|
|
40
|
+
help="""\
|
|
41
|
+
Playwright browser to include. Can be specified multiple times. use "all" to include all installed browsers.
|
|
42
|
+
""",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
def _getPlaywrightPath(self):
|
|
46
|
+
"""Determine the path of the playwright module."""
|
|
47
|
+
info = self.locateModule("playwright")
|
|
48
|
+
|
|
49
|
+
if info is None:
|
|
50
|
+
self.sysexit("Error, it seems 'playwright' is not installed or broken.")
|
|
51
|
+
|
|
52
|
+
return info
|
|
53
|
+
|
|
54
|
+
def _getPlaywrightRegistryDirectory(self):
|
|
55
|
+
# this is a port of playwright's JS script which determines where the browsers are installed
|
|
56
|
+
|
|
57
|
+
env_defined = os.environ.get("PLAYWRIGHT_BROWSERS_PATH")
|
|
58
|
+
path_home = os.path.expanduser("~")
|
|
59
|
+
playwright_module_path = self._getPlaywrightPath()
|
|
60
|
+
|
|
61
|
+
result = os.path.join(
|
|
62
|
+
playwright_module_path, "driver", "package", ".local-browsers"
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
# TODO: This is seemingly a test for non-empty directory, which we should
|
|
66
|
+
# then add to FileOperations.
|
|
67
|
+
|
|
68
|
+
if os.path.exists(result) and next(os.scandir(result), False):
|
|
69
|
+
return result
|
|
70
|
+
elif env_defined == "0":
|
|
71
|
+
return result
|
|
72
|
+
elif env_defined:
|
|
73
|
+
result = os.path.normpath(env_defined)
|
|
74
|
+
else:
|
|
75
|
+
cache_directory = ""
|
|
76
|
+
if os.name == "posix":
|
|
77
|
+
cache_directory = os.environ.get(
|
|
78
|
+
"XDG_CACHE_HOME", os.path.join(path_home, ".cache")
|
|
79
|
+
)
|
|
80
|
+
elif os.name == "darwin":
|
|
81
|
+
cache_directory = os.path.join(path_home, "Library", "Caches")
|
|
82
|
+
elif os.name == "nt":
|
|
83
|
+
cache_directory = os.environ.get(
|
|
84
|
+
"LOCALAPPDATA", os.path.join(path_home, "AppData", "Local")
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
result = os.path.join(cache_directory, "ms-playwright")
|
|
88
|
+
|
|
89
|
+
if not os.path.isabs(result):
|
|
90
|
+
init_cwd = os.environ.get("INIT_CWD") or os.getcwd()
|
|
91
|
+
result = os.path.join(os.path.abspath(init_cwd), result)
|
|
92
|
+
|
|
93
|
+
return result
|
|
94
|
+
|
|
95
|
+
def getInstalledPlaywrightBrowsers(self):
|
|
96
|
+
registry_directory = self._getPlaywrightRegistryDirectory()
|
|
97
|
+
if not os.path.exists(registry_directory):
|
|
98
|
+
return
|
|
99
|
+
|
|
100
|
+
# TODO: Seems useless use of os.scandir, our helper for listing a directory
|
|
101
|
+
# would be better to use.
|
|
102
|
+
browsers_installed = [
|
|
103
|
+
browser
|
|
104
|
+
for browser in os.scandir(registry_directory)
|
|
105
|
+
if browser.name != ".links"
|
|
106
|
+
]
|
|
107
|
+
self.installed_browsers = {}
|
|
108
|
+
for browser in browsers_installed:
|
|
109
|
+
self.installed_browsers[browser.name] = browser
|
|
110
|
+
|
|
111
|
+
def considerDataFiles(self, module):
|
|
112
|
+
|
|
113
|
+
if module.getFullName() != "playwright":
|
|
114
|
+
return
|
|
115
|
+
|
|
116
|
+
if not self.include_browsers:
|
|
117
|
+
|
|
118
|
+
self.sysexit(
|
|
119
|
+
"No browsers included. Use the option '--playwright-include-browser=browser_name' to include one. Use 'all' to include all installed ones." # pylint: disable=C0301
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
self.getInstalledPlaywrightBrowsers()
|
|
123
|
+
|
|
124
|
+
if not self.installed_browsers:
|
|
125
|
+
self.sysexit(
|
|
126
|
+
"Error, no browsers found in the registry, if you're using playwright, make sure to install a browser."
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
self.info("Including browsers: %s" % ", ".join(self.include_browsers))
|
|
130
|
+
if "all" in self.include_browsers:
|
|
131
|
+
self.include_browsers = self.installed_browsers
|
|
132
|
+
elif "ffmpeg" not in self.include_browsers and any(
|
|
133
|
+
browser.startswith("chrom") for browser in self.include_browsers
|
|
134
|
+
):
|
|
135
|
+
for browser in self.installed_browsers:
|
|
136
|
+
if "ffmpeg" in self.installed_browsers[browser].name:
|
|
137
|
+
self.include_browsers.append(browser)
|
|
138
|
+
self.info(
|
|
139
|
+
"Including 'ffmpeg' for chromium-based browser. It is required by playwright."
|
|
140
|
+
)
|
|
141
|
+
break
|
|
142
|
+
|
|
143
|
+
for browser in self.include_browsers:
|
|
144
|
+
if browser not in self.installed_browsers:
|
|
145
|
+
msg = (
|
|
146
|
+
"Error, requested to include browser '%s' that was not found, the list of installed ones is '%s'."
|
|
147
|
+
% (
|
|
148
|
+
browser,
|
|
149
|
+
", ".join(self.installed_browsers),
|
|
150
|
+
)
|
|
151
|
+
)
|
|
152
|
+
self.sysexit(msg)
|
|
153
|
+
|
|
154
|
+
msg = "Including '%s' from '%s'." % (
|
|
155
|
+
browser,
|
|
156
|
+
self.installed_browsers[browser].path,
|
|
157
|
+
)
|
|
158
|
+
self.info(msg)
|
|
159
|
+
|
|
160
|
+
yield self.makeIncludedDataDirectory(
|
|
161
|
+
source_path=self.installed_browsers[browser],
|
|
162
|
+
dest_path=os.path.join(
|
|
163
|
+
"playwright", "driver", "package", ".local-browsers", browser
|
|
164
|
+
),
|
|
165
|
+
reason="Playwright browser '%s'" % browser,
|
|
166
|
+
tags="playwright",
|
|
167
|
+
raw=True,
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
172
|
+
# integrates with CPython, but also works on its own.
|
|
173
|
+
#
|
|
174
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
175
|
+
# you may not use this file except in compliance with the License.
|
|
176
|
+
# You may obtain a copy of the License at
|
|
177
|
+
#
|
|
178
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
179
|
+
#
|
|
180
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
181
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
182
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
183
|
+
# See the License for the specific language governing permissions and
|
|
184
|
+
# limitations under the License.
|
|
@@ -72,6 +72,14 @@ class NuitkaPluginQtBindingsPluginBase(NuitkaPluginBase):
|
|
|
72
72
|
if "sensible" in include_qt_plugins:
|
|
73
73
|
include_qt_plugins.remove("sensible")
|
|
74
74
|
|
|
75
|
+
for include_qt_plugin in include_qt_plugins:
|
|
76
|
+
if include_qt_plugin not in ("qml", "all") and not self.hasPluginFamily(
|
|
77
|
+
include_qt_plugin
|
|
78
|
+
):
|
|
79
|
+
self.sysexit(
|
|
80
|
+
"Error, there is no Qt plugin family '%s'." % include_qt_plugin
|
|
81
|
+
)
|
|
82
|
+
|
|
75
83
|
self.qt_plugins = sensible_qt_plugins
|
|
76
84
|
self.qt_plugins.update(include_qt_plugins)
|
|
77
85
|
|
|
@@ -11,7 +11,6 @@ from nuitka.Options import isStandaloneMode, shallCreateAppBundle
|
|
|
11
11
|
from nuitka.plugins.PluginBase import NuitkaPluginBase
|
|
12
12
|
from nuitka.PythonFlavors import isHomebrewPython
|
|
13
13
|
from nuitka.PythonVersions import getSystemPrefixPath, getTkInterVersion
|
|
14
|
-
from nuitka.utils.FileOperations import listDllFilesFromDirectory, relpath
|
|
15
14
|
from nuitka.utils.Utils import isMacOS, isWin32Windows
|
|
16
15
|
|
|
17
16
|
# spell-checker: ignore tkinterdnd,tkdnd,tcltk
|
|
@@ -135,34 +134,6 @@ override it here. Default is automatic detection.""",
|
|
|
135
134
|
The Tcl library dir. See comments for Tk library dir.""",
|
|
136
135
|
)
|
|
137
136
|
|
|
138
|
-
@staticmethod
|
|
139
|
-
def _getTkinterDnDPlatformDirectory():
|
|
140
|
-
# From their code:
|
|
141
|
-
import platform
|
|
142
|
-
|
|
143
|
-
if platform.system() == "Darwin":
|
|
144
|
-
return "osx64"
|
|
145
|
-
elif platform.system() == "Linux":
|
|
146
|
-
return "linux64"
|
|
147
|
-
elif platform.system() == "Windows":
|
|
148
|
-
return "win64"
|
|
149
|
-
else:
|
|
150
|
-
return None
|
|
151
|
-
|
|
152
|
-
def _considerDataFilesTkinterDnD(self, module):
|
|
153
|
-
platform_rep = self._getTkinterDnDPlatformDirectory()
|
|
154
|
-
|
|
155
|
-
if platform_rep is None:
|
|
156
|
-
return
|
|
157
|
-
|
|
158
|
-
yield self.makeIncludedPackageDataFiles(
|
|
159
|
-
package_name="tkinterdnd2",
|
|
160
|
-
package_directory=module.getCompileTimeDirectory(),
|
|
161
|
-
pattern=os.path.join("tkdnd", platform_rep, "**"),
|
|
162
|
-
reason="Tcl needed for 'tkinterdnd2' usage",
|
|
163
|
-
tags="tcl",
|
|
164
|
-
)
|
|
165
|
-
|
|
166
137
|
def _getTclCandidatePaths(self):
|
|
167
138
|
# Check typical locations of the dirs
|
|
168
139
|
yield os.getenv("TCL_LIBRARY")
|
|
@@ -234,12 +205,6 @@ The Tcl library dir. See comments for Tk library dir.""",
|
|
|
234
205
|
IncludedDataFile objects.
|
|
235
206
|
"""
|
|
236
207
|
|
|
237
|
-
# Extra TCL providing module go here:
|
|
238
|
-
if module.getFullName() == "tkinterdnd2.TkinterDnD":
|
|
239
|
-
yield self._considerDataFilesTkinterDnD(module)
|
|
240
|
-
|
|
241
|
-
return
|
|
242
|
-
|
|
243
208
|
if not _isTkInterModule(module) or self.files_copied:
|
|
244
209
|
return
|
|
245
210
|
|
|
@@ -301,27 +266,6 @@ that works, report a bug."""
|
|
|
301
266
|
|
|
302
267
|
self.files_copied = True
|
|
303
268
|
|
|
304
|
-
def getExtraDlls(self, module):
|
|
305
|
-
if module.getFullName() == "tkinterdnd2.TkinterDnD":
|
|
306
|
-
platform_rep = self._getTkinterDnDPlatformDirectory()
|
|
307
|
-
|
|
308
|
-
if platform_rep is None:
|
|
309
|
-
return
|
|
310
|
-
|
|
311
|
-
module_directory = module.getCompileTimeDirectory()
|
|
312
|
-
|
|
313
|
-
for filename, _dll_filename in listDllFilesFromDirectory(
|
|
314
|
-
os.path.join(module_directory, "tkdnd", platform_rep)
|
|
315
|
-
):
|
|
316
|
-
dest_path = relpath(filename, module_directory)
|
|
317
|
-
yield self.makeDllEntryPoint(
|
|
318
|
-
source_path=filename,
|
|
319
|
-
dest_path=os.path.join("tkinterdnd2", dest_path),
|
|
320
|
-
module_name="tkinterdnd2",
|
|
321
|
-
package_name="tkinterdnd2",
|
|
322
|
-
reason="tkinterdnd2 package DLL",
|
|
323
|
-
)
|
|
324
|
-
|
|
325
269
|
def onModuleCompleteSet(self, module_set):
|
|
326
270
|
if str is bytes:
|
|
327
271
|
plugin_binding_name = "Tkinter"
|