Ë
    iKêj3  ã                   óü  — d Z ddlZddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZ ddlmZ ddlmZ ddlZdd	lmZ dd
lmZmZ ddlmZmZ ddlm Z  ddl!m"Z" 	 ddl#Z#dZ%dZ& ejN                  dejP                  «      Z) ejN                  dejP                  «      Z*de+de,e+e+f   fd„Z-de+de+de+fd„Z. G d„ de«      Z/dedej`                  fd„Z1ddœdede
e,e+e+f      de,e+d f   de,e+e+e+f   dz  fd!„Z2ddœdede
e,e+e+f      de,e+d f   d"e3e+ef   de,e+e+f   dz  f
d#„Z4d$dd%e"› d&�d'œd(e
e,e+e+e+f      d)e+d*edz  d+e+de+f
d,„Z5d-d.œd/e+d0e+defd1„Z6d3d0e+ddfd2„Z7y# e$$ r dZ#Y �Œw xY w)4aJ  
Write patches which add @example() decorators for discovered test cases.

Requires `hypothesis[codemods,ghostwriter]` installed, i.e. black and libcst.

This module is used by Hypothesis' builtin pytest plugin for failing test cases
discovered during testing, and by HypoFuzz for _covering_ test cases discovered
during fuzzing.
é    N)Úliteral_eval)ÚSequence)Úsuppress)ÚdateÚdatetimeÚ	timedeltaÚtimezone)ÚPath)ÚAny)Úmatchers)ÚCodemodContextÚVisitorBasedCodemodCommand)ÚExpressionContextÚExpressionContextProvider)Ústorage_directory)Ú__version__zqFrom HEAD Mon Sep 17 00:00:00 2001
From: {author}
Date: {when:%a, %d %b %Y %H:%M:%S}
Subject: [PATCH] {msg}

---
zdiscovered failurez^ +$z(^[ ]*)(?:[^ 
])ÚtextÚreturnc                 ó®   — t         j                  d| «      } t        t        j	                  | «      t
        ¬«      }t        j                  d|z   d| «      |fS )NÚ ©Úkeyz(?m)^)Ú_space_only_reÚsubÚminÚ_leading_space_reÚfindallÚlenÚre©r   Úprefixs     ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/extra/_patching.pyÚdedentr#   =   sI   € ä×Ñ˜b $Ó'€DÜÔ'×/Ñ/°Ó5¼3Ô?€FÜ�6‰6�(˜VÑ# R¨Ó.°Ð6Ð6ó    r!   c                 óX   ‡— dj                  ˆfd„| j                  d¬«      D «       «      S )Nr   c              3   ó(   •K  — | ]	  }‰|z   –— Œ y ­w©N© )Ú.0Úliner!   s     €r"   ú	<genexpr>zindent.<locals>.<genexpr>E   s   øè ø€ ÒL T�6˜D•=ÑLùs   ƒT©Úkeepends)ÚjoinÚ
