zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
U
W±d®¯ã@sDdZddlZddlZddlZddlZddlZddlZddlmZm    Z    m
Z
m Z ddlm Z ddlmZddlmZmZmZmZddlmZmZmZmZmZmZddlmZdd    lmZdd
l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'dd l(m)Z)m*Z*dd l+m,Z,ddl-m.Z.ddl/m0Z0m1Z1ddlm2Z2ddl3m4Z4m5Z5m6Z6m7Z7ddl8m9Z9e*rVddl:m;Z;e  <e=¡Z>e?dƒZ@e?dƒZAiZBejC De
dd¡ZEddddddddgZFd ZGd!d"„ZHe2jId#d$„ƒZJd%d&„ZKGd'd(„d(ejLƒZMeMjeMjNeMjOeMjeMjOBeMjeMjOBd)œZPd7d+d,„ZQGd-d.„d.eƒZRGd/d0„d0ƒZSd1d2„ZTd3d4„ZUd*d*ee    dd*fd5d6„ZVdS)8zx
Build packages using spec files.
 
NOTE: All global variables, classes and imported modules create API for .spec files.
éN)ÚDEFAULT_DISTPATHÚDEFAULT_WORKPATHÚHOMEPATHÚcompat)Úlog)Ú
pyz_crypto)ÚCOLLECTÚEXEÚMERGEÚPYZ)ÚTOCÚTargetÚTreeÚ_check_guts_eqÚ normalize_tocÚnormalize_pyz_toc)ÚBUNDLE)ÚSplash)ÚDependencyProcessor)Ú_check_guts_toc_mtimeÚ_should_include_system_binaryÚformat_binaries_and_datasÚcompile_pymoduleÚadd_suffix_to_extension)Ú PYDYLIB_NAMESÚis_win©Ú    bindepend)Úinitialize_modgraph)Úcreate_py3_base_libraryÚscan_code_for_ctypes)Úisolated)Ú absnormpathÚget_path_to_toplevel_modulesÚget_unicode_modulesÚmtime)Úcompile_glib_schema_files)Ú winmanifestÚ©NÚ PyInstallerÚloaderz    top-levelÚ conditionalZdelayedzdelayed, conditionalÚoptionalzconditional, optionalzdelayed, optionalzdelayed, conditional, optionala½
This file lists modules PyInstaller was not able to find. This does not
necessarily mean this module is required for running your program. Python and
Python 3rd-party packages include a lot of conditional or optional modules. For
example the module 'ntpath' only exists on Windows, whereas the module
'posixpath' only exists on Posix systems.
 
Types if import:
* top-level: imported at the top-level - look at these first
* conditional: imported within an if-statement
* delayed: imported within a function
* optional: imported within a try-except-statement
 
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
            tracking down the missing module yourself. Thanks!
 
cCs8t dd¡}trd|}d|}d|}t d|¡dS)NZUPXr(z--strip-loadconf z--compress-icons=0 z--best )rÚgetenvrZsetenv)Úf©r0úVd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PyInstaller/building/build_main.pyÚ setupUPXFlagsTs  r2c     CsÀddl}ddlm}ddl}ddlm}| dd¡}t|dd„d    }g}|D]b}z| |     ¡ƒ¡WqLt
k
r¬}z*d
  |t |ƒ|ƒ¡  ¡}| d ||¡W5d}~XYqLXqL| d |¡|S) zé
    Discover hook directories via pkg_resources and pyinstaller40 entry points. Perform the discovery in a subprocess
    to avoid importing the package(s) in the main process.
 
    :return: list of discovered hook directories.
    rN)Úformat_exception_only©ÚloggerZ pyinstaller40z    hook-dirscSs
