
    BTh2                     ,   d dl Z d dlmZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZ ddlmZmZ dd	lmZ e
r 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!m"Z"  G d de      Z#e G d d             Z$ eddd       G d d             Z%y)    N)
namedtuple)	dataclassfield)Enum)gettext)TYPE_CHECKINGAnyCallableDictListOptionalTupleType   )SnapshotDoesNotExistTaintedSnapshotError)Repr)AbstractSyrupyExtension)PyTestLocation)SnapshotSession)PropertyFilterPropertyMatcherSerializableDataSerializedDataSnapshotIndexc                        e Zd ZdZdZdefdZy)DiffModedetaileddisabledreturnc                     | j                   S N)valueselfs    b/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/syrupy/assertion.py__str__zDiffMode.__str__+   s    zz    N)__name__
__module____qualname__DETAILEDDISABLEDstrr'    r(   r&   r   r   '   s    HH r(   r   c                       e Zd ZU eed<   eed<   ed   ed<   ed   ed<   eed<   eed<   eed<   ee   ed	<   d
ed<   eded   fd       Z	y)AssertionResultsnapshot_locationsnapshot_namer   asserted_datarecalled_datacreatedupdatedsuccess	exceptionr   test_locationr    c                 b    | j                   s| j                  r| j                  S | j                  S r"   )r6   r7   r4   r5   r$   s    r&   
final_datazAssertionResult.final_data;   s'    <<4<<%%%!!!r(   N)
r)   r*   r+   r.   __annotations__r   bool	Exceptionpropertyr<   r/   r(   r&   r1   r1   /   se    ,--,--MMM	""##"H%56 " "r(   r1   F)eqorderreprc                      e Zd ZU ded<   ed   ed<   ded<   eed<   dZed	   ed
<   dZed	   ed<   dZ	ed   ed<    e
dd      Zed	   ed<    e
dd      Zed	   ed<    e
dd      Zee   ed<    e
dd      Zed   ed<    e
dd      Zeed<    e
de      Zeedf   ed<    e
de      Zedef   ed<    e
dd      Zed   ed<    e
de      Zeed      ed<   dAdZded   ddfd ZedBd!       Zedefd"       Zedeedf   fd#       Z edCd$       Z!edefd%       Z"edDd'       Z#edEd(       Z$ddddd)ded	   d
ed	   ded   deed      dd f
d*Z%	 dFdeed      dd fd+Z&dGd-Z'dHd.Z(e)jT                  d/d0d1dee   fd2Z+d3ed4e,ddfd5Z-ddddddd6d7ed   ded	   d
ed	   deed      ded   d8ed   dd fd9Z.defd:Z/d;d&defd<Z0d,d&defd=Z1dAd>Z2d?dde3ed&   ef   fd@Z4y)ISnapshotAssertionr   sessionr   extension_classr   r:   update_snapshotsNr   includeexcluder   matcherF)initdefault_exclude_include_custom_index
_extensionr   _executions)rL   default_factoryr1   _execution_resultsr   _execution_name_index_matcher).N_post_assert_actionsr    c                     | j                   j                  |        | j                  | _        | j                  | _        | j                  | _        y r"   )rF   register_requestrI   rO   rJ   rN   rK   rV   r$   s    r&   __post_init__zSnapshotAssertion.__post_init__p   s5    %%d+r(   c                      |       S r"   r/   r%   rG   s     r&   __init_extensionz"SnapshotAssertion.__init_extensionv   s       r(   c                 r    | j                   s | j                  | j                        | _         | j                   S r"   )rQ   "_SnapshotAssertion__init_extensionrG   r$   s    r&   	extensionzSnapshotAssertion.extension{   s+    "33D4H4HIDOr(   c                 ,    t        | j                        S r"   )intrR   r$   s    r&   num_executionsz SnapshotAssertion.num_executions   s    4##$$r(   c                     | j                   S r"   )rT   r$   s    r&   
executionszSnapshotAssertion.executions   s    &&&r(   c                 J    | j                   r| j                   S | j                  S r"   )rP   rc   r$   s    r&   indexzSnapshotAssertion.index   s#    %%%"""r(   c                 "    | j                   xs dS )Nsnapshot)rP   r$   s    r&   namezSnapshotAssertion.name   s    !!/Z/r(   r   c                    t        dddg      }| j                  xr% | j                  j                  | j                        xs | j                  dz
  }| j
                  j                  |      }|| j
                  v r,|r*|j                  t        t        |j                              S  || j                  | j                        S )NrE   rj   rc   r   )rj   rc   )