splitlinesr    s    `r"   Úindentr0   D   s#   ø€ Ø�7‰7ÓL¨T¯_©_Àd¨_Ó-KÔLÓLÐLr$   c                   ó
  ‡ — e Zd ZdZ	 	 	 ddedeeeee	j                  ef      f   deedf   dedef
ˆ fd„Zd	e	j                  d
ede	j                  dz  fd„Zde	j                  de	j                  de	j                  fd„Zˆ xZS )ÚAddExamplesCodemodz'Add explicit examples to failing tests.ÚcontextÚfn_examplesÚ	strip_via.Ú	decoratorÚwidthc           	      ó,  •‡ ‡‡	— |sJ d«       ‚t         ‰
‰ �  |«       t        j                  |«      ‰ _        |‰ _        t        j                  ˆfd„«      }t        j                  t        j                  t        j                  «       t        j                  d«      «      t        j                  t        j                  «       |z  «      g«      ‰ _        |j                  «       D ��ci c]  \  }}|t        ˆ	ˆ fd„|D «       «      “Œ c}}‰ _        yc c}}w )zÞAdd @example() decorator(s) for failing test(s).

        `code` is the source code of the module where the test functions are defined.
        `fn_examples` is a dict of function name to list-of-failing-examples.
        z.This codemod does nothing without fn_examples.c                 ó2   •— t        | j                  «      ‰v S r'   )r   Úvalue)Úxr5   s    €r"   ú<lambda>z-AddExamplesCodemod.__init__.<locals>.<lambda>^   s   ø€ ”l 1§7¡7Ó+¨yÐ8€ r$   Úviac              3   óP   •K  — | ]  \  }}‰j                  ||«      xŠr‰–— Œ y ­wr'   )Ú-_AddExamplesCodemod__call_node_to_example_dec)r)   Únoder=   ÚdÚselfs      €€r"   r+   z.AddExamplesCodemod.__init__.<locals>.<genexpr>g   s5   øè ø€ ò á�T˜3Ø×8Ñ8¸¸sÓCÐC�AÐCô ñùs   ƒ#&N)ÚsuperÚ__init__ÚcstÚparse_expressionÚdecorator_funcÚline_lengthÚmÚMatchIfTrueÚCallÚ	AttributeÚNameÚArgÚSimpleStringÚstrip_matchingÚitemsÚtupler4   )rB   r3   r4   r5   r6   r7   Úvalue_in_strip_viaÚkÚnodesrA   Ú	__class__s   `  `     @€r"   rD   zAddExamplesCodemod.__init__K   sâ   û€ ñ ÐLÐLÓLˆ{Ü‰Ñ˜Ô!ä!×2Ñ2°9Ó=ˆÔØ ˆÔÜ"#§-¡-Û8ó#
Ðô  Ÿf™fÜ�K‰KœŸ™›¤!§&¡&¨£-Ó0Ü�U‰U”1—>‘>Ó#Ð&8Ñ8Ó9Ð:ó
ˆÔð (×-Ñ-Ó/÷
ñ ��5ð Œuô à#(ôó ñ ó
ˆÕùó 
s   Ã& Dr@   r=   r   Nc                 ó˜  — |j                  | j                  t        r€|j                  D �cg c]j  }|j                  t	        j
                  |j                  t	        j                  «       «      r|j                  nt        j                  j                  ¬«      ‘Œl c}n|j                  ¬«      }t        j                  t        j                  |t        j                  d«      «      t        j                  t        j                  t!        |«      «      «      g¬«      }t        r{	 t        j"                  t        j$                  g «      j'                  |«      t        j(                  | j*                  ¬«      ¬«      }t        j0                  |j3                  «       «      }t        j4                  |«      S c c}w # t,        t.        f$ r Y y w xY w)N)Úcomma)ÚfuncÚargsr=   )rH   )Úmode)Úwith_changesrG   ÚblackrZ   rI   r   rX   ÚCommentrE   ÚMaybeSentinelÚDEFAULTrK   rL   rM   rN   rO   ÚreprÚ
format_strÚModuleÚcode_for_nodeÚModerH   ÚImportErrorÚAttributeErrorrF   ÚstripÚ	Decorator)rB   r@   r=   ÚaÚexprÚprettys         r"   Ú__call_node_to_example_decz-AddExamplesCodemod.__call_node_to_example_deco   sY  € ð × Ñ Ø×$Ñ$õ ð "ŸY™Yö	ð ð —N‘Nô  !Ÿy™y¨¯©´!·)±)³+Ô>ð ŸGšGä!$×!2Ñ!2×!:Ñ!:ð	 #õ ó	ð —Y‘Yð !ó 
ˆô" $'§8¡8Ü—‘˜t¤S§X¡X¨e£_Ó5Ü—'‘'œ#×*Ñ*¬4°«9Ó5Ó6Ð7ô$
ˆõ ðÜ×)Ñ)Ü—J‘J˜r“N×0Ñ0°Ó6ÜŸ™°×0@Ñ0@ÔAô�ô ×'Ñ'¨¯©«Ó7ˆDÜ�}‰}˜TÓ"Ð"ùò7	øô0  ¤Ð0ò Ùðús   «A/F2
Ä#AF7 Æ7G	ÇG	Úoriginal_nodeÚupdated_nodec                 óÂ   ‡ — |j                  t        ˆ fd„|j                  D «       «      ‰ j                  j	                  |j
                  j                  d«      z   ¬«      S )Nc              3   ób   •K  — | ]&  }t        j                  |‰j                  «      s|–— Œ( y ­wr'   )rI   r   rP   )r)   rA   rB   s     €r"   r+   z7AddExamplesCodemod.leave_FunctionDef.<locals>.<genexpr>˜   s-   øè ø€ ò àä—y‘y  D×$7Ñ$7Ô8ô ñùs   ƒ,/r(   )Ú
decorators)r\   rR   rr   r4   ÚgetÚnamer:   )rB   rn   ro   s   `  r"   Úleave_FunctionDefz$AddExamplesCodemod.leave_FunctionDef“   sb   ø€ ð ×(Ñ(äó à%×0Ñ0ôó ð ×Ñ×"Ñ" <×#4Ñ#4×#:Ñ#:¸BÓ?ñ@ð )ó 	
ð 		
r$   )r(   ÚexampleéX   )Ú__name__Ú
__module__Ú__qualname__ÚDESCRIPTIONr   ÚdictÚstrÚlistrR   rE   rK   ÚintrD   ri   r?   ÚFunctionDefru   Ú__classcell__)rV   s   @r"   r2   r2   H   sÁ   ø„ Ø;€Kð &(Ø"Øñ"
àð"
ð ˜#˜t E¨#¯(©(°C¨-Ñ$8Ñ9Ð9Ñ:ð"
ð ˜˜c˜‘?ð	"
ð
 ð"