|jdkS)Nz _pyinstaller_hooks_contrib.hooks)Ú module_name)Úxr0r0r1Ú<lambda>póz+discover_hook_directories.<locals>.<lambda>)Úkeyr(zFdiscover_hook_directories: Failed to process hook entry point '%s': %sz/discover_hook_directories: Hook directories: %s)ÚsysÚ    tracebackr3Ú pkg_resourcesZPyInstaller.logr5Úiter_entry_pointsÚsortedÚextendÚloadÚ    ExceptionÚjoinÚtypeÚstripÚwarningÚdebug)    r;r3r=r5Z entry_pointsZhook_directoriesÚ entry_pointÚeÚmsgr0r0r1Údiscover_hook_directories`s       " rKc     süddl}ddlm}ddlm}ddlm}g}|jrB| |j    ¡|jrl|j
rlg‰|j ‰‡‡fdd„}||_ |D]&}    z t |    ƒWqpt k
r”YqpXqp|jrì|j
r¸| dˆ¡|ˆ7}d    d
„|j d d ¡ |j¡Dƒ}
| d |
¡||
7}|j|||dS)aÓ
    Find dynamic dependencies (linked shared libraries) for the provided list of binaries.
 
    Before scanning the binaries, the function imports the packages from provided list of packages to import, to ensure
    that library search paths are properly set up (i.e., if a package sets up search paths when imported). Therefore,
    this function *must* always be called in an isolated subprocess to avoid import leaks!
 
    binaries
            List of binaries to scan for dynamic dependencies.
    binding_redirects
            List of assembly binding redirects.
    import_packages
            List of packages to import prior to scanning binaries.
 
    :return: expanded list of binaries and then dependencies.
    rNrr4)rcsˆ |¡ˆ|ƒSr))Úappend)Úpath©Z_orig_add_dll_directoryZadded_dll_directoriesr0r1Ú_pyi_add_dll_directory¨s
z8find_binary_dependencies.<locals>._pyi_add_dll_directoryz2Extra DLL search directories (AddDllDirectory): %rcSsg|] }|r|‘qSr0r0)Ú.0Ú    directoryr0r0r1Ú
<listcomp>¾sz,find_binary_dependencies.<locals>.<listcomp>ÚPATHr(z'Extra DLL search directories (PATH): %r)Ú    redirectsZxtrapath)ÚosÚPyInstaller.dependrZPyInstaller.building.build_mainr5r*rrrLÚ base_prefixZis_py38Úadd_dll_directoryÚ
__import__rBÚinfoÚenvironÚgetÚsplitÚpathsepÚ Dependencies) ÚbinariesÚbinding_redirectsZimport_packagesrUrr5rZ extra_libdirsrOÚpackageZpath_directoriesr0rNr1Úfind_binary_dependencies‚s2         rcc@s(eZdZdZe ¡Ze ¡Ze ¡ZdS)Ú_ModuleCollectionModez'
    Module collection mode flags.
    N)    Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚenumÚautor ÚPYCÚPYr0r0r0r1rdÆsrd)ÚpyzZpycÚpyzpyz+pyzpy+pyzFc        CsÄ|r
tjntj}|s|Sd}| d¡}tt|ƒƒD]2}d |d|d…¡}| |d¡}|dk    r2|}q2z t|}Wn*t    k
rœt
d|›d|›dƒ‚YnX|rÀtj|krÀ|tjN}|tjO}|S)z
    Determine the module/package collection mode for the given module name, based on the provided collection
    mode settings dictionary.
    rmÚ.Néz#Unknown module collection mode for z: ú!) rdrkr r]ÚrangeÚlenrCr\Ú_MODULE_COLLECTION_MODESÚKeyErrorÚ
ValueError)    Z    mode_dictÚnameÚ    noarchiveZ
mode_flagsÚmodeZ
name_partsÚiZmodlevelZ modlevel_moder0r0r1Ú_get_module_collection_modeØs$
 
 
r{cs(eZdZdZeej edd¡ƒeej edd¡ƒeej edd¡ƒeej edd¡ƒeej edd¡ƒhZ    d-‡fd
d „    Z
d e fd e fde fde fde fde fde fde fde fde fde fde fde fde fde fde fdde fdfZ dd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd.d+d,„Z‡ZS)/ÚAnalysisaP
    Class that performs analysis of the user's main Python scripts.
 
    An Analysis has five outputs, all TOC (Table of lists Contents) accessed as attributes of the analysis.
 
    scripts
            The scripts you gave Analysis as input, with any runtime hook scripts prepended.
    pure
            The pure Python modules.
    binaries
            The extensionmodules and their dependencies. The secondary dependencies are filtered. On Windows files from
            C:\Windows are excluded by default. On Linux/Unix only system libraries from /lib or /usr/lib are excluded.
    datas
            Data-file dependencies. These are data-file that are found to be needed by modules. They can be anything:
            plugins, font files, images, translations, etc.
    zipfiles
            The zipfiles dependencies (usually .egg files).
    Zsupportz _mountzlib.pyz useUnicode.pyzuseTK.pyz unpackTK.pyz removeTK.pyNFc    sÚtƒ ¡ddlm}g|_tj |d¡}|D]j}tj |¡sNtj     ||¡}t
|ƒ|j krjt   d|¡q0tj |¡}tj |¡sŽtd|ƒ‚|j |¡q0|jd|d<| ||j¡|_|j|d<t  dt |j¡¡tj |j¡d    tjkrdd
l}t|d ƒr| ¡g|d <|p g|_|j |d ¡g|_|rL|j |¡|jtƒ7_i|_ |rt|j  !|¡|    p|g|_"|
rØt  d¡tj     |dd¡}t#|ddd}| $d|
j%¡W5QRX|j d¡|pàg|_&g|_'g|_(g|_)g|_*g|_+g|_,g|_-g|_.|d <| |_/| |_0tj1|_2| |_3|p>i|_4|rˆt  d¡t5||dD]\}}|j) ||df¡q^t6|j)ƒ|_)|rÎt  d¡t5||dD]\}}|j, ||df¡q¤t6|j,ƒ|_,| 7¡d
S)a«
        scripts
                A list of scripts specified as file names.
        pathex
                An optional list of paths to be searched before sys.path.
        binaries
                An optional list of additional binaries (dlls, etc.) to include.
        datas
                An optional list of additional data files to include.
        hiddenimport
                An optional list of additional (hidden) modules to include.
        hookspath
                An optional list of additional paths to search for hooks. (hook-modules).
        hooksconfig
                An optional dict of config settings for hooks. (hook-modules).
        excludes
                An optional list of module or package names (their Python names, not path names) that will be
                ignored (as though they were not found).
        runtime_hooks
                An optional list of scripts to use as users' runtime hooks. Specified as file names.
        cipher
                Add optional instance of the pyz_crypto.PyiBlockCipher class (with a provided key).
        win_no_prefer_redirects
                If True, prefer not to follow version redirects when searching for Windows SxS Assemblies.
        win_private_assemblies
                If True, change all bundled Windows SxS Assemblies into Private Assemblies to enforce assembly versions.
        noarchive
                If True, do not place source files in a archive, but keep them as individual files.
        module_collection_mode
                An optional dict of package/module names and collection mode strings. Valid collection mode strings:
                'pyz' (default), 'pyc', 'py', 'pyz+py' (or 'py+pyz')
        r©ÚCONFÚspecz&Ignoring obsolete auto-added script %szscript '%s' not foundZ main_scriptÚpathexz Extending PYTHONPATH with paths
r=NÚ_initialize_master_working_setraÚ hiddenimportsz5Will encrypt Python bytecode with provided cipher keyÚworkpathzpyimod00_crypto_key.pyÚwúutf-8©Úencodingz!# -*- coding: utf-8 -*-
key = %r
ZtinyaeszAppending 'binaries' from .spec)Z
workingdirÚBINARYzAppending 'datas' from .specÚDATA)8ÚsuperÚ__init__ÚPyInstaller.configr~ÚinputsrUrMÚdirnameÚisabsrCr"Ú _old_scriptsr5rFÚnormpathÚexistsÚ
SystemExitrLÚ_extend_pathexr€rZÚpprintÚpformatr;r@Úmodulesr=Úhasattrrr‚Ú    hookspathrKÚ hooksconfigÚupdateÚcustom_runtime_hooksÚopenÚwriter:ÚexcludesÚscriptsÚpurer`ÚzipfilesÚ zipped_dataÚdatasZ dependenciesraÚwin_no_prefer_redirectsÚwin_private_assembliesÚversionÚ_python_versionrxÚmodule_collection_moderrZ __postinit__)Úselfr r€r`r¤r‚r™ršrŸZ runtime_hooksÚcipherr¥r¦rxr©r~Zspec_dirÚscriptr=Zpyi_crypto_key_pathr/rwÚpth©Ú    __class__r0r1r‹s‚1
 
 
 
 
 zAnalysis.__init__rr€r‚r™ršrŸrœr¥r¦rxr©r¨r r¡r`r¢)r£Nr¤)raNcCsRg}|D](}t d|¡t|ƒ}|r| |¡q|dk    rD| |¡dd„|DƒS)a<
        Normalize additional paths where PyInstaller will look for modules and add paths with scripts to the list of
        paths.
 
        :param spec_pathex: Additional paths defined defined in .spec file.
        :param scripts: Scripts to create executable from.
        :return: list of updated paths
        z
