hyb
2025-12-31 6cdcd01f77e11b72c323603e27ebdb85b15223c9
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
Ë
@ñúhP%ãó4—ddlmZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z ddl Z ddl mZejdkrddlmZnddlZej$dd„«Zej$    d            dd„«Z                dd„Zd    „Zeee«Zej$d
„«Zd „Zej$ej4fd „«Zej$dd efd„«Zd„ZGd„d«ZGd„dej>ej@«ZGd„dej@«Z!y)é)Ú annotationsN)ÚIterator)éé )Útarfilec#óÆK—tj«}tj|«    |–—tj|«y#tj|«wxYw­w)zµ
    >>> tmp_path = getfixture('tmp_path')
    >>> with pushd(tmp_path):
    ...     assert os.getcwd() == os.fspath(tmp_path)
    >>> assert os.getcwd() != os.fspath(tmp_path)
    N)ÚosÚgetcwdÚchdir)ÚdirÚorigs  úTH:\Change_password\venv_build\Lib\site-packages\setuptools/_vendor/jaraco/context.pyÚpushdrs>èø€ô 9‰9‹;€D܇HHˆS„MðØŠ    ä
‰øŒ‰üs‚*A!­A±A!ÁAÁA!c#óäK—|€?tjj|«jdd«jdd«}tj|«    t
j j|«}tj|d¬«5}|j|t¬«ddd«|–—tj|«y#1swYŒ#xYw#tj|«wxYw­w)až
    Get a tarball, extract it, yield, then clean up.
 
    >>> import urllib.request
    >>> url = getfixture('tarfile_served')
    >>> target = getfixture('tmp_path') / 'out'
    >>> tb = tarball(url, target_dir=target)
    >>> import pathlib
    >>> with tb as extracted:
    ...     contents = pathlib.Path(extracted, 'contents.txt').read_text(encoding='utf-8')
    >>> assert not os.path.exists(extracted)
    Nz.tar.gzÚz.tgzzr|*)ÚfileobjÚmode)ÚpathÚfilter)r    rÚbasenameÚreplaceÚmkdirÚurllibÚrequestÚurlopenrÚopenÚ
extractallÚstrip_first_componentÚshutilÚrmtree)ÚurlÚ
target_dirÚreqÚtfs    rÚtarballr%'s¾èø€ð ÐÜ—W‘W×%Ñ% cÓ*×2Ñ2°9¸bÓA×IÑIÈ&ÐRTÓUˆ
ô
‡HHˆZÔð"܏n‰n×$Ñ$ SÓ)ˆÜ \‰\ #¨EÔ 2ð    I°bØ M‰M˜zÔ2GˆMÔ H÷    IàÒä ‰ jÕ!÷        Ið    Iûô     ‰ jÕ!üs6‚AC0Á6CÂC
Â( CÂ4C0Ã
CÃCÃC-Ã-C0cóN—|jjdd«\}|_|S)Nú/é)ÚnameÚsplit)ÚmemberrÚ_s   rrrGs%€ð—[‘[×&Ñ& s¨AÓ.N€A€v„{Ø €MócóF—d„}tj|t|««S)a…
    Compose any number of dependent context managers into a single one.
 
    The last, innermost context manager may take arbitrary arguments, but
    each successive context manager should accept the result from the
    previous as a single parameter.
 
    Like :func:`jaraco.functools.compose`, behavior works from right to
    left, so the context manager should be indicated from outermost to
    innermost.
 
    Example, to create a context manager to change to a temporary
    directory:
 
    >>> temp_dir_as_cwd = _compose(pushd, temp_dir)
    >>> with temp_dir_as_cwd() as dir:
    ...     assert os.path.samefile(os.getcwd(), dir)
    có<‡‡—ˆˆfd„}tj|«S)Nc?óŠ•K—‰|i|¤Ž5}‰|«5}|–—ddd«ddd«y#1swYŒxYw#1swYyxYw­w©N©)ÚargsÚkwargsÚsavedÚresÚinnerÚouters    €€rÚcomposedz/_compose.<locals>.compose_two.<locals>.composeddsLøèø€Ù˜Ð' Ñ'ð ¨5±%¸³,ð À#Ø’    ÷ ÷ ÷ ñ ú÷ ð üs(ƒ    AŒ    7•+š7¢    A«4    °7·A¼A)Ú