ð õ"
ðH"#Ø—H‘Hð"#Ø#&ð"#à	�‰˜Ñ	ó"#ðH
Ø Ÿ_™_ð
Ø<?¿O¹Oð
à	�‰÷
r$   r2   Úmodulec                 ó”   — | j                   d   j                   d   j                  }t        |t        j                  «      sJ |«       ‚|S )Nr   )Úbodyr:   Ú
isinstancerE   rK   )r‚   Úcalls     r"   Ú
_only_callr‡   ¢   s>   € Ø�;‰;�q‰>×Ñ˜qÑ!×'Ñ'€DÜ�dœCŸH™HÔ%Ð+ tÓ+Ð%Ø€Kr$   r(   )r5   rY   Úexamplesr5   .c                ót  — 	 t         j                  | j                     }t        |j                  «      }|j                  t        j                  «       «      r#|j                  t        j                  «       «      n|}t        | |||j                  ¬«      }|€y |\  }}t        |«      ||fS # t
        $ r Y y w xY w)N)r5   Ú	namespace)ÚsysÚmodulesry   r
   Ú__file__Ú	ExceptionÚis_relative_toÚcwdÚrelative_toÚ_get_patch_forÚ__dict__r}   )	rY   rˆ   r5   r‚   Ú	file_pathÚfnameÚpatchÚbeforeÚafters	            r"   Úget_patch_forr™   ¨   s¬   € ðÜ—‘˜TŸ_™_Ñ-ˆÜ˜Ÿ™Ó)ˆ	ð ×#Ñ#¤D§H¡H£JÔ/ð 	×ÑœdŸh™h›jÔ)àð 
ô
 Øˆh )°v·±ô€Eð €}Øà�M€FˆEÜ�‹J˜ Ð&Ð&øô ò Ùðús   ‚2B+ Â+	B7Â6B7rŠ   c                óÄ  — 	 t        j                  | «      }t        d„ |j	                  «       D «       d„ ¬«      }g }t        «       }|D �].  \  }}	||	f|v rŒ|j                  ||	f«       t        t        «      5  t        j                  |«      }
