zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
ß=®d^ã@s@dZddlZddlZddlZddlZddlZddlZddlmZ    ddl
m Z ddl m Z ddlmZddlmZdd    lmZdd
lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZe d¡ZejdkrîdZdZndZdZGdd„dej eƒZ!d5ej"e#ej$e%ddœdd„Z&ej"e#e#ej$e%ddœdd„Z'ej"e#e#ej$e%ddœdd „Z(ej)ej"e#ej$e%dd!œd"d#„Z*Gd$d%„d%ƒZ+d6e#e%e%e,d'œd(d)„Z-e#ej$e.d*œd+d,„Z/erddl0Z0ej1ej2e,d-œd.d/„ƒZ3e%e#d0œd1d2„Z4n:ddl5Z5ddl6Z6ej1ej2e,d-œd3d/„ƒZ3e%e#d0œd4d2„Z4dS)7z¿
This module contains implementations for the termui module. To keep the
import time of Click down, some infrequently used functionality is
placed in this module and only imported as needed.
éN)Úgettext)ÚStringIO)Ú TracebackTypeé)Ú_default_text_stdout)ÚCYGWIN)Úget_best_encoding)Úisatty)Ú open_stream)Ú
strip_ansi)Úterm_len)ÚWIN)ÚClickException)ÚechoÚVÚntú Ú
z [?25lz[?25h
c@sÄeZdZd6ejejeejeeeeee    eje    e    ejej
ejegejefejeejej eje    eedd
œd d „Z d dœdd„Z ejejeejeejeddœdd„Zejedœdd„Zedœdd„Zddœdd„Zeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZedœd d!„Zedœd"d#„Zedœd$d%„Zedœd&d'„Zedœd(d)„Zddœd*d+„Z edd,œd-d.„Z!d7eejedd/œd0d1„Z"ddœd2d3„Z#ejedœd4d5„Z$dS)8Ú ProgressBarNú#ú ú%(bar)sú  TFré)ÚiterableÚlengthÚ    fill_charÚ
empty_charÚ bar_templateÚinfo_sepÚshow_etaÚ show_percentÚshow_posÚitem_show_funcÚlabelÚfileÚcolorÚupdate_min_stepsÚwidthÚreturncCs@||_||_||_||_||_||_|    |_|
|_| p6d|_| dkrVt    ƒ} | dkrVt
ƒ} | |_ | |_ ||_ d|_||_|dk|_|dkr¨ddlm}||dƒ}|dkr¨d}|dkrÖ|dkrÀtdƒ‚t tjtt|ƒ¡}t|ƒ|_||_d|_g|_||t ¡|_|_d|_ d|_!d|_"d|_#d|_$t%|j ƒ |_&d|_'dS)NÚr)Ú length_hintéÿÿÿÿziterable or length is requiredF)(rrrrr r!r"r#r$rrr%r&r'Ú_completed_intervalsr(Ú    autowidthÚoperatorr+Ú    TypeErrorÚtÚcastÚIterablerÚrangeÚiterrÚposÚavgÚtimeÚstartÚlast_etaÚ    eta_knownÚfinishedÚ    max_widthÚenteredÚ current_itemr    Ú    is_hiddenÚ
_last_line)Úselfrrrrrrr r!r"r#r$r%r&r'r(r+©rCúId:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\click/_termui_impl.pyÚ__init__&sT
 
 
 