script: %sNcSsg|] }t|ƒ‘qSr0)r")rPÚpr0r0r1rRãsz+Analysis._extend_pathex.<locals>.<listcomp>)r5rGr#rLr@)rªZ spec_pathexr r€r¬Zscript_toplevel_dirr0r0r1r”Ës  
zAnalysis._extend_pathexcCsšt |||¡rdS|jD]"}t|ƒ|krt d|¡dSq|d|_|d|_|d|_|d|_    |d|_
|d|_ d    d
l m }|d |_|d <d S) NTzBuilding because %s changedr r¡r`r¢r£r¤rr}raF)r Ú _check_gutsrr%r5rZr r¡r`r¢r£r¤rŒr~ra)rªÚdataZ
last_buildÚfilenamer~r0r0r1r±ås
 
 
 
 
 
 
 zAnalysis._check_gutsc Csðddlm}|jD]}t d|¡qt|j|jd|_tj     
|dd¡}t ||jd|j   tj     |¡|df¡|j|jj    |j_    |j ¡t d    |j¡tj}tsÖtj     |¡rÐtj     
tj     |¡t |¡¡}q¦d
}n6tjd |d t ¡d d}tj     
|d|d d¡|_tj ¡|j  !tj"d|dfg||j#ddd
…¡trN| $¡g}|j%D]$}t d|¡|  |j &|¡¡qX|j '|j(¡|j )|¡t*|j|jj+ƒ}|j  !| ,¡¡|j  !| -¡¡| .¡|_/t d¡|j 0d¡}    |     1¡D]j\}
} t d|
¡zt2| ƒ} |j  !t3| ƒ¡Wn6t4k
rV} zt5d|
›dƒ| ‚W5d
} ~ XYnXqð|j  !dd„t6|j 7¡ƒDƒ¡|j 8|j9¡|}|j :|¡|_;t<|j;ƒ|_;|j |j ,¡7_ t=|j ƒD]‚\}\}}}|dkrâqÆt>|||ƒ\}}}tj     tj     |¡¡}|dkr6tj     tj     ?|¡¡s6tj     
d|¡}|||f|j |<qÆt<|j ƒ|_ t<|j ƒ|_ t@|j tj     
|dd¡ƒ|_ t<|j ƒ|_ tA|jBƒdksžtC‚|j D¡}|jjE F|jG¡t d|jjE¡tj     
|dd¡}|j H¡}|D]6\}
}}|d kstC‚tI|jjE|
|jJƒ}tKjL|kr2|jB  |
||f¡|d!kr@qètKjM|krª|
 Nd"tjO¡}tj     Ptj     |¡¡\}}|d#kr|tjOd#|7}n||7}|j   ||df¡tKjQ|krè|
 Nd"tjO¡}tj     Ptj     |¡¡\}}|d#krô|tjOd#7}|d$7}tR|