t        |
«      }t        j                  t        j                  t        j                  d«      t        j                  t        j                  «       «      g¬«      «      }t        j                   |t        j                  t        j"                  «       |t        j"                  «       g¬«      «      r	 d d d «        y i }t%        j&                  t%        j(                  |d«      «      D ]µ  }t+        |t$        j                  «      sŒt+        |j,                  t$        j.                  «      sŒC|j0                  |vsŒR|j0                  |vsŒa|D ]P  \  }}|j0                  |j2                  v sŒt        j4                  |› d|j0                  › �«      ||j0                  <    Œµ Œ· t        t        «      5  t        j6                  j9                  |
«      }t        j:                  |t        j                  t        j                  «       ¬«      «      D �ch c]  }|j<                  ’Œ }}t        j>                  |t        j                  t        j@                  |jB                  «      ¬	«      t        jD                  tF        tH        jJ                  «      z  t        j@                  |fd
„«      z  |fd„¬«      }
d d d «       |jM                  t        |
«      |	f«       d d d «       �Œ1 |sy |jO                  d«      tP        jR                  d   u rd|vrd}nd}tU        |«      \  }}	 t        j                  |«      }tW        tY        «       | jZ                  |i||dt]        |«      z
  ¬«      j_                  |«      }|ta        |jb                  |¬«      fS # t        $ r Y y w xY wc c}w # 1 sw Y   ŒðxY w# 1 sw Y   �ŒxY w# t        $ r Y y w xY w)Nc              3   ó`   K  — | ]&  \  }}t        |t        j                  «      sŒ!||f–— Œ( y ­wr'   )r…   ÚtypesÚ
ModuleType)r)   rT   Úvs      r"   r+   z!_get_patch_for.<locals>.<genexpr>Ó   s'   è ø€ ÒS‘F�Q˜´:¸aÄ×AQÑAQÕ3Rˆ!ˆQŒÑSùs   ‚".¥	.c                 ó2   — t        | d   j                  «      S )Né   )r   rx   )Úkvs    r"   r<   z _get_patch_for.<locals>.<lambda>Ô   s   € ”s˜2˜a™5Ÿ>™>Ó*€ r$   r   Údata)rZ   Úevalú.)Úkeyword©r:   c                 ó
   — | |vS r'   r(   )ÚnrT   s     r"   r<   z _get_patch_for.<locals>.<lambda>  s
   € ¸QÀa¸Z€ r$   c                 ó    — || j                      S r'   r¦   )r@   Ú_Únss      r"   r<   z _get_patch_for.<locals>.<lambda>	  s   € ¸"¸T¿Z¹Z¹.€ r$   )ÚreplacementÚ