r   rP   rU   getrc   re   r<   r   r.   rj   )r%   SnapshotAssertionReprexecution_indexassertion_results       r&   __reprzSnapshotAssertion.__repr   s     *&*:!;!
 U4#=#=#A#A$BTBT#U%  1$ 	  ??..? $//1  ++7 %0012		

 'YY#22		
r(   c                 2     dt         dt        d   f fd}|S )z_
        Get matcher that replaces `SnapshotAssertion` with one that can be serialized
        kwargsr    r   c                      | j                  d      }t        |t              r|j                  S j                  r j                  di | S |S )Ndatar/   )rl   
isinstancerE   _SnapshotAssertion__reprrV   )rr   maybe_assertionr%   s     r&   rV   z-SnapshotAssertion.__matcher.<locals>._matcher   sI    $jj0O/+<=&---}}$t}}.v..""r(   )r	   r   )r%   rV   s   ` r&   	__matcherzSnapshotAssertion.__matcher   s#    	#s 	#x0B'C 	# r(   )rJ   rI   rK   rG   c          	          | j                  |xs | j                  |xs | j                  |xs | j                  | j                  | j
                  |xs | j                  | j                        S )z
        Create new snapshot assertion fixture with provided values. This preserves
        provided values between assertions.
        )rK   rI   rJ   rH   r:   rG   rF   )	__class__rK   rI   rJ   rH   r:   rG   rF   )r%   rJ   rI   rK   rG   s        r&   with_defaultszSnapshotAssertion.with_defaults   se     ~~+t||+t||+t||!22,,+Ct/C/CLL  
 	
r(   c                 &    | j                  |      S )z
        Create new snapshot assertion fixture with the same options but using
        specified extension class. This does not preserve assertion index or state.
        )rG   )r{   r\   s     r&   use_extensionzSnapshotAssertion.use_extension   s     !!/!BBr(   rt   c                     | |k(  sJ y r"   r/   r%   rt   s     r&   assert_matchzSnapshotAssertion.assert_match   s    t||r(   c                 |    | j                   j                  || j                  | j                  | j                        S )N)rJ   rI   rK   )r`   	serializerN   rO   _SnapshotAssertion__matcherr   s     r&   
_serializezSnapshotAssertion._serialize   s3    ~~''$-- ( 
 	
r(   )	diff_moder   r   c                   | j                   | j                  dz
     }|j                  rt        |j                  t        f      rt        d      g}nnt        j                  |j                  j                  |j                  |j                  j                        D cg c]  }|j                         D ]  }|  c}}}|dd  |d d z   S |j                  }|j                  |j                  nd}g }|3|j                  t        d      j                  |j                               |j                   sD||nd}|t"        j$                  k(  r+|j'                  | j(                  j+                  ||             |S c c}}w )Nr   zVThis snapshot needs to be regenerated. This is typically due to a major Syrupy update. zSnapshot '{}' does not exist!)rT   rc   r9   ru   r   r   	tracebackformat_exceptionrz   __traceback__