contextlibÚcontextmanager)r7r8r9s`` rÚ compose_twoz_compose.<locals>.compose_twocsù€õ    ô×(Ñ(¨Ó2Ð2r-)Ú    functoolsÚreduceÚreversed)Úcmgrsr<s  rÚ_composerAOs €ò(3ô × Ñ ˜K¬°%«Ó 9Ð9r-c/óòK—tjdtd¬«|jdt«}t |i|¤Ž5}||«5}|–—ddd«ddd«y#1swYŒxYw#1swYyxYw­w)NzBtarball_context is deprecated. Use tarball or tarball_cwd instead.é©Ú
stacklevelr)ÚwarningsÚwarnÚDeprecationWarningÚpoprr%)r3r4Ú    pushd_ctxÚtballr s     rÚtarball_contextrLpssèø€ä ‡MMØLÜØõð
—
‘
˜7¤EÓ*€IÜ    $Р   !˜&Ñ    !ð U©I°eÓ,<ðÀØŠ    ÷÷÷ñú÷ðüs5‚>A7Á    A+Á    AÁA+Á    A7ÁA(    Á$A+Á+A4Á0A7có„—tjdtd¬«|dd}tddd¬    «}|j    |d«S)
a
    Given a URL or filename, infer the compression code for tar.
 
    >>> infer_compression('http://foo/bar.tar.gz')
    'z'
    >>> infer_compression('http://foo/bar.tgz')
    'z'
    >>> infer_compression('file.bz')
    'j'
    >>> infer_compression('file.xz')
    'J'
    z3infer_compression is deprecated with no replacementrCrDéþÿÿÿNÚzÚjÚJ)ÚgzÚbzÚxz)rFrGrHÚdictÚget)r!Úcompression_indicatorÚmappings   rÚinfer_compressionrY|sG€ô ‡MMØ=ÜØõð    ˜HÐܐc˜c cÔ*€Gà ;‰;Ð,¨cÓ 2Ð2r-c#óhK—tj«}    |–—||«y#||«wxYw­w)a`
    Create a temporary directory context. Pass a custom remover
    to override the removal behavior.
 
    >>> import pathlib
    >>> with temp_dir() as the_dir:
    ...     assert os.path.isdir(the_dir)
    ...     _ = pathlib.Path(the_dir).joinpath('somefile').write_text('contents', encoding='utf-8')
    >>> assert not os.path.exists(the_dir)
    N)ÚtempfileÚmkdtemp)ÚremoverÚtemp_dirs  rr^r^•s0èø€ô×ÑÓ!€HðØŠáÕø‰Õüs‚2˜%œ    2¥
/¯2Tc#óK—d|vrdnd}|«5}|d||g}|r|jd|g«ttjjd«}|r|nd}t j ||¬«|–—ddd«y#1swYyxYw­w)z 
    Check out the repo indicated by url.
 
    If dest_ctx is supplied, it should be a context manager
    to yield the target directory for the check out.
    ÚgitÚhgÚclonez--branchÚwN)Ústdout)Úextendrr    rÚdevnullÚ
subprocessÚ
check_call)    r!ÚbranchÚquietÚdest_ctxÚexeÚrepo_dirÚcmdrfrds             rÚ repo_contextro¨s„èø€ð˜C‘<‰% T€CÙ    ‹ðxؐG˜S (Ð+ˆÙ Ø J‰J˜
 FÐ+Ô ,Ü”r—w‘w—‘¨Ó,ˆÙ!‘ tˆÜ×јc¨&Õ1ØŠ÷÷ñüs‚B’A!A<Á3    BÁ<BÂBcób—tjdtd¬«tj«S)aD
    A null context suitable to stand in for a meaningful context.
 
    >>> with null() as value:
    ...     assert value is None
 
    This context is most useful when dealing with two or more code
    branches but only some need a context. Wrap the others in a null
    context to provide symmetry across all options.
    z.null is deprecated. Use contextlib.nullcontextrCrD)rFrGrHr:Ú nullcontextr2r-rÚnullrr»s*€ô ‡MMØ8ÜØõô
× !Ñ !Ó #Ð#r-cót—eZdZdZdZeffd„Zd„Zed„«Z    ed„«Z
ed„«Z d„Z d    „Z ed
œd „Zd „Zy )Ú ExceptionTrapa©
    A context manager that will catch certain exceptions and provide an
    indication they occurred.
 
    >>> with ExceptionTrap() as trap:
    ...     raise Exception()
    >>> bool(trap)
    True
 
    >>> with ExceptionTrap() as trap:
    ...     pass
    >>> bool(trap)
    False
 
    >>> with ExceptionTrap(ValueError) as trap:
    ...     raise ValueError("1 + 1 is not 3")
    >>> bool(trap)
    True
    >>> trap.value
    ValueError('1 + 1 is not 3')
    >>> trap.tb
    <traceback object at ...>
 
    >>> with ExceptionTrap(ValueError) as trap:
    ...     raise Exception()
    Traceback (most recent call last):
    ...
    Exception
 
    >>> bool(trap)
    False
    )NNNcó—||_yr1)Ú
