hyb
2025-11-04 668edf874b4f77214a8ff4513e60e3c1a973f532
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
Ë
hñúhDãóЗddlZddlZddlZddlmZddlmZddlm    Z    eje «Z d„Z Gd„de«ZGd„d    «ZGd
„d ee«Zd „Zd „Zd„fd„Zd„Zd„Zy)éN)Úlog)Ú_check_guts_eq)ÚmisccóX—|\}}}|dvrtjj|«}|S)z°
    Return the filename used to enforce uniqueness for the given TOC entry.
 
    Parameters
    ----------
    entry : tuple
 
    Returns
    -------
    unique_name: str
    )ÚBINARYÚDATAÚ    EXTENSIONÚ
DEPENDENCY)ÚosÚpathÚnormcase)ÚentryÚnamer Útypecodes    úRH:\Change_password\venv_build\Lib\site-packages\PyInstaller/building/datastruct.pyÚ unique_namers2€ð!Ñ€Dˆ$ØÐ@Ñ@܏w‰w×Ñ Ó%ˆà €Kócóf‡—eZdZdZd ˆfd„    Zˆfd„Zˆfd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z ˆfd „Z ˆxZS) ÚTOCaÑ
    TOC (Table of Contents) class is a list of tuples of the form (name, path, typecode).
 
    typecode    name                   path                        description
    --------------------------------------------------------------------------------------
    EXTENSION   Python internal name.  Full path name in build.    Extension module.
    PYSOURCE    Python internal name.  Full path name in build.    Script.
    PYMODULE    Python internal name.  Full path name in build.    Pure Python module (including __init__ modules).
    PYZ         Runtime name.          Full path name in build.    A .pyz archive (ZlibArchive data structure).
    PKG         Runtime name.          Full path name in build.    A .pkg archive (Carchive data structure).
    BINARY      Runtime name.          Full path name in build.    Shared library.
    DATA        Runtime name.          Full path name in build.    Arbitrary files.
    OPTION      The option.            Unused.                     Python runtime option (frozen into executable).
 
    A TOC contains various types of files. A TOC contains no duplicates and preserves order.
    PyInstaller uses TOC data type to collect necessary files bundle them into an executable.
    có®•—t‰|«tjdtd¬«t «|_|r|D]}|j|«Œyy)NzFTOC class is deprecated. Use a plain list of 3-element tuples instead.é)Ú