splitlinesr5   r4   appendformatr3   r8   r   r,   extendr`   
diff_lines)r%   r   ro   lineslinesnapshot_dataserialized_datadiffs           r&   get_assert_diffz!SnapshotAssertion.get_assert_diff   s     2243F3F3JK%%*447K6MNJ "+!;!;(22<<(22(22@@"
 !& 0 0 2   :cr
**(66  --9 ** 	
  KK78??$22
  ''-:-FMBMH---DNN55o}UV9s   E9	prop_name
prop_valuec                 ~     t         d       t         |        j                  j                   fd       y )Nc                      t               S r"   )setattr)_valuer   r%   s   r&   <lambda>z/SnapshotAssertion.__with_prop.<locals>.<lambda>  s    y&1Q r(   )getattrr   rW   r   )r%   r   r   r   s   `` @r&   __with_propzSnapshotAssertion.__with_prop	  s2    y$/i,!!(()QRr(   )r   rJ   rI   rG   rK   rj   r   rj   c                   |r| j                  d|       |r| j                  d|       |r!| j                  d| j                  |             |r| j                  d|       |r| j                  d|       || j                  d|       | S )z5
        Modifies assertion instance options
        rN   rO   rQ   rV   rP   _snapshot_diff)_SnapshotAssertion__with_propr_   )r%   r   rJ   rI   rG   rK   rj   s          r&   __call__zSnapshotAssertion.__call__  s     Z1Z1\4+@+@+QRZ1_d3-t4r(   c                 ,    t        | j                        S r"   )r.   rv   r$   s    r&   __repr__zSnapshotAssertion.__repr__)  s    4;;r(   otherc                 $    | j                  |      S r"   )_assert)r%   r   s     r&   __eq__zSnapshotAssertion.__eq__,  s    ||E""r(   c                 b   | j                   j                  | j                  | j                        }| j                   j	                  | j                  | j                        }d }d }d}d}d }	 | j                  | j                        \  }}	| j                  |      }t        | dd       }
|
>| j                  |
      \  }}|
t               | j                   j                  ||      }|	 xr# |d uxr | j                   j                  ||      }|}|sT| j                  r@| j                  j                  | j                   | j                  || j                         d}n|	rt        ||d u xr |}|du xr |}| j                  | j                   | j                  <   t#        |||||||| j                  |	      | j$                  | j                  <   | xj                  d	z  c_        | j'                          S # t(        $ r}|}Y d }~|d u xr |}|du xr |}| j                  | j                   | j                  <   t#        |||||||| j                  |	      | j$                  | j                  <   | xj                  d	z  c_        | j'                          yd }~ww xY w# |d u xr |}|du xr |}| j                  | j                   | j                  <   t#        |||||||| j                  |	      | j$                  | j                  <   | xj                  d	z  c_        | j'                          w xY w)
N)r:   rg   F)rg   r   )r   r   )r`   r:   rt   rg   T)	r4   r6   r9   r5   r2   r3   r8   r:   r7   r   )r`   get_locationr:   rg   get_snapshot_name_recall_datar   r   r   diff_snapshotsmatchesrH   rF   queue_snapshot_writer   rR   rU   r1   rT   _post_assertr?   )r%   rt   r2   r3   r   r   r   assertion_successassertion_exceptiontaintedsnapshot_diffsnapshot_data_diff_snapshot_createdsnapshot_updatedes                   r&   r   zSnapshotAssertion._assert/  sv    NN77,,DJJ 8 
 88,,DJJ 9 
 3748!"3	 %)%6%6TZZ%6%H"M7"ood3O#D*:DAM((,(9(9(9(N%"A%-.00"&.."?"?$3"4 #@ #
  !-NN**$3= +   !(((LL55"&..&*&8&8,"jj	 6  )-%..$
  -4J9J&%/E4E595E5ED&&tzz28G-(-+"3+)"00(
9D##D$4$45 !'  	"#,4J9J&%/E4E595E5ED&&tzz28G-(-+"3+)"00(
9D##D$4$45 !'	  -4J9J&%/E4E595E5ED&&tzz28G-(-+"3+)"00(
9D##D$4$45 !s,   .C>G: :	JJJ JJ BL.c                 v    | j                   r- | j                   j                                 | j                   r,yy)z5
        Restores assertion instance options
        N)rW   popr$   s    r&   r   zSnapshotAssertion._post_assertp  s/     ''+D%%))+- ''r(   rg   c                     	 | j                   j                  | j                  | j                  |      dfS # t        $ r Y yt
        $ r}|j                  dfcY d }~S d }~ww xY w)NF)NFT)rF   recall_snapshotr`   r:   r   r   r   )r%   rg   r   s      r&   r   zSnapshotAssertion._recall_dataw  sa    	),,T^^T=O=OQVW  $ 	# 	)??D((	)s!   25 	A  A AA A )r    N)r    r   )r    r   )r    r   )r    r   r"   )rt   r   r    N)rt   r   r    r   )5r)   r*   r+   r=   r   r>   rI   r   rJ   rK   r   rN   rO   rP   r.   rQ   rR   rb   dictrT   r   rU   rV   listrW   r   r
   rZ   r_   r@   r`   rc   re   rg   rj   rv   r   r{   r}   r   r   r   r,   r   r	   r   r   r   r   r   r   r   r   r/   r(   r&   rE   rE   B   s   344##*.GX&'.*.GX&'.+/GX'(/+0,Hh'(  ,1,Hh'(  $)$M8C=  7<7J23  K  8=8S"334  9>D94 45  -2-Hh()  7<7$x	23 
%!#$=>!	"!
  
 % % % 'D&7!78 ' ' # #
 0c 0 0 
 
&  $ /3.2/3EI
 *+
 *+	

 +,
 "$'@"AB
 

. LPC'-F(GHC	C
 *2):):)&)	c)VSS Sc Sd S +/.2.2EI/3*. ' *+	
 *+ "$'@"AB +, ' 
6 #  #. #4 #? . ? 4 ? B.)$)	x*+T1	2)r(   rE   )&r   collectionsr   dataclassesr   r   enumr   r   typingr   r	   r
   r   r   r   r   r   
exceptionsr   r   extensions.amber.serializerr   extensions.baser   locationr   rF   r   typesr   r   r   r   r   r   r1   rE   r/   r(   r&   <module>r      s     "  	 	 	 .8(( t  " " "$ e5u-) ) .)r(   