hypothesisÚgivenzhypothesis.examplerv   rw   )r4   r5   r6   r7   )r!   )2ÚinspectÚ	getsourcerŽ   ÚsortedrQ   ÚsetÚaddr   rE   Úparse_moduler‡   rI   rN   rK   rM   ÚEllipsisÚmatchesÚ
ZeroOrMoreÚastÚwalkÚparser…   ÚctxÚLoadÚidr“   rF   ÚmetadataÚMetadataWrapperr   r¥   ÚreplacerJ   Ú__contains__ÚMatchMetadatar   r   ÚLOADÚappendrs   r‹   rŒ   r#   r2   r   rx   r   Útransform_moduler0   Úcode)rY   rˆ   r5   rŠ   r—   Úmodules_in_test_scopeÚ
call_nodesÚseen_examplesÚexr=   r‚   Úthe_callr¢   ÚnamesÚanoderT   rž   Úwrapperr@   Úkwarg_namesrG   Údedentedr!   r˜   s                           r"   r’   r’   Æ   s£  € ðÜ×"Ñ" 4Ó(ˆô #ÙS˜iŸo™oÓ/ÔSÙ*ôÐð .0€Jô “E€MØó .9‰ˆˆCØ�ˆ9˜Ñ%ØØ×Ñ˜2˜s˜)Ô$ä”iÓ ñ )	9Ü×%Ñ% bÓ)ˆFÜ! &Ó)ˆHä—5‘5œŸ™¤§¡ v£´a·e±e¼A¿J¹J»LÓ6IÐ5JÔKÓLˆDÜ�y‰y˜¤1§6¡6´·±³ÀÄaÇlÁlÃnÐ/UÔ#VÔWØ÷)	9ñ )	9ð ˆEÜŸ™¤#§)¡)¨B°Ó"7Ó8ò 
"�ä˜u¤c§h¡hÕ/Ü" 5§9¡9¬c¯h©hÕ7ØŸ™¨Ò-ØŸ™¨	Ò1à 5ò "™˜˜1Ø Ÿ8™8 q§z¡zÒ1Ü.1×.BÑ.BÀaÀSÈÈ%Ï(É(ÈÐCTÓ.U˜E %§(¡(™OÙ!ñ"ð
"ô  œ)Ó$ñ ÜŸ,™,×6Ñ6°vÓ>�ô !"§	¡	¨'´1·5±5ÄÇÁÃÔ3JÓ Köàð —L“Lð�ð ô Ÿ™ØÜ—F‘F¤§¡¨u×/AÑ/AÓ!BÔCÜ—o‘oÔ&?ÔAR×AWÑAWÓXñYä—m‘m°Ò$GÓHñIð 49Ò Hô�÷ð ×Ñœz¨&Ó1°3Ð7Ô8÷S)	9ñ )	9ð.9ñ` Øð 	�‰�lÓ#¤s§{¡{°<Ñ'@Ñ@Ø˜9Ñ$à-‰à"ˆô ˜f“~Ñ€HˆfðÜ×Ñ Ó)ˆô ÜÓØ—]‘] JÐ/ØØ Ø”3�v“;Ñô÷ Ñ�tÓð 
ð ”F˜5Ÿ:™:¨fÔ5Ð6Ð6øôo ò Ùðüòb÷ð ú÷9)	9ñ )	9ûôt ò áðús‚   ‚P& Á8CQÅAQÆ!$QÇQÇQÇ$ QÈAQÉ
AP:Ê(P5
Ê;BP:Í$QÎ9Q Ð&	P2Ð1P2Ð5P:Ð:QÐ?QÑQ	Ñ	QÑQz!Hypothesis: add explicit exampleszHypothesis z <no-reply@hypothesis.works>©ÚmsgÚwhenÚauthorÚtriplesrÒ   rÓ   rÔ   c                ój  — | sJ d«       ‚|xs$ t        j                  t        j                  ¬«      }i }| D ]2  \  }}}|j	                  t        |«      g «      j                  ||f«       Œ4 t        j                  |||¬«      g}t        |j                  «       «      D �]  \  }}	|j                  d¬«      x}
}|	D ]4  \  }}|j                  |j                  «       |j                  «       d«      }Œ6 t        j                  |
j!                  d¬«      |j!                  d¬«      d	|› �d	|› �¬
«      }g }|D ]J  }|j#                  d«      r|j                  |«       Œ&|j                  |dz   «       |j                  d«       ŒL |j                  dj%                  |«      «       �Œ dj%                  |«      S )z2Create a patch for (fname, before, after) triples.zattempted to create empty patch)ÚtzrÑ   úutf-8©Úencodingr    Tr,   z./)ÚfromfileÚtofileú
z\ No newline at end of file
r   )r   Únowr	   ÚutcÚ
setdefaultr
   rÄ   ÚHEADERÚformatr±   rQ   Ú	read_textrÀ   ÚrstripÚdifflibÚunified_diffr/   Úendswithr.   )rÕ   rÒ   rÓ   rÔ   Úby_fnamer•   r—   r˜   ÚdiffsÚchangesÚsource_beforeÚsource_afterÚudÚlinesr*   s                  r"   Ú
make_patchrï   )  s¡  € ñ Ð5Ð5Ó5ˆ7ØÒ0”8—<‘<¤8§<¡<Ô0€Dà24€HØ 'ò EÑˆˆv�uØ×ÑœD ›K¨Ó,×3Ñ3°V¸U°OÕDðEô �]‰]˜s¨°fˆ]Ó=Ð>€EÜ  §¡Ó!1Ó2ó %‰ˆˆwØ',§¡À Ó'HÐHˆ˜Ø$ò 	T‰MˆF�EØ'×/Ñ/°·±³ÀÇÁÃÐQRÓS‰Lð	Tä×!Ñ!Ø×$Ñ$¨dÐ$Ó3Ø×#Ñ#¨TÐ#Ó2Ø˜%˜�\Ø˜�w�<ô	
ˆð ˆØò 	?ˆDØ�}‰}˜TÔ"Ø—‘˜TÕ"à—‘˜T D™[Ô)Ø—‘Ð=Õ>ð	?ð 	�‰�R—W‘W˜U“^Ö$ð+%ð, �7‰7�5‹>Ðr$   r   )Úslugr–   rð   c                ó  — t        j                  d|«      s
J d|›�«       ‚t        j                  «       j	                  «       }t        j
                  dd| dt         j                  ¬«      }t        j                  |j                  «       «      j                  «       d d }t        d«      }|j                  «        |j                  |› d	|› |› d