stacklevel)ÚsuperÚ__init__ÚwarningsÚwarnÚDeprecationWarningÚsetÚ    filenamesÚappend)ÚselfÚinitlistrÚ    __class__s   €rrz TOC.__init__>sSø€Ü ‰ÑÔô     ‰ Ø TÜ Øõ    
ô ›ˆŒÙ Ø!ò #Ø— ‘ ˜EÕ"ñ #ð rcó•—t|t«s7tjd|«t    dt |«j z«‚t|«}||jvr+|jj|«t‰|-|«yy©NzTOC found a %s, not a tuplezExpected tuple, not %s.) Ú
isinstanceÚtupleÚloggerÚinfoÚ    TypeErrorÚtypeÚ__name__rrÚaddrr )r!rÚuniquer#s   €rr z
TOC.appendMspø€Ü˜%¤Ô'Ü K‰KÐ5°uÔ =ÜÐ5¼¸U» ×8LÑ8LÑLÓMÐ Mä˜UÓ#ˆà ˜Ÿ™Ñ 'Ø N‰N× Ñ ˜vÔ &Ü ‰G‰N˜5Õ !ð (rcó•—t|t«s7tjd|«t    dt |«j z«‚t|«}||jvr,|jj|«t‰|-||«yyr%) r&r'r(r)r*r+r,rrr-rÚinsert)r!Úposrr.r#s    €rr0z
TOC.insertXsrø€Ü˜%¤Ô'Ü K‰KÐ5°uÔ =ÜÐ5¼¸U» ×8LÑ8LÑLÓMÐ MܘUÓ#ˆà ˜Ÿ™Ñ 'Ø N‰N× Ñ ˜vÔ &Ü ‰G‰N˜3 Õ &ð (rcó>—t|«}|j|«|S©N©rÚextend©r!ÚotherÚresults   rÚ__add__z TOC.__add__bs€ÜT“ˆØ ‰ eÔØˆ rcó>—t|«}|j|«|Sr3r4r6s   rÚ__radd__z TOC.__radd__gs€ÜU“ˆØ ‰ dÔØˆ rcó6—|D]}|j|«Œ|Sr3©r ©r!r7rs   rÚ__iadd__z TOC.__iadd__ls"€Øò    ˆEØ K‰K˜Õ ð    àˆ rcó4—|D]}|j|«Œyr3r=r>s   rr5z
TOC.extendqs€àò    ˆEØ K‰K˜Õ ñ    rcó„—t|«}t|Dcgc]}t|«|jvsŒ|‘Œc}«Scc}wr3)rrrr>s   rÚ__sub__z TOC.__sub__vs4€äE“
ˆÜ tÖY˜e¬{¸5Ó/AÈÏÉÒ/X’EÒYÓZÐZùÒYs•=²=có:—t|«}|j|«Sr3)rrBr6s   rÚ__rsub__z TOC.__rsub__{s€ÜU“ˆØ~‰~˜dÓ#Ð#rc󦕗t|t«rL|tddd«k(r1t«|_|j    «|j |«yt d«‚||}t|«}|jj|«t|«}||jvr0|jj|«tt|3||«yy)Nz%TOC.__setitem__ doesn't handle slices) r&ÚslicerrÚclearr5ÚKeyErrorrÚremover-rrÚ __setitem__)r!ÚkeyÚvalueÚ    old_valueÚold_nameÚnew_namer#s      €rrJzTOC.__setitem__s°ø€Ü cœ5Ô !Ø”e˜D $¨Ó-Ò-ä!$£”Ø—
‘
” Ø— ‘ ˜EÔ"ØäÐFÓGÐGð˜S™    ˆIÜ" 9Ó-ˆHØ N‰N× !Ñ ! (Ô +ä" 5Ó)ˆHؘtŸ~™~Ñ-Ø—‘×"Ñ" 8Ô,Ü”c˜4Ñ,¨S°%Õ8ð.rr3)r,Ú
__module__Ú __qualname__Ú__doc__rr r0r9r;r?r5rBrDrJÚ __classcell__©r#s@rrr,s@ø„ñõ" #ô    "ô'òò
ò
ò
ò
[ò
$÷9ð9rrcó,—eZdZdZd„Zd„ZgZd„Zd„Zy)ÚTargetrcó„—ddlm}|jj|_|jxjdz c_tj
j |dd|jj|jfz«|_tj
j|j«|_
g|_ y)Nr)ÚCONFéÚworkpathz %s-%02d.toc) ÚPyInstaller.configrXr#Úinvcnumr r Újoinr,Ú tocfilenameÚbasenameÚ tocbasenameÚ dependencies)r!rXs  rrzTarget.__init__˜s‰€Ý+ð—~‘~×-Ñ-ˆŒ Ø ‰×Ò !Ñ#ÕÜŸ7™7Ÿ<™<¨¨ZÑ(8¸-È4Ï>É>×KbÑKbÐdh×dpÑdpÐJqÑ:qÓrˆÔÜŸ7™7×+Ñ+¨D×,<Ñ,<Ó=ˆÔ؈Õrcód—tjd|jj«d}t    j
|j «}|dk(r6tjd|jj|j«nF    t    j|j «}ttd„|jD«|««}|r|j||«r!|j«|j«yy#t$r#tjd|j«YŒawxYw)a7
        Check if the target need to be rebuild and if so, re-assemble.
 
        `__postinit__` is to be called at the end of `__init__` of every subclass of Target. `__init__` is meant to
        setup the parameters and `__postinit__` is checking if rebuild is required and in case calls `assemble()`
        z checking %sNrz&Building %s because %s is non existentc3ó&K—|]    }|d–—Œ y­w©rN©)Ú.0Úgs  rú    <genexpr>z&Target.__postinit__.<locals>.<genexpr>µsèø€Ò :¨!  1¥Ñ :ùs‚úBuilding because %s is bad)r(r)r#r,rÚmtimer^r`Úload_py_data_structÚdictÚzipÚ_GUTSÚ    ExceptionÚ _check_gutsÚassembleÚ