|||d%}|j   ||df¡qètS|jBƒ|_Bddlm}|d&}||tT|jBƒ<t d'¡|j U¡}|j  !tV WtX|j |j#|¡¡t d(¡| Y¡|_Zt<|j ƒ|_ t<|j ƒ|_ | [|j ¡trÜt\t3|j#ƒƒ|_#t d)|j#¡| ]¡| ^¡d
S)*z_
        This method is the MAIN method for finding all necessary files to be bundled.
        rr}zExcluding module '%s')rŸZuser_hook_dirsrƒzbase_library.zip)Úgraphr‰zrunning Analysis %sNÚwin32Úspecnm)rprrr)Útype_rwZprocessorArchitecturer§z .exe.manifestr()ÚmanifestrTrpz Analyzing %szLooking for ctypes DLLsÚctypesz(Scanning %s for shared libraries or dllszFailed to scan the module 'z#'. This is a bug. Please report it.css|]\}}||dfVqdS)r‰Nr0)rPÚdestÚsourcer0r0r1Ú    <genexpr>esÿz$Analysis.assemble.<locals>.<genexpr>Z    EXTENSIONz lib-dynloadZ_pyi_gschema_compilationzModule collection settings: %rZ    localpycsZPYMODULE)Nú-ror‹z.pyc)rƒÚ