�z  }|j                  | d¬«       |j                  t!        j"                  «       «      S )Nz|[a-z]+-zmalformed slug=z^Date: .+?$r   r    )ÚcountÚflagsé   Úpatchesú--z.patchrØ   rÙ   )r   Ú	fullmatchr   ÚtodayÚ	isoformatr   Ú	MULTILINEÚhashlibÚsha1ÚencodeÚ	hexdigestr   Úcreate_if_missingÚpathÚ
write_textr‘   r
   r�   )r–   rð   rÞ   ÚcleanedÚhash8Úpatches_dirÚps          r"   Ú
save_patchr  R  sÒ   € Ü�<‰<˜ TÔ*Ð@Ð.>¸¸Ð,@Ó@Ð*Ü
�*‰*‹,×
 Ñ
 Ó
"€CÜ�f‰f�^ R¨°a¼r¿|¹|ÔL€GÜ�L‰L˜Ÿ™Ó)Ó*×4Ñ4Ó6°r¸Ð:€EÜ# IÓ.€KØ×!Ñ!Ô#Ø×Ñ˜c˜U " T F¨5¨'°Ð8Ñ8€AØ‡L�L� €LÔ)Ø�=‰=œŸ™›Ó$Ð$r$   c                 ó*  — t        j                  «       t        d¬«      z
  }t        d«      j                  j                  d| › d�«      D ]G  }t        j                  |j                  j                  d«      d   «      |k  sŒ8|j                  «        ŒI y )Né   )Údaysrõ   z????-??-??--z????????.patchrö   r   )
r   rø   r   r   r   ÚglobÚfromisoformatÚstemÚsplitÚunlink)rð   Úcutoffr  s      r"   Ú
gc_patchesr  ^  sx   € Ü�Z‰Z‹\œI¨1Ô-Ñ-€FÜ˜yÓ)×.Ñ.×3Ñ3Ø
�t�f˜NÐ+óò ˆô ×Ñ˜aŸf™fŸl™l¨4Ó0°Ñ3Ó4°vÓ=Ø�H‰H�Jñ	r$   )r   )8Ú__doc__r¸   rå   rû   r¯   r   r‹   rœ   r   Úcollections.abcr   Ú
contextlibr   r   r   r   r	   Úpathlibr
   Útypingr   ÚlibcstrE   r   rI   Úlibcst.codemodr   r   Úlibcst.metadatar   r   Úhypothesis.configurationr   Úhypothesis.versionr   r]   rf   rá   ÚFAIL_MSGÚcompilerú   r   r   r}   rR   r#   r0   r2   rK   r‡   r™   r|   r’   rï   r  r  r(   r$   r"   ú<module>r     sQ  ðñó Û Û Û Û 	Û 
Û Ý Ý $Ý ß 8Ó 8Ý Ý ã Ý  ß Eß Hå 6Ý *ðÛð
€ð  €Ø�—‘˜F B§L¡LÓ1€Ø�B—J‘JÐ2°B·L±LÓAÐ ð7�ð 7˜˜s C˜x™ó 7ðM�ð M˜cð M có MôW
Ð3ô W
ðt�sð ˜sŸx™xó ð "$ò	'Ø
ð'à�u˜S #˜X‘Ñ'ð'ð �S˜#�X‰ð	'ð
 ˆ3��Sˆ=Ñ˜DÑ ó'ðD "$ò	`7Ø
ð`7à�u˜S #˜X‘Ñ'ð`7ð �S˜#�X‰ð	`7ð
 �C˜�H‰~ð`7ð ˆ3�ˆ8�_�tÑó`7ðL 3Ø Ø ˜}Ð,HÐIò&Ø�e˜C  c˜MÑ*Ñ+ð&ð 
ð&ð �T‰/ð	&ð
 ð&ð 	ó&ðR +-ò 	%�cð 	% Cð 	%°ó 	%ñ�Sð  $ô øðc	 ò ØƒEðús   Á0E0 Å0E;Å:E;