_save_guts)r!ÚdataÚ
last_builds   rÚ __postinit__zTarget.__postinit__¢sé€ô     ‰ M 4§>¡>×#:Ñ#:Ô;؈ܗZ‘Z × 0Ñ 0Ó1ˆ
Ø ˜Š?Ü K‰KÐ@À$Ç.Á.×BYÑBYÐ[_×[kÑ[kÕ lð CÜ×/Ñ/°×0@Ñ0@ÓAô
œCÑ :¨t¯z©zÔ :¸DÓAÓBát×'Ñ'¨¨jÔ9Ø M‰MŒOØ O‰OÕ ð:øô ò LÜ— ‘ Ð8¸$×:JÑ:JÖKð LúsÂDÄ)D/Ä.D/c    óê—t|«t|j«k7r!tjd|j«y|jD]"\}}|€Œ    ||||t ||«|«sŒ"yy)z?
        Returns True if rebuild/assemble is required.
        riTF)Úlenrnr(r)r`Úgetattr)r!rsrtÚattrÚfuncs     rrpzTarget._check_guts½sp€ô ˆt‹9œ˜DŸJ™J›Ò 'Ü K‰KÐ4°d×6FÑ6FÔ GØØŸ*™*ò    ‰JˆD$؈|àِD˜$˜t™*¤g¨d°DÓ&9¸:ÕFÙð     ð rc󂇗tˆfd„‰jD««}tj‰j|«y)zr
        Save the input parameters and the work-product of this run to maybe avoid regenerating it later.
        c3ó<•K—|]}t‰|d«–—Œy­wrd)rx)rfrgr!s  €rrhz$Target._save_guts.<locals>.<genexpr>Ðsøèø€Ò=¨Q”W˜T 1 Q¡4×(Ñ=ùsƒN)r'rnrÚsave_py_data_structr^)r!rss` rrrzTarget._save_gutsÌs/ø€ôÓ=°$·*±*Ô=Ó=ˆÜ × Ñ  ×!1Ñ!1°4Õ8rN)    r,rPrQr\rrurnrprrrerrrVrV•s"„Ø€Gòòð2 €Eò ó9rrVcóT‡—eZdZdZd d„ZdefdefdefdefdfZd„Zˆfd    „Zd
„Z    ˆxZ
S) ÚTreezˆ
    This class is a way of creating a TOC (Table of Contents) list that describes some or all of the files within a
    directory.
    có—tj|«tj|«||_||_||_||_|€g|_|j«y)az
        root
                The root of the tree (on the build system).
        prefix
                Optional prefix to the names of the target system.
        excludes
                A list of names to exclude. Two forms are allowed:
 
                    name
                        Files with this basename will be excluded (do not include the path).
                    *.ext
                        Any file with the given extension will be excluded.
        typecode
                The typecode to be used for all files found in this tree. See the TOC class for for information about
                the typcodes.
        N)rVrÚlistÚrootÚprefixÚexcludesrru)r!r‚rƒr„rs     rrz Tree.__init__ÙsQ€ô"    ‰˜ÔÜ  ‰ dÔØˆŒ    ØˆŒ Ø ˆŒ Ø ˆŒ Ø Ð ØˆDŒMØ ×ÑÕrr‚rƒr„r)rsNcóÄ—tj|||«ry|dg}|r¸|j«}tj|«|kDr"t
