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
U
Z±dL>ã@s<ddlZddlZddlZddlZddlmZddlZddlmZm    Z    m
Z
ddlm Z ddl Z ddl Z ddlmZddlmZmZmZd    d
lmZd    d lmZe jd kr²dd lmZGdd„deƒZdd„Zdd„Zdd„Zdd„Z dd„Z!dd„Z"dd„Z#dd„Z$d d!„Z%d"d#„Z&d$d%„Z'd&d'„Z(d(d)„Z)d*d+„Z*d,d-„Z+d.d/„Z,d0d1„Z-d2d3„Z.ej/j0e j1j2d4kd5d6d7d8„ƒZ3d9d:„Z4d;d<„Z5d=d>„Z6d?d@„Z7dRdBdC„Z8dDdE„Z9z ddl:Z:Wne;k
rÊdAZ<YnXdFZ<ej/j0e< dGd6Z=ee=dHdI„ƒƒZ>ee=dJdK„ƒƒZ?ee=dLdM„ƒƒZ@eej/j0edNƒ A¡ dOd6dPdQ„ƒƒZBdS)SéN)ÚPath)Ú
extract_tbÚprint_exceptionÚformat_exception)Ú_cause_messageé)Úslowé)Ú
MultiErrorÚ    concat_tbÚNonBaseMultiErroré)ÚTrioDeprecationWarning)Ú open_nursery)r é )ÚExceptionGroupcs(eZdZdZ‡fdd„Zdd„Z‡ZS)ÚNotHashableExceptionNcstƒ ¡||_dS©N)ÚsuperÚ__init__Úcode)Úselfr©Ú    __class__©úWd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/_core/tests/test_multierror.pyrs
zNotHashableException.__init__cCst|tƒsdS|j|jkS)NF)Ú
isinstancerr)rÚotherrrrÚ__eq__"s
zNotHashableException.__eq__)Ú__name__Ú
__module__Ú __qualname__rrrÚ __classcell__rrrrrs rcÃs t|ƒ‚dSr)r)rrrrÚraise_nothashable(sr#cCs
tƒdSr)Ú    raiser1_2rrrrÚraiser1,sr%cCs
tƒdSr)Ú    raiser1_3rrrrr$0sr$cCs tdƒ‚dS)NZraiser1_string)Ú
ValueErrorrrrrr&4sr&cCs
tƒdSr)Ú    raiser2_2rrrrÚraiser28sr)cCs tdƒ‚dS)NZraiser2_string)ÚKeyErrorrrrrr(<sr(cCst‚dSr)Ú    NameErrorrrrrÚraiser3@sr,c
Cs:z
|ƒWn*tk
r4}z |WY¢Sd}~XYnXdSr)Ú    Exception)ÚraiserÚexcrrrÚget_excDs
r0cCs
t|ƒjSr)r0Ú __traceback__)r.rrrÚget_tbKsr2cCsÆttƒ}ttƒ}t|ƒ}t|ƒ}t||ƒ}t|ƒ||ks>t‚t||ƒ}t|ƒ||ks\t‚ttd|ƒƒ|ksrt‚tt|dƒƒ|ksˆt‚tddƒdksšt‚tttƒƒ|ks®t‚tttƒƒ|ksÂt‚dSr)r2r%r)rr ÚAssertionError)Ztb1Ztb2Zentries1Zentries2Ztb12Ztb21rrrÚtest_concat_tbOs
 
r4c    Cs¨ttƒ}ttƒ}t|gƒ|ks"t‚t||gƒ}|j||fks@t‚dt|ƒksPt‚dt|ƒks`t‚t     t
¡tt ƒƒW5QRXt     t
¡tt ƒt gƒW5QRXdS)Nr')r0r%r)r
r3Ú
exceptionsÚstrÚreprÚpytestÚraisesÚ    TypeErrorÚobjectr*r')Úexc1Úexc2ÚmrrrÚtest_MultiErroris   r?cCs<tƒtƒf}t|ƒ}t|gƒ}||ks*t‚|j|ks8t‚dSr)r*r'r
r3r5)r5ÚaÚbrrrÚ!test_MultiErrorOfSingleMultiErrorys
 
 rBc Ãs€tdƒ}tdƒ}tƒ}||ks"t‚||ks.t‚t t¡>tƒ4IdHš}| td¡| td¡W5QIdHRXW5QRXdS)Né*i’)    rr'r3r8r9r
rZ
start_soonr#)r<r=Úexc3ZnurseryrrrÚtest_MultiErrorNotHashableƒs    rEc    CsNttdƒtƒgƒ}dd„}t t¡t ||¡}W5QRXt|tƒsJt‚dS)NrCcSst|tƒrdS|SdSr)rr'©r/rrrÚhandle_ValueError“s
z=test_MultiError_filter_NotHashable.<locals>.handle_ValueError)    r
rr'r8ÚwarnsrÚfilterrr3)ZexcsrGZ filtered_excsrrrÚ"test_MultiError_filter_NotHashables
 rJc