zProgressBar.__init__zProgressBar[V]©r)cCsd|_| ¡|S)NT)r>Úrender_progress©rBrCrCrDÚ    __enter__kszProgressBar.__enter__)Úexc_typeÚ    exc_valueÚtbr)cCs | ¡dS©N)Ú render_finish)rBrJrKrLrCrCrDÚ__exit__pszProgressBar.__exit__cCs|jstdƒ‚| ¡| ¡S)Nú.You need to use progress bars in a with block.)r>Ú RuntimeErrorrGÚ    generatorrHrCrCrDÚ__iter__xszProgressBar.__iter__cCs tt|ƒƒSrM)Únextr5rHrCrCrDÚ__next__~szProgressBar.__next__cCs$|jr
dS|j t¡|j ¡dSrM)r@r%ÚwriteÚ    AFTER_BARÚflushrHrCrCrDrN†s zProgressBar.render_finishcCs(|jr
dSt|jt|jpdƒp ddƒS)Nçð?r)r<Úminr6ÚfloatrrHrCrCrDÚpctŒszProgressBar.pctcCs"|js
dSt|jƒtt|jƒƒS©Ng)r7Úsumr[ÚlenrHrCrCrDÚtime_per_iteration’szProgressBar.time_per_iterationcCs&|jdk    r"|js"|j|j|jSdSr])rr<r`r6rHrCrCrDÚeta˜szProgressBar.etacCs†|jr‚t|jƒ}|d}|d}|d}|d}|d}|d}|dkrh|›d|d›d|d›d|d›S|d›d|d›d|d›SdS)Né<érzd Ú02ú:r*)r;Úintra)rBr1ÚsecondsÚminutesÚhoursrCrCrDÚ
format_etažs
 zProgressBar.format_etacCs(t|jƒ}|jdk    r$|d|j›7}|S)Nú/)Ústrr6r)rBr6rCrCrDÚ
format_pos­s
 
zProgressBar.format_poscCst|jdƒd›ddd…S)Nédz 4ú%r)rfr\rHrCrCrDÚ
format_pct³szProgressBar.format_pctcCs¤|jdk    r:t|j|jƒ}|j|}||j|j|7}nf|jrN|j|j}nRt|j|jp\dƒ}|jdkr–|j|tt     
|j |j¡dd|jƒ<d  |¡}|S)Nrrg@gà?r*) rrfr\r(rrr<Úlistr`ÚmathÚcosr6Újoin)rBZ
bar_lengthÚbarÚcharsrCrCrDÚ
format_bar¶s$
 
 
ûÿÿÿ
zProgressBar.format_barcCs¶|j}g}|jdk    r$|dkr$|j }|jr8| | ¡¡|rJ| | ¡¡|jrj|jrj|jsj| |     ¡¡|j
dk    r’| 
|j ¡}|dk    r’| |¡|j |j | ¡|j |¡dœ ¡S)N)r$ruÚinfo)r!rr"Úappendrmrpr r;r<rjr#r?rr$rwrrtÚrstrip)rBr!Z    info_bitsZ    item_inforCrCrDÚformat_progress_lineÉs*
 
 
ýÿÿz ProgressBar.format_progress_linec    CsBddl}|jr:|j|jkr6|j|_t|j|j|jddSg}|jrž|j}d|_t    | 
¡ƒ}t d|  ¡j |ƒ}||kr˜| t¡| d|j¡||_||_|j}|jdk    r´|j}| t¡| 
¡}t    |ƒ}|jdksâ|j|krè||_| |¡| d||¡d |¡}||jkr>||_t||j|jdd|j ¡dS)Nr)r%r&rr*F)r%r&Únl)Úshutilr@rAr$rr%r&r.r(r r{ÚmaxÚget_terminal_sizeÚcolumnsryÚ
BEFORE_BARr=rtrX)    rBr}ÚbufZ    old_widthZclutter_lengthZ    new_widthZ clear_widthÚlineZline_lenrCrCrDrGäs@  
 
 
 
 
 zProgressBar.render_progress)Ún_stepsr)cCsš|j|7_|jdk    r*|j|jkr*d|_t ¡|jdkr@dSt ¡|_|jrft ¡|j|j}nt ¡|j}|jdd…|g|_|jdk    |_dS)NTrYiúÿÿÿ)r6rr<r8r:r9r7r;)rBr„ÚsteprCrCrDÚ    make_steps
zProgressBar.make_step)r„r?r)cCsF|dk    r||_|j|7_|j|jkrB| |j¡| ¡d|_dS)aUpdate the progress bar by advancing a specified number of
        steps, and optionally set the ``current_item`` for this new
        position.
 
        :param n_steps: Number of steps to advance.
        :param current_item: Optional item to set as ``current_item``
            for the updated position.
 
        .. versionchanged:: 8.0
            Added the ``current_item`` optional parameter.
 
        .. versionchanged:: 8.0
            Only render when the number of steps meets the
            ``update_min_steps`` threshold.
        Nr)r?r-r'r†rG)rBr„r?rCrCrDÚupdate's  zProgressBar.updatecCsd|_d|_d|_dS)NFT)r;r?r<rHrCrCrDÚfinishAszProgressBar.finishccsj|jstdƒ‚|jr"|jEdHnD|jD],}||_|jdkrD| ¡|V| d¡q(| ¡| ¡dS)z¨Return a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rPNrr)    r>rQr@r5r?r-rGr‡rˆ)rBÚrvrCrCrDrRFs 
 
 zProgressBar.generator)NrrrrTNFNNNNrr)N)%Ú__name__Ú