code_cacher¾zLooking for dynamic librarieszLooking for eggszFound binding redirects: 
%s)_rŒr~rŸr5rGrr™r´rUrMrCrr¤rLÚbasenamer€Zset_setuptools_nspackagesrZZ tocbasenamerZpython_executablerÚislinkrŽÚreadlinkr'ZManifestZprocessor_architecturer³rÚseenÚclearr`r@r_raZwriteprettyxmlrZ
add_scriptZadd_hiddenimportsr‚Zprocess_post_graph_hooksrZ_additional_files_cacheZmake_binaries_tocZmake_datas_tocZmake_zipped_data_tocr£Zget_code_usingÚitemsr ÚsetrBÚ RuntimeErrorrZmetadata_requiredZanalyze_runtime_hooksrœZ nodes_to_tocr rÚ    enumeraterr‘r&rsr¡ÚAssertionErrorZ make_pure_tocZ_module_collection_moder›r©Zget_code_objectsr{rxrdr rlÚreplaceÚsepÚsplitextrkrrÚidZget_collected_packagesr!ÚcallrcZmake_zipfiles_tocr¢Ú_check_python_libraryÚlistÚ_write_warningsÚ_write_graph_debug)rªr~ÚmZlibzip_filenameÚpythonZ depmanifestZpriority_scriptsr¬Z    deps_procZctypes_code_objsrwÚcoZctypes_binariesÚexÚidxrºr»ÚtypecodeZ
src_parentZpure_pymodules_tocZpycs_dirr¾Zsrc_pathZ collect_modeÚ    dest_pathr¿ÚextZobj_pathZglobal_code_cache_mapZcollected_packagesr0r0r1Úassembleüsâ 
 
 ü
 ÿ 
 
 
  (  ÿ 
    
 
 
 
 
 
 
 
ÿ
 
   zAnalysis.assemblec sždd„‰ddlm}|j ¡}t|ddddT}| t¡|D]>\}}}|j |¡}t|d    |d
d      ‡fd d „|Dƒ¡|dq@W5QRXt
  d|d¡dS)z‘
        Write warnings about missing modules. Get them from the graph and use the graph to figure out who tried to
        import them.
        cSs<|r |dkrd}n|jd|jd|j}d|t|fS)NÚdirectrééz%s (%s))r,ÚfunctionZ    tryexceptÚ IMPORT_TYPES)rwZdep_infoZimptyper0r0r1Údependency_descriptionýs z8Analysis._write_warnings.<locals>.dependency_descriptionrr}Úwarnfiler„r…r†z module namedz - imported byz, c3s|]\}}ˆ||ƒVqdSr)r0)rPrwr²©ràr0r1r¼sz+Analysis._write_warnings.<locals>.<genexpr>)ÚfilezWarnings written to %sN) rŒr~r´Zmake_missing_tocrržÚWARNFILE_HEADERZ get_importersÚprintrCr5rZ)rªr~Zmiss_tocZwfÚnr°ÚstatusÚ    importersr0râr1rÐøs  
 
 úzAnalysis._write_warningsc    Cs–ddlm}t|dddd"}|j |¡t d|d¡W5QRXt ¡tj    krXdSt|d    ddd"}|j 
|¡t d
|d    ¡W5QRXdS) za
        Write a xref (in html) and with `--log-level DEBUG` a dot-drawing of the graph.
        rr}ú    xref-filer„r…r†z#Graph cross-reference written to %sNúdot-filezGraph drawing written to %s) rŒr~rr´Z create_xrefr5rZÚgetEffectiveLevelÚloggingÚDEBUGZ graphreport)rªr~Úfhr0r0r1rÑs   zAnalysis._write_graph_debugcCsv|D],\}}}|dkr|tkrt d|¡dSqt d¡t ¡}t d¡| tj     |¡|df¡t d|¡dS)z¨
        Verify presence of the Python dynamic library in the binary dependencies. Python library is an essential
        piece that has to be always included.
        rˆzUsing Python library %sNzMPython library not among binary dependencies. Performing additional search...z,Adding Python library to binary dependencies)
rr5rZrZget_python_library_pathrGrLrUrMr¿)rªr`Z    dest_nameÚsrc_namer×Z
python_libr0r0r1rÎ$s 
 
zAnalysis._check_python_librarycs‡fdd„|jDƒ|_dS)aQ
        This method may be optionally called from the spec file to exclude any system libraries from the list of
        binaries other than those containing the shell-style wildcards in list_of_exceptions. Those that match
        '*python*' or are stored under 'lib-dynload' are always treated as exceptions and not excluded.
        csg|]}t|ˆpgƒr|‘qSr0)r)rPÚentry©Úlist_of_exceptionsr0r1rR>sz5Analysis.exclude_system_libraries.<locals>.<listcomp>N)r`)rªròr0rñr1Úexclude_system_libraries7s