Cs`ttƒ}ttƒ}ttƒ}zt||gƒ‚Wn2tk
rZ}zt||gƒWY¢Sd}~XYnXdSr)r0r%r)r,r
Ú BaseException)r<r=rDZm12rrrÚ    make_treeŸs
rLcCs°|dks|dkr ||kst‚dSt|ƒt|ƒks4t‚t|jƒt|jƒksLt‚t|j|jƒt|j|jƒt|tƒr¬t    |j
ƒt    |j
ƒksŠt‚t |j
|j
ƒD]\}}t||ƒq˜dSr) r3Útyperr1Úassert_tree_eqÚ    __cause__Ú __context__rr
Úlenr5Úzip)Úm1Úm2Úe1Úe2rrrrN´s 
rNc
Cszdd„}tƒ}t||ƒt t¡t ||¡|ks8t‚W5QRXt|tƒƒtƒ}zt‚Wn>tk
ršt t¡t ||¡|ksŒt‚W5QRXYnXt|tƒƒdd„}t t¡t |tƒ¡}W5QRXt    |tƒsât‚t
|j ƒdksôt‚t    |j dt ƒs
t‚t    |j dt ƒs t‚t    |j djtƒs8t‚tƒ}t    |j dj dtƒsZt‚t|jƒt|j djƒt|j dj djƒ}dd    „}||ƒ||j dƒ||j dj dƒ||j djƒ|jdksÜt‚t|j djjƒ}||ksüt‚d
d „}tƒ}t t¡t ||¡}W5QRX||j dks@t‚d d „}    t t¡t |    tƒ¡dkslt‚W5QRXdS)NcSs|SrrrFrrrÚ null_handlerÃsz,test_MultiError_filter.<locals>.null_handlercSs"t|tƒrdSt|tƒrtƒS|Sr©rr'r*Ú RuntimeErrorrFrrrÚ simple_filter×s
 
 
z-test_MultiError_filter.<locals>.simple_filterr    rrcSstt|ƒ||jƒdSr)rrMr1rFrrrÚp÷sz!test_MultiError_filter.<locals>.pcSst|tƒrdS|Sr)rr+rFrrrÚfilter_NameErrors
z0test_MultiError_filter.<locals>.filter_NameErrorcSsdSrrrFrrrÚ
filter_allsz*test_MultiError_filter.<locals>.filter_all)rLrNr8rHrr
rIr3r'rrQr5rYr+rPr*rr1)
rWr>rZÚnew_mÚorigZorig_extractedr[Z new_extractedr\r]rrrÚtest_MultiError_filterÂsZ
   $  ÿþÿ  r`c
Cs^dd„}t t¡t |¡W5QRXW5QRXtƒ}t t¡:}t t¡$t dd„¡
|‚W5QRXW5QRXW5QRX|j|ks’t‚|j    dk    s t‚|j    j
j j dks´t‚|j    j dksÄt‚d|_    t|tƒƒt t¡&t dd„¡ tƒ‚W5QRXW5QRXdd„}t t¡8}t t¡"t |¡ tƒ‚W5QRXW5QRXW5QRX|j}t|tƒsrt‚t|jƒd    ks†t‚t|jd
tƒsœt‚t|jd tƒs²t‚|jr¾t‚|jdksÎt‚tƒ}tƒ|_t t¡:}t t¡$t d d„¡
|‚W5QRXW5QRXW5QRXt|jjtƒs:t‚tƒ}tƒ}||_t t¡:}t t¡$t d d„¡
|‚W5QRXW5QRXW5QRX|jj|ks¨t‚|jjr¶t‚dD]ž}tƒ}tƒ}||_||_tƒ}t t¡F}dd„}    t t¡(t |    ¡t||gƒ‚W5QRXW5QRXW5QRX|jj|ksDt‚|jj|ksºt‚qºdS)NcSsdSrr©Ú_rrrÚnoopsz#test_MultiError_catch.<locals>.noopcSs|SrrrFrrrÚ<lambda>#óz'test_MultiError_catch.<locals>.<lambda>Útest_MultiError_catchcSsdSrrrarrrrd/recSs"t|tƒrdSt|tƒrtƒS|SrrXrFrrrrZ2s
 
 
z,test_MultiError_catch.<locals>.simple_filterr    rrcSs|SrrrFrrrrdLrecSs|SrrrFrrrrdTre)TFcSst|tƒrdS|SdSr)rrYrFrrrÚcatch_RuntimeErroras
z1test_MultiError_catch.<locals>.catch_RuntimeError)r8rHrr
ÚcatchrLr9Úvaluer3r1Útb_frameÚf_codeÚco_nameÚtb_nextrNrrQr5rYr+Ú__suppress_context__rPr'r*rO)
rcr>ÚexcinforZr^ÚvÚcontextZsuppress_contextZ
distractorrgrrrrfsj "  $  " "   *rfÚcpythonz$Only makes sense with refcounting GC)Úreasonc Cs¦t ¡t ¡}dd„}dd„}zjt tj¡t t    ¡8t 
t ¡"t      |¡ |ƒ‚W5QRXW5QRXW5QRXt ¡tjrˆt ‚W5t |¡tj ¡XdS)NcSstttƒttƒgƒ‚dSr)r
r0r%r)rrrrÚ
make_multivszFtest_MultiError_catch_doesnt_create_cyclic_garbage.<locals>.make_multicSs0t|tƒrtƒSt|tƒr tƒSds,tdƒ‚dS)NFz)only ValueError and KeyError should exist)rr'r-r*rYr3rFrrrrZzs
 
 
zItest_MultiError_catch_doesnt_create_cyclic_garbage.<locals>.simple_filter)ÚgcZcollectZ    get_debugZ    set_debugÚgarbageÚclearZ DEBUG_SAVEALLr8r9r
rHrrhr3)Z    old_flagsrtrZrrrÚ2test_MultiError_catch_doesnt_create_cyclic_garbagens  $
rxcCsNd}tdƒ|D]8}td|ƒt |¡}| ||¡}|dk    s@t‚| ¡}qdS)Nrzlooking for pattern matches...zchecking pattern:)ÚprintÚreÚcompileÚsearchr3Úend)Z pattern_listÚstringÚoffsetÚpatternZreobjÚmatchrrrÚassert_match_in_seqŽs
 
  r‚c    CsDtddgdƒtddgdƒt t¡tddgdƒW5QRXdS)Nr@rAz xx a xx b xxz xx b xx a xx)r‚r8r9r3rrrrÚtest_assert_match_in_seq™s rƒcCs$ttƒtƒgƒ}t|ƒtks t‚dS)zf
    Test that MultiError() with at least one base exception will return a MultiError
    object.
    N)r