j d|j|«ytj|«D]S}tjj||«}tjj|«sŒC|j|«ŒU|rŒ¸|d|ddy)NTr‚z(Building %s because directory %s changedrsF)rVrpÚpoprrjr(r)r`r Úlistdirr r]Úisdirr )r!rsrtÚstackÚdÚnmr s       rrpzTree._check_gutsýs»€Ü × Ñ ˜d D¨*Ô 5Øðf‘ˆÙØ—    ‘    “ ˆA܏z‰z˜!‹}˜zÒ)Ü— ‘ ÐFÈ×HXÑHXÐZ[Ô\ØÜ—j‘j “mò 'Ü—w‘w—|‘| A rÓ*Ü—7‘7—=‘= Õ&Ø—L‘L Õ&ð 'ò ðv‘,ˆ‰QˆØrcó4•—||_t‰|    «|`yr3)rsrrr)r!r#s €rrrzTree._save_gutssø€àˆŒ    Ü ‰ÑÔØ ‰Ircó$—tjd|j«|j|jfg}t «}t «}|j D]9}|jd«r|j|dd«Œ)|j|«Œ;g}|rò|j«\}}tj|«D]Ä}||vrŒtjj|«d}    |    |vrŒ/tjj||«}
|r!tjj||«} n|} tjj|
«r|j!|
| f«Œ§|j!| |
|j"f«ŒÆ|rŒò||ddy)NzBuilding Tree %sÚ*rY)r(r)r`r‚rƒrr„Ú
startswithr-r†r r‡r Úsplitextr]rˆr r) r!r‰r„Ú    xexcludesrr8ÚdirrƒÚfilenameÚextÚ fullfilenameÚ resfilenames             rrqz Tree.assemblesP€Ü ‰ Ð&¨×(8Ñ(8Ô9Ø—)‘)˜TŸ[™[Ð)Ð*ˆÜ“5ˆÜ“Eˆ    Ø—M‘Mò    #ˆD؏‰˜sÔ#Ø— ‘ ˜d 1 2˜hÕ'à— ‘ ˜TÕ"ð        #ð
ˆÙØŸ)™)›+‰KˆCÜŸJ™J s›Oò NØ˜xÑ'ØÜ—g‘g×&Ñ& xÓ0°Ñ3Ø˜)Ñ#ØÜ!Ÿw™wŸ|™|¨C°Ó: ÙÜ"$§'¡'§,¡,¨v°xÓ"@‘Kà"*KÜ—7‘7—=‘= Ô.Ø—L‘L ,° Ð!<Õ=à—M‘M ;° ¸d¿m¹mÐ"LÕMð Nòð"ˆ‰Q‰r)NNNr) r,rPrQrRrrrnrprrrqrSrTs@rrrÔsHø„ñóð8
Ð Ø    >Ð"Ø    ^Ð$Ø    ^Ð$Øð  €Eòô&ö rrcó0—dddddœ}d„}t|||«S)NérrY)r
ÚSYMLINKrr    có
—|dvS)N>ÚOPTIONre©rs rÚ_type_case_normalization_fcnz3normalize_toc.<locals>._type_case_normalization_fcnAs€àð 
ð
ð    
r©Ú_normalize_toc)ÚtocÚ_TOC_TYPE_PRIORITIESrs   rÚ normalize_tocr¢5s0€ðààØñÐò
ô ˜#Ð3Ð5QÓ RÐRrcó&—ddddœ}t||«S)NrrYr)z
PYMODULE-2z
PYMODULE-1ÚPYMODULErž)r r¡s  rÚnormalize_pyz_tocr¥Js%€ðØØñ    Ðô ˜#Ð3Ó 4Ð4rcó—y)NFrerœs rú<lambda>r§Vsrcóº—g}t«}|D]¯\}}}|dk(r|j|||f«Œ!tjj    |«}||«rt j |«}n|}|j|«}    |    €    |||f||<Œ||    \}
}
} |j|d«|j| d«kDsŒ¨|||f||<Œ±|t|j««zS)Nr›r)
rlr r r ÚnormpathÚpathlibÚPurePathÚgetrÚvalues) r Útoc_type_prioritiesÚtype_case_normalization_fcnÚ options_tocÚtmp_tocÚ    dest_nameÚsrc_namerÚ    entry_keyÚexisting_entryÚ_Úexisting_typecodes             rrŸrŸVsþ€Ø€KÜ‹f€GØ),òEÑ%ˆ    8˜Xà xÒ Ø × Ñ  ¨H°hР?Ô AØ ô—G‘G×$Ñ$ YÓ/ˆ    ñ ' xÔ 0Ü×(Ñ(¨Ó3‰Ià!ˆIà Ÿ™ YÓ/ˆØ Ð !à"+¨X°xÐ!@ˆGIÒ ð'5Ñ #ˆAˆqÐ#Ø"×&Ñ& x°Ó3Ð6I×6MÑ6MÐN_ÐabÓ6cÓcØ&/°¸8Ð%D˜    Ò"ð3Eð: œ˜gŸn™nÓ.Ó/Ñ /Ð/rc
ó—t|Dcgc]\}}}|‘Œ
c}}}«}g}|D]–}|\}}}|dk(r|j|«Œ |s|j|«Œ4tjj    |«s|j|«Œet |||«}|r|j|«Œ†|j|«Œ˜|Scc}}}w)z›
    Process TOC entries and replace entries whose files are symbolic links with SYMLINK entries (provided original file
    is also being collected).
    r™)rr r r ÚislinkÚ_try_preserving_symbolic_link)r r²r³rÚall_dest_filesÚnew_tocrÚ symlink_entrys        rÚtoc_process_symbolic_linksr¾ysˀô È×MÐMÑ(E¨    °8¸Xš)ÔMÓN€Nð€GØò"ˆØ(-Ñ%ˆ    8˜Xð yÒ  Ø N‰N˜5Ô !Ø ñØ N‰N˜5Ô !Ø ôw‰w~‰~˜hÔ'Ø N‰N˜5Ô !Ø ô6°iÀÈ>ÓZˆ á Ø N‰N˜=Õ )à N‰N˜5Õ !ð1"ð4 €Nùô=NsŒ C cóz—t«}|}|}    ||vr    y|j|«tjj    |«s    ytj