ÿz!Analysis.exclude_system_libraries) NNNNNNNNNFFFN)N)rerfrgrhr"rUrMrCrrr‹rrZ_GUTSr”r±rÚrÐrÑrÎróÚ __classcell__r0r0r®r1r|þsdû ñæ}r|c@seZdZdZdS)ÚExecutableBuilderz/
    Class that constructs the executable.
    N)rerfrgrhr0r0r0r1rõCsrõc    CsŽddlm}tj t |¡¡}tj t |¡¡}tj t |¡¡|d<tj |d¡\|d<|d<tj |d¡d|d<tj     |¡t
kr¦tj  t
|dtj  |¡¡}||d<tj     |¡t
krâtj  t
|dtj  |¡|d¡}ntj  ||d¡}||d<tj  |d|d¡|d    <tj  |d
|d¡|d <tj  |d |d¡|d <t ƒ|d<|rÆt d|d¡|d|fD]N}tj |¡rvt |d¡D]*}tj |¡r´t |¡n
t |¡q–qv|d|dfD]}tj|ddqÖ|dt
|d|d|d|d    |dttttttttttt dœ}z*t!|dƒ}t"| #¡|dƒ}W5QRXWn&t$k
r~t%d|›dƒ‚YnXt&||ƒdS)zB
    Build the executable according to the created SPEC file.
    rr}rZspecpathr¶Údistpathrƒz warn-%s.txtráz graph-%s.dotrêz xref-%s.htmlrér¾z1Removing temporary files and cleaning cache in %sZcachedirz/*T)Úexist_ok)ZDISTPATHrZSPECr¶ÚSPECPATHZWARNFILErƒr r|rrr    r
r rrrUZ
pyi_cryptoÚrbÚexecz Spec file "z " not found!N)'rŒr~rUrMÚabspathrZ expand_pathr]rËrŽrrCr¿Údictr5rZr’ÚglobÚisdirÚshutilÚrmtreeÚremoveÚmakedirsr r|rrr    r
r rrrrÚcompileÚreadÚFileNotFoundErrorr“rú)    rrörƒÚ clean_buildr~r­r/Zspec_namespaceÚcoder0r0r1ÚbuildJsh $
  ê rc Cs€|jddtdd|jdtdd|jdd    d
d d tj d dd¡d|jdddd|jddd
dd|jddd
d dddS)Nz
--distpathZDIRz.Where to put the bundled app (default: ./dist))ÚmetavarÚdefaultÚhelpz
--workpathzQWhere to put all the temporary work files, .log, .pyz and etc. (default: ./build))r
r z-yz --noconfirmÚ
store_trueFzFReplace output directory (default: %s) without asking for confirmationrøÚdistZSPECNAME)Úactionr
r z    --upx-dirz8Path to UPX utility (default: search the execution path)z-az--asciizHDo not include unicode encoding support (default: included if available))rr z--cleanrzCClean PyInstaller cache and remove temporary files before building.)rºrr
r )Ú add_argumentrrrUrMrC)Úparserr0r0r1Ú __add_options£sLüýÿûýüûrc Ks®ddlm}    ||    d<|     d¡dkr*g|    d<|s>|    d tƒ¡|dkrdddlm}
|     |
 |¡¡n
|     |¡|    dr|t    ƒ| dd¡|    d<| dd¡|    d    <t
||||ƒdS)
Nrr}Ú    noconfirmr‚ZhasUPXZui_adminFZ ui_uiaccessZ    ui_access) rŒr~r\r@r$ZPyInstaller.configureÚ    configurer›Z
get_configr2r) Z
pyi_configZspecfilerÚasciirörƒZupx_dirrÚkwr~rr0r0r1ÚmainËs  
r)F)WrhrýrUr•rÿrir;r*rrrrrrìZPyInstaller.archiverZPyInstaller.building.apirr    r
r ZPyInstaller.building.datastructr r rrrrZPyInstaller.building.osxrZPyInstaller.building.splashrZ#PyInstaller.building.toc_conversionrZPyInstaller.building.utilsrrrrrZPyInstaller.compatrrrVrZPyInstaller.depend.analysisrZPyInstaller.depend.utilsrr r!ZPyInstaller.utils.miscr"r#r$r%ZPyInstaller.utils.hooks.gir&ZPyInstaller.utils.win32r'Ú    getLoggerrer5rDZ
STRINGTYPEZ    TUPLETYPEZrthooksrMrCZ_init_code_pathrßrär2ZdecoraterKrcÚIntFlagrdrkrlrtr{r|rõrrrr0r0r0r1Ú<module> s„           
þ 
!D
 
 
û    
&IY+ø