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
U
X±dê&ã@sdZddlZddlZddlZddlZddl    Z
ddl Z e j e jBe jBe jBe jBe jBZe je jBe jBZe
jddkr²ddlmZddlmZGdd„deƒZGdd„deƒZnddlmZdd    lmZd
d „ZeZdd d„Zdd„Z dd„Z!dd„Z"dd„Z#dd„Z$dd„Z%dd„Z&dS)zü
A helper module that can work with paths
that can refer to data inside a zipfile
 
XXX: Need to determine if isdir("zipfile.zip")
should return True or False. Currently returns
True, but that might do the wrong thing with
data-files that are zipfiles.
éNé)ÚStringIOc@seZdZdd„Zdd„ZdS)Ú    _StringIOcCs|S©N©©ÚselfrrúXd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PyInstaller/lib/modulegraph/zipio.pyÚ    __enter__$sz_StringIO.__enter__cCs | ¡dS©NF©Úclose©rÚexc_typeÚ    exc_valueÚ    tracebackrrr    Ú__exit__'sz_StringIO.__exit__N©Ú__name__Ú
__module__Ú __qualname__r
rrrrr    r#src@seZdZdd„Zdd„ZdS)Ú_BytesIOcCs|Srrrrrr    r
,sz_BytesIO.__enter__cCs | ¡dSr r rrrr    r/sz_BytesIO.__exit__Nrrrrr    r+sr)ÚBytesIOcCs®|}tj |¡r|dfSg}tj |¡}|r^||kr^tj |¡\}}| |¡tj |¡r(q^q(||krtttj|dƒ‚tj     |¡sŽttj|dƒ‚| 
¡|d  |¡  d¡fSdS)NúNo such file or directoryú/) Ú_osÚpathÚexistsÚ
splitdriveÚsplitÚappendÚIOErrorÚ_errnoÚENOENTÚisfileÚreverseÚjoinÚstrip)rÚ    full_pathÚrestÚrootZbnrrr    Ú_locate8s0   
 þ þr+Úrc    Csd|ksd|kr ttj|dƒ‚nd|kr6ttj|dƒ‚|}t|ƒ\}}|sTt||ƒSzt |d¡}Wn$tjk
rˆttj|dƒ‚YnXz|     |¡}Wn0tjt
fk
rÈ|  ¡ttj|dƒ‚YnX|  ¡|dkrât |ƒSt jdd    krú| d
¡}t|ƒSdS) NÚwÚazWrite access not supportedzr+r,rÚrbréÚascii)r!r"ÚEINVALr+Ú_openÚ_zipfileÚZipFileÚ
BadZipFiler#ÚreadÚKeyErrorr rÚ_sysÚ version_infoÚdecoder)rÚmoder(r)ÚzfÚdatarrr    ÚopenWsNÿÿ 
þ
þ
 
r?cCs`|}t|ƒ\}}|s*tj |¡s*t |¡Szt |d¡}Wn$tjk
r^tt    j
|dƒ‚YnXt ƒ}d}zž|  ¡D]}|dkr¢d}|  d¡d}|r | |¡qt| |¡rt||kr¾d}d}n8|t|ƒdkròd}|t|ƒdd…  d¡d}nd}|rt| |¡qtWn.tjk
r6| ¡tt    j
|dƒ‚YnX| ¡|sTtt    j
|dƒ‚t|ƒSdS)    Nr,rFTrrÚé)r+rrr$Úlistdirr4r5r6r!r"r#ÚsetÚnamelistrÚaddÚ
startswithÚlenr Úlist)rr(r)r=ÚresultÚseenÚnmÚvaluerrr    rB€s^ 
þ
 
 þ
þrBc Cs|}t|ƒ\}}|sXtj |¡}|rTzt |d¡}WdStjtfk
rRYdSXdSd}z$t |d¡}| |¡|     ¡WdSt
tjfk
r|dk    r¨|     ¡z| |d¡Wnt
k
rÎYnXYdS|d}|  ¡D]}|  |¡ræYdSqætt j|dƒ‚YnXdS)Nr,FTrr)r+rrr$r4r5r6r!Úgetinfor r8rDrFr"r#©rr(r)Úokr=rKrrr    r$¶sD    
 
 
þr$c    CsD|}t|ƒ\}}|sZtj |¡}|sVzt |d¡}Wntjtfk
rPYdSXdSdSd}zÌzt |¡}Wn$tjk
r’tt    j
|dƒ‚YnXz|  |¡Wnt k
r¶Yn
XW¢pdS|d}z|  |¡Wnt k
rêYn
XW¢<dS|  ¡D]}| |¡rüW¢dSqütt    j
|dƒ‚W5|dk    r>| ¡XdS)Nr,FTrr)r+rrÚisdirr4r5r6r!r r"r#rMr8rDrFrNrrr    rPásT  þ
  þ
rPcCsø|}t|ƒ\}}|s tj |¡Szt |¡}Wn$tjk
rRttj    |dƒ‚YnXz”z|  |¡Wnt k
rxYn
XW¢ldS|d7}z|  |¡Wnt k
r¬Yn
XW¢8dS|  ¡D]}| |¡r¾W¢dSq¾ttj    |dƒ‚W5| 
¡XdS)NrFr)r+rrÚislinkr4r5r6r!r"r#r rMr8rDrF)rr(r)r=rKrrr    rQsB  þ
 
 þrQcCs,|}t|ƒ\}}|r"ttj|dƒ‚t |¡S)Nr)r+ÚOSErrorr"r#rÚreadlink)rr(r)rrr    rS?s þrScCs|}t|ƒ\}}|s&t t |¡j¡Sd}zÒt |¡}d}z|     |¡}Wnt
k
r\YnX|dkrŽz|     |d¡}Wnt
k
rŒYnX|dkrÐ|d}|  ¡D]}|  |¡r¦qÈq¦t tj|dƒ‚tW¢0S|jd?dkròt |jd?¡W¢StW¢SW5|dk    r| ¡XdS)Nrrér)r+Ú_statÚS_IMODErÚstatÚst_moder r4r5rMr8rDrFr!r"r#Ú_DFLT_DIR_MODEÚ external_attrÚ_DFLT_FILE_MODE©rr(r)r=ÚinforKrrr    ÚgetmodeKsB 
 
þ 
r^cCsü|}t|ƒ\}}|s tj |¡Sd}zÀt |¡}d}z| |¡}Wntk
rVYnX|dkrˆz| |d¡}Wntk
r†YnX|dkrÒ|d}|     ¡D]}| 
|¡r qÂq t t j |dƒ‚tj |¡W¢St |jd¡W¢S|dk    rö| ¡XdS)Nrr)rréÿÿÿÿ)r+rrÚgetmtimer r4r5rMr8rDrFr!r"r#Ú_timeÚmktimeÚ    date_timer\rrr    r`ys>  
 
þr`)r,)'Ú__doc__ÚosrÚzipfiler4Úerrnor"ÚtimeraÚsysr9rWrUÚS_IXOTHÚS_IXGRPÚS_IXUSRÚS_IROTHÚS_IRGRPÚS_IRUSRrYr[r:rZ _BaseStringIOZ _BaseBytesIOrrÚiorr+r?r3rBr$rPrQrSr^r`rrrr    Ú<module>sR    ÿþýüûÿ    ÿþÿ        
)6+3+ .