
    ?g                        S r SSKJr  SSKJr  SSKrSSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SS	KJr  SS
KJr  SSKr\\\      " 5       rSS jr\R*                  " SS9SS j5       rSS jrSS jrSS jrg)zASubmit failure or test session information to a pastebin service.    )annotations)StringION)IO)Config)create_terminal_writer)Parser)StashKey)TerminalReporterc           
     T    U R                  S5      nUR                  SSSSS SS/SS	9  g )
Nzterminal reportingz
--pastebinmodestorepastebinfailedallz3Send failed|all info to bpaste.net pastebin service)metavaractiondestdefaultchoiceshelp)getgroup
_addoption)parsergroups     2/usr/lib/python3/dist-packages/_pytest/pastebin.pypytest_addoptionr      s>    OO01E	5!B      T)trylastc                $  ^ ^ T R                   R                  S:X  at  T R                  R                  S5      nUbU  [        R
                  " S5      T R                  [        '   UR                  R                  mU U4S jnX!R                  l	        g g g )Nr   terminalreporterzw+bc                   > T" U 40 UD6  [        U [        5      (       a  U R                  S5      n TR                  [           R                  U 5        g )Nutf-8)
isinstancestrencodestashpastebinfile_keywrite)skwargsconfigoldwrites     r   	tee_write#pytest_configure.<locals>.tee_write.   sC    %f%a%%)A-.44Q7r   )
optionr   pluginmanager	getplugintempfileTemporaryFiler&   r'   _twr(   )r+   trr-   r,   s   `  @r   pytest_configurer6   "   st    }}&!!++,>? >-5-C-CE-JFLL)*vv||H8 %FFL  'r   c                   [         U R                  ;   a  U R                  [            nUR                  S5        UR                  5       nUR	                  5         U R                  [         	 U R
                  R                  S5      nUR                  R                  S	 UR                  SS5        [        U5      nUR                  SU S35        g g )Nr   r    r(   =$Sending information to Paste Servicezpastebin session-log: 
)r'   r&   seekreadcloser0   r1   r4   __dict__	write_sepcreate_new_paste
write_line)r+   pastebinfile
sessionlogr5   pastebinurls        r   pytest_unconfigurerE   7   s    6<<'||$45!!&&(
LL)*!!++,>?FFOOG$
S@A&z2
.{m2>? (r   c                J   SSK nSSKJn  SSKJn  U SSS.nSn U" XR" U5      R                  S	5      S
9R                  5       R                  S5      nUR                  SU5      nU(       a  U SUR                  S5       3$ SU-   S-   $ ! [         a  nSU 3s SnA$ SnAff = f)zCreate a new paste using the bpaste.net service.

:contents: Paste contents string.
:returns: URL to the pasted contents, or an error message.
r   N)	urlencode)urlopentext1week)codelexerexpiryzhttps://bpa.stascii)datar"   zbad response: zhref="/raw/(\w+)"z/show/   zbad response: invalid format ('z'))reurllib.parserG   urllib.requestrH   r%   r<   decodeOSErrorsearchr   )	contentsrQ   rG   rH   paramsurlresponseexc_infoms	            r   r@   r@   H   s     &&7CF
C+Ci/66w?@EEGNNwW 	
 			&1AfQWWQZL))08;dBB  +z**+s   8B	 	
B"BB"B"c                F   U R                   R                  R                  S:w  a  g SU R                  ;   a  U R	                  SS5        U R                  S    H  n UR
                  R                  R                  S   R                  n[        5       n[        U R                   U5      nUR                  U5        UR                  5       n[        U5      (       d   e[!        U5      nU R#                  U SU 35        M     g g ! [         a    U R                  U5      n Nf = f)Nr   r8   r9   z --> )r+   r/   r   statsr?   longreprreprtracebackreprentriesreprfilelocAttributeError_getfailureheadliner   r   
toterminalgetvaluelenr@   rA   )r    repmsgfiletwr)   rD   s          r   pytest_terminal_summaryrm   a   s   %%..(:#)))""3(NO#))(3C@ll00<<R@LL :D'(8(?(?FBNN2Aq66M6*1-K''3%u[M(BC 4 *
 " @&::3?@s   -DD D )r   r   returnNone)r+   r   rn   ro   )rW   zstr | bytesrn   r$   )r    r
   rn   ro   )__doc__
__future__r   ior   r2   typingr   _pytest.configr   r   _pytest.config.argparsingr   _pytest.stashr	   _pytest.terminalr
   pytestbytesr'   r   hookimplr6   rE   r@   rm    r   r   <module>r|      sn    G "    ! 1 , " -  BuI&( 
 % %(@"C2Dr   