exceptions)Úselfrvs  rÚ__init__zExceptionTrap.__init__òs    €Ø$ˆr-có—|Sr1r2©rws rÚ    __enter__zExceptionTrap.__enter__õó€Øˆ r-có —|jdS©Nr©Úexc_inforzs rÚtypezExceptionTrap.typeøó€à}‰}˜QÑÐr-có —|jdS)Nr(rrzs rÚvaluezExceptionTrap.valueür‚r-có —|jdS)NrCrrzs rÚtbzExceptionTrap.tbr‚r-cóV—|d}|xrt||j«}|r||_|Sr~)Ú
issubclassrvr€)rwr€rÚmatchess    rÚ__exit__zExceptionTrap.__exit__s/€Ø˜‰{ˆØÒ<œ: d¨D¯O©OÓ<ˆÙ Ø$ˆDŒM؈r-có,—t|j«Sr1)Úboolrrzs rÚ__bool__zExceptionTrap.__bool__ s€ÜD—I‘I‹Ðr-©Ú_testcóJ‡‡‡—tj‰«ˆˆˆfd„«}|S)a±
        Wrap func and replace the result with the truth
        value of the trap (True if an exception occurred).
 
        First, give the decorator an alias to support Python 3.8
        Syntax.
 
        >>> raises = ExceptionTrap(ValueError).raises
 
        Now decorate a function that always fails.
 
        >>> @raises
        ... def fail():
        ...     raise ValueError('failed')
        >>> fail()
        True
        cóx•—t‰j«5}‰|i|¤Žddd«‰«S#1swYŒxYwr1)rtrv)r3r4ÚtraprÚfuncrws   €€€rÚwrapperz%ExceptionTrap.raises.<locals>.wrapper!s=ø€ä˜tŸ™Ó/ð &°4ِdÐ%˜fÒ%÷ &ᘓ;Ð ÷ &ð &ús—    0°9)r=Úwraps)rwr“rr”s``` rÚraiseszExceptionTrap.raisess'ú€ô&
‰˜Ó    õ    ó
ð    ð
ˆr-cóD—|j|tj¬«S)aª
        Wrap func and replace the result with the truth
        value of the trap (True if no exception).
 
        First, give the decorator an alias to support Python 3.8
        Syntax.
 
        >>> passes = ExceptionTrap(ValueError).passes
 
        Now decorate a function that always fails.
 
        >>> @passes
        ... def fail():
        ...     raise ValueError('failed')
 
        >>> fail()
        False
        rŽ)r–ÚoperatorÚnot_)rwr“s  rÚpasseszExceptionTrap.passes)s€ð&{‰{˜4¤x§}¡}ˆ{Ó5Ð5r-N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r€Ú    Exceptionrxr{Úpropertyrr„r†rŠrrŒr–ršr2r-rrtrtÎss„ñðB €Hà#, ,ó%òðñ óð ðñ óð ðñ óð òòð%)ôó66r-rtcó—eZdZdZy)ÚsuppresszŸ
    A version of contextlib.suppress with decorator support.
 
    >>> @suppress(KeyError)
    ... def key_error():
    ...     {}['']
    >>> key_error()
    N)r›rœrržr2r-rr¢r¢?s„òr-r¢có$—eZdZdZdd„Zd„Zd„Zy)Ú on_interrupta
    Replace a KeyboardInterrupt with SystemExit(1)
 
    >>> def do_interrupt():
    ...     raise KeyboardInterrupt()
    >>> on_interrupt('error')(do_interrupt)()
    Traceback (most recent call last):
    ...
    SystemExit: 1
    >>> on_interrupt('error', code=255)(do_interrupt)()
    Traceback (most recent call last):
    ...
    SystemExit: 255
    >>> on_interrupt('suppress')(do_interrupt)()
    >>> with __import__('pytest').raises(KeyboardInterrupt):
    ...     on_interrupt('ignore')(do_interrupt)()
    có —||_||_yr1)ÚactionÚcode)rwr¦r§s   rrxzon_interrupt.__init__]s€ØˆŒ ؈    r-có—|Sr1r2rzs rr{zon_interrupt.__enter__ar|r-cóš—|tus|jdk(ry|jdk(rt|j«|‚|jdk(S)NÚignoreÚerrorr¢)ÚKeyboardInterruptr¦Ú
SystemExitr§)rwÚexctypeÚexcinstÚexctbs    rrŠzon_interrupt.__exit__dsE€Ø Ô+Ñ +¨t¯{©{¸hÒ/FØ Ø [‰[˜GÒ #ܘTŸY™YÓ'¨WÐ 4؏{‰{˜jÑ(Ð(r-N)r«r()r›rœrržrxr{rŠr2r-rr¤r¤Js„ñó$òó)r-r¤)r zstr | os.PathLikeÚreturnúIterator[str | os.PathLike]r1)r"zstr | os.PathLike | Noner±r²)r+útarfile.TarInfor±r³)"Ú
__future__rr:r=r˜r    rrgÚsysr[Úurllib.requestrrFÚtypingrÚ version_infoÚ    backportsrr;rr%rrAÚ tarball_cwdrLrYr r^rorrrtr¢ÚContextDecoratorr¤r2r-rú<module>r¼sOðÝ"ãÛÛÛ    Û ÛÛ
ÛÛÛÝð×ѐgÒÞ!ãð ×Ñò óð ð  ×Ñà04ð"Ø-ð"à ò"óð"ð>Ø ððóò:ñ<u˜gÓ&€ ð ×Ññóðò3ð2 ×ÑØ—]‘]òóðð$ ×ÑØ!¨¸òóðò$$÷&n6ñn6ôbˆz×"Ñ" J×$?Ñ$?ôô):×.Ñ.õ)r-