|«}tjj |«r    ytjjtjj|«|«}tjj|«}tjjtjj|«|«}tjj|«}||vrtjj|«tjj|«k(rBtjj|tjj|««}||dfSŒ­)Nr™) rr-r r r¹ÚreadlinkÚisabsr]Údirnamer©ÚrealpathÚrelpath)r²r³r»Úseen_src_filesÚ ref_src_fileÚ ref_dest_fileÚsymlink_targetÚrel_links        rrºrº sO€Ü“U€Nð€LØ€Mà
à ˜>Ñ )Ø ðB ðA    ×ј<Ô(ôw‰w~‰~˜lÔ+Ø ð8 ô/Ÿ™ \Ó2ˆÜ 7‰7=‰=˜Ô (Ø ð* ô'Ÿ™Ÿ ™ ¤R§W¡W§_¡_°]Ó%CÀ^ÓTˆ ÜŸ™×(Ñ(¨Ó7ˆ ä—w‘w—|‘|¤B§G¡G§O¡O°LÓ$AÀ>ÓRˆ Ü—w‘w×'Ñ'¨ Ó5ˆ ð ˜NÑ *ôw‰w×Ñ Ó)¬R¯W©W×-=Ñ-=¸lÓ-KÒKôŸ7™7Ÿ?™?¨=¼"¿'¹'¿/¹/È)Ó:TÓUØ  (¨IÐ5Ð5ñ? r)r rªrÚ PyInstallerrÚloggingÚPyInstaller.building.utilsrÚPyInstaller.utilsrÚ    getLoggerr,r(rrrrVrr¢r¥rŸr¾rºrerrú<module>rÏs~ðó
ÛÛå&Ý5Ý"à    ˆ×    Ñ    ˜8Ó    $€òô*f9ˆ$ôf9÷R<9ñ<9ô~^ˆ64ô^òBSò*    5ñJ`ó 0òF$óN+r