ÚZeroDivisionErrorÚKeyboardInterruptrMr3rFrrrÚtest_base_multierror sr†cCs2ttƒtƒgƒ}t|ƒtks t‚t|tƒs.t‚dS)zd
    Test that MultiError() without base exceptions will return a NonBaseMultiError
    object.
    N)r
r„r'rMr r3rrrFrrrÚtest_non_base_multierrorªsr‡Fc
    Csddl}t|jƒjj}ttƒjd|}ttjƒ}td| d¡ƒd|kr\|d     tj
¡}ng}|  dt |ƒ¡|  dt |jƒ¡tj
  |¡|d<td| d¡ƒ|rÐ| ¡dg}tjddd    d
d d   |¡g}ntjdt |ƒg}td |ƒtj||tjtjd}    tdƒt|    j d¡ƒ|    S)NrZtest_multierror_scriptszparent PYTHONPATH:Ú
PYTHONPATHzsubprocess PYTHONPATH:zexit()z-uz-mÚIPythonz--quickz!--TerminalIPythonApp.code_to_run=Ú
zrunning:)ÚenvÚstdoutÚstderrzprocess output:úutf-8)ÚtriorÚ__file__ÚparentÚdictÚosÚenvironryÚgetÚsplitÚpathsepÚinsertr6ÚjoinÚ    read_textÚsysÚ
executableÚ
subprocessÚrunÚPIPEÚSTDOUTrŒÚdecode)
ÚnameÚ use_ipythonrZ    trio_pathZ script_pathr‹ÚppÚlinesÚcmdÚ    completedrrrÚ
run_scriptµs@
  ù
 
ÿr¨c    Cs&tddddddddg|j d    ¡ƒdS)
Nz in <module>r
ú    --- 1 ---z
in exc1_fnr'ú    --- 2 ---z
in exc2_fnr*rŽ)r‚rŒr¡©r§rrrÚcheck_simple_excepthookÝsø
 
õr¬Tz need IPythoncCstddd}t|ƒdS)Nzsimple_excepthook.pyT©r£©r¨r¬r«rrrÚtest_ipython_exc_handler÷s r¯cCstdƒ}t|ƒdS)Nzsimple_excepthook_IPython.pyr®r«rrrÚ test_ipython_imported_but_unusedþsr°cCsBtddd}tdddddd    g|j d
¡ƒd |j d
¡ks>t‚dS) Nzipython_custom_exc.pyTr­ÚRuntimeWarningzIPython detectedzskip installing Trior
r'r*rŽúcustom sys.excepthook)r¨r‚rŒr¡r3r«rrrÚtest_ipython_custom_exc_handlers ø
 
õr³z4/usr/lib/python3/dist-packages/apport_python_hook.pyz)need Ubuntu with python3-apport installedcCs6tdƒ}|j d¡}d|ks t‚tddddg|ƒdS)Nzapport_excepthook.pyrŽr²r©r*rªr')r¨rŒr¡r3r‚)r§rŒrrrÚ.test_apport_excepthook_monkeypatch_interactions  
þr´)F)CruÚloggingr“rÚpathlibrr8Ú    tracebackrrrrr›rzZtutilrZ _multierrorr
r r ÚrZ_corerÚ version_infoZexceptiongrouprr-rr#r%r$r&r)r(r,r0r2r4r?rBrErJrLrNr`rfÚmarkZskipifÚimplementationr¢rxr‚rƒr†r‡r¨r¬r‰Ú ImportErrorZ have_ipythonZ need_ipythonr¯r°r³Úexistsr´rrrrÚ<module>s„     
 
 UW
ÿ
 
 
( 
    þ