__module__Ú __qualname__r1ÚOptionalr3rrfrlÚboolÚCallableÚTextIOrErIÚTypeÚ BaseExceptionrrOÚIteratorrSrUrNÚpropertyr[r\r`rarjrmrprwr{rGr†r‡rˆrRrCrCrCrDr%srð 
ï Eû -r)rRr&r)c    Cs8tƒ}|dkrtƒ}ttjƒr&t|ƒs2t|||ƒStj dd¡pBd     ¡}|rht
r\t |||ƒSt |||ƒStj d¡dkr„t|||ƒSt
s”tj  d¡r t |d|ƒSttdƒrÄt d    ¡d
krÄt |d |ƒSd
dl}| ¡\}}t |¡zDttdƒrt d |›d ¡d
krt |d|ƒW¢St|||ƒW¢St |¡XdS)z2Decide what method to use for paging through text.NZPAGERr*ÚTERM)ZdumbZemacsZos2zmore <Úsystemz(less) 2>/dev/nullrÚlesszmore "ú"Zmore)rrr    ÚsysÚstdinÚ
_nullpagerÚosÚenvironÚgetÚstripr Ú_tempfilepagerÚ
_pipepagerÚplatformÚ
startswithÚhasattrr–ÚtempfileÚmkstempÚcloseÚunlink)rRr&ÚstdoutZ    pager_cmdr¥ÚfdÚfilenamerCrCrDÚpagerhs0       
$r¬)rRÚcmdr&r)c     Cs,ddl}ttjƒ}| dd¡d ¡}|dkr„|ddkr„tj dd¡›d     |dd…¡›}|spd
|d<d }nd |ks€d |kr„d }|j|d |j    |d}t
  t
j |j ¡}t|ƒ}    z,|D]"}
|sÆt|
ƒ}
| |
 |    d¡¡q¶Wnttfk
rôYn
X| ¡z | ¡Wntk
r YqþXq(qþdS)zqPage through text by feeding it to another program.  Invoking a
    pager through this might support colors.
    rNrkrr,r—ÚLESSr*rú-RTÚrÚR)ÚshellršÚenvÚreplace)Ú
subprocessÚdictrœrÚrsplitÚsplitržrtÚPopenÚPIPEr1r2ÚBinaryIOršrr rVÚencodeÚOSErrorÚKeyboardInterruptr§Úwait) rRr­r&rµr³Z
cmd_detailZ
less_flagsÚcršÚencodingÚtextrCrCrDr¡‹s4
$  r¡c        Cs”ddl}| ¡\}}d |¡}|s*t|ƒ}ttjƒ}t|dƒd}| |     |¡¡W5QRXzt
  |›d|›d¡W5t
  |¡t
  |¡XdS)z<Page through text by invoking a program on a temporary file.rNr*Úwbú "r˜)r¥r¦rtr rr™r©r
rVr¼rœr§r¨r–)    rRr­r&r¥rªr«rÂrÁÚfrCrCrDr ½s 
 
 
r )ÚstreamrRr&r)cCs$|D]}|st|ƒ}| |¡qdS)z>Simply print unformatted text.  This is the ultimate fallback.N)r rV)rÆrRr&rÂrCrCrDr›Òsr›c@sxeZdZdejeejejeefeeddœdd„Zedœdd    „Z    edd
œd d „Z
ejej ejej d œdd„Z dS)ÚEditorNTú.txt)Úeditorr³Ú require_saveÚ    extensionr)cCs||_||_||_||_dSrM)rÉr³rÊrË)rBrÉr³rÊrËrCrCrDrEÝszEditor.__init__rFcCsf|jdk    r|jSdD]}tj |¡}|r|Sqtr:dSdD]"}t d|›d¡dkr>|Sq>dS)N)ZVISUALZEDITORZnotepad)zsensible-editorZvimZnanozwhich z >/dev/null 2>&1rÚvi)rÉrœrržr r–)rBÚkeyr‰rÉrCrCrDÚ
get_editorés
 
 
zEditor.get_editor)r«r)c
Cs´ddl}| ¡}d}|jr0tj ¡}| |j¡zD|j|›d|›d|dd}| ¡}|dkrrt    t
dƒj |dƒ‚Wn:t k
r®}zt    t
dƒj ||d    ƒ|‚W5d}~XYnXdS)
NrrÄr˜T)r³r²z{editor}: Editing failed)rÉz{editor}: Editing failed: {e})rÉÚe) rµrÎr³rœrÚcopyr‡r¹r¿rÚ_Úformatr½)rBr«rµrÉrrÀZ    exit_coderÏrCrCrDÚ    edit_file÷s&
 ÿÿþzEditor.edit_file)rÂr)c        CsJddl}|sd}nLt|ttfƒr&|}n8|r<| d¡s<|d7}trT| dd¡ d¡}n
| d¡}|jd|j    d\}}zÆt
  |d    ¡}|  |¡W5QRXt
 |t
j |¡t
j |¡d
f¡t
j |¡}| |¡|jrît
j |¡|krîW¢PdSt|d ƒ}| ¡}W5QRXt|ttfƒr$|W¢S| d¡ dd¡W¢St
  |¡XdS) Nrórz
z    utf-8-sigzutf-8zeditor-)ÚprefixÚsuffixrÃéÚrb)r¥Ú
isinstanceÚbytesÚ    bytearrayÚendswithr r´r¼r¦rËrœr¨ÚfdopenrVÚutimeÚpathÚgetatimeÚgetmtimerÓrÊÚopenÚreadÚdecode)    rBrÂr¥ÚdatarªÚnamerÅÚ    timestampr‰rCrCrDÚedit s2
$ 
 z Editor.edit)NNTrÈ) rŠr‹rŒr1rrlÚMappingrŽrErÎrÓÚAnyStrrèrCrCrCrDrÇÜsûú rÇF)Úurlr¿Úlocater)c
CsÚddl}ttdœdd„}tjdkr€dg}|r6| d¡|rD| d¡| ||ƒ¡td    d
ƒ}z|j||d  ¡W¢S| ¡XnÂt    rÚ|r¦|| 
d d ¡ƒ}d|›d }n*| 
d d ¡}|rºdnd }d|›d|›d }t   |¡St rB|r t j ||ƒ 
d d ¡¡}d|›d }n,| 
d d ¡}|r"dnd }d|›d|›d }t   |¡SzJ|rbt j ||ƒ¡p^d}n||ƒ}| d|g¡}|rˆ| ¡WSWdStk
rÔ| d¡rÎ|sÎ|sÎddl}    |     |¡YdSYdSXdS)Nr)rër)cSs*ddlm}| d¡r&||dd…ƒ}|S)Nr)Úunquotezfile://é)Ú urllib.parserír£)rërírCrCrDÚ _unquote_file@s 
zopen_url.<locals>._unquote_fileÚdarwinrâz-Wr¯z    /dev/nullÚw)Ústderrr˜r*zexplorer /select,"z/WAITzstart z "" "z
cygstart "z-wz    cygstart rÄÚ.zxdg-open)zhttp://zhttps://r)rµrlr™r¢ryrâr§r¹r¿r r´rœr–rrßÚdirnamer½r£Ú
webbrowser)
rër¿rìrµrðÚargsÚnullZwait_strrÀrörCrCrDÚopen_url=sV
 
 
 
 
 
 
 
rù)Úchr)cCs6|dkrtƒ‚|dkr ts tƒ‚|dkr2tr2tƒ‚dS)Núúú)r¾r ÚEOFError)rúrCrCrDÚ_translate_ch_to_excys  rÿrFccs
dVdS)Nr,rCrCrCrCrDÚ raw_terminal‰sr)rr)cCs6|r tj}ntj}|ƒ}|dkr*||ƒ7}t|ƒ|S)N)úõà)ÚmsvcrtÚgetwcheÚgetwchrÿ)rÚfuncr‰rCrCrDÚgetchars 
rc cs–ttjƒstdƒ}| ¡}ntj ¡}d}zPt |¡}zt   |¡|VW5t |tj|¡tj     
¡|dk    rv|  ¡XWntjk
rYnXdS)Nz/dev/tty)r    r™ršrâÚfilenoÚtermiosÚ    tcgetattrÚ    tcsetattrZ    TCSADRAINr©rXr§ÚttyZsetrawÚerror)rÅrªZ old_settingsrCrCrDrÀs 
 
 
 
 
 
 
c
Cs^tƒN}t |d¡ ttjƒd¡}|r<ttjƒr<tj     |¡t
|ƒ|W5QR£SQRXdS)Né r´) rrœrãrärr™ršr    r©rVrÿ)rrªrúrCrCrDrÛs  )N)FF)7Ú__doc__Ú
contextlibrrrœr™r8Útypingr1rrÑÚiorÚtypesrÚ_compatrrrr    r
r r r Ú
exceptionsrÚutilsrÚTypeVarrrærrWÚGenericrr3rlrrŽr¬r¡r rr›rÇrfrùr’rÿrÚcontextmanagerr“rrr r    rCrCrCrDÚ<module>sj             
 
E # 3þ þ
a< 0