
    BTh#                     2   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mZmZm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 ddlmZm Z  ddl!m"Z"m#Z# e
rddl$m%Z% ddl&m'Z'  G d de      Z(eed   e)f   Z*ed   Z+e G d d             Z,y)    )defaultdict)	dataclassfield)Enum)Path)TYPE_CHECKINGAnyDefaultDictDictIterableListLiteralOptionalSetTupleTypeN   )EXIT_STATUS_FAIL_UNUSED)SnapshotCollections)PyTestLocation)SnapshotReport)SerializedDataSnapshotIndex)is_xdist_controlleris_xdist_worker)SnapshotAssertion)AbstractSyrupyExtensionc                       e Zd ZdZdZdZdZy)
ItemStatusFpassedfailedskippedN)__name__
__module____qualname__NOT_RUNPASSEDFAILEDSKIPPED     `/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/syrupy/session.pyr   r   *   s    GFFGr+   r   r   )r   r   c            
       b   e Zd ZU ded<   dZeee      ed<   dZed   ed<    e	e
      Zed   ed	<    e	e      Zeeef   ed
<    e	e      Zed   ed<    e	e      Zeedf   ed<    e	d       Zeeee   f   ed<    e	d       Zeeeedf   f   ed<   dddddddeeef   fdZ	 	 	 	 	 	 	 	 	 	 d,dZd-dZddddddded   fdZede fd       Z!ede fd       Z"d ed   ddfd!Z#d ed   ddfd"Z$d-d#Z%d$ed%e&d&   ddfd'Z'de(fd(Z)d.d)Z*	 	 	 	 	 	 d/d*Z+e,d ed   de-d   fd+       Z.y)0SnapshotSessionzpytest.Sessionpytest_sessionNignore_file_extensionsr   report)default_factoryzpytest.Item_collected_items_selected_itemsr   _assertionsr   _extensionsc                       t        t              S N)r   setr*   r+   r,   <lambda>zSnapshotSession.<lambda>F   s    C 0 r+   _locations_discoveredc                       t        t              S r8   )r   dictr*   r+   r,   r:   zSnapshotSession.<lambda>S   s    k$&7 r+   r   _queued_snapshot_writes	extensiontest_locationr   indexr   returnc                 L    |j                  ||      }|j                  |f||ffS )N)r@   rA   )get_location	__class__)selfr?   r@   rA   snapshot_locations        r,   _snapshot_write_queue_keysz*SnapshotSession._snapshot_write_queue_keysU   s=     &22'u 3 
 ##%67-9OOOr+   c                 T    | j                  |||      \  }}|| j                  |   |<   y r8   )rH   r>   )rF   r?   r@   datarA   ext_keyloc_keys          r,   queue_snapshot_writez$SnapshotSession.queue_snapshot_write`   s7      ::}e
 :>$$W-g6r+   c                    | j                   j                         D ]G  \  \  }}}|s|j                  ||j                         D cg c]  \  \  }}}|||f c}}}       I | j                   j                          y c c}}}w )N)rG   	snapshots)r>   itemswrite_snapshotclear)rF   extension_classrG   queued_writelocrA   rJ   s          r,   flush_snapshot_write_queuez*SnapshotSession.flush_snapshot_write_queuel   s      77==?	  
..&7 3?2D2D2F .LS%$ sE* / 	 	$$**,s   B c           	          | j                  |||      \  }}| j                  |   j                  |      }||S |j                  ||t	        t        |                   S )zhFind the current value of the snapshot, for this session, either a pending write or the actual snapshot.)r@   rA   
session_id)rH   r>   getread_snapshotstrid)rF   r?   r@   rA   rK   rL   rJ   s          r,   recall_snapshotzSnapshotSession.recall_snapshot{   sq      ::}e
 ++G488AK &&'uRX ' 
 	
r+   c                 h    t        | j                  j                  j                  j                        S r8   )boolr/   configoptionupdate_snapshotsrF   s    r,   rb   z SnapshotSession.update_snapshots   s%    D''..55FFGGr+   c                 h    t        | j                  j                  j                  j                        S r8   )r_   r/   r`   ra   warn_unused_snapshotsrc   s    r,   re   z%SnapshotSession.warn_unused_snapshots   s%    D''..55KKLLr+   rP   c                 X    | j                   j                  | j                  |             y r8   )r3   updatefilter_valid_items)rF   rP   s     r,   collect_itemszSnapshotSession.collect_items   s!    $$T%<%<U%CDr+   c                 ~    | j                  |      D ])  }t        j                  | j                  t	        |d      <   + y )Nnodeid)rh   r   r&   r4   getattr)rF   rP   items      r,   select_itemszSnapshotSession.select_items   s<    ++E2 	D""   x!89	r+   c                     d | _         t               | _        i | _        g | _        i | _        t        t              | _        y r8   )r1   r9   r3   r4   r5   r6   r   r;   rc   s    r,   startzSnapshotSession.start   s8     #!%0%5"r+   rk   outcome)r    r"   r!   c                 r    || j                   v r	 t        |      | j                   |<   y y # t        $ r Y y w xY wr8   )r4   r   
ValueError)rF   rk   rq   s      r,   ran_itemzSnapshotSession.ran_item   sE     T)))/9'/B$$V, *  s   * 	66c                     d}| j                          t        | j                  j                  j                  | j
                  | j                  | j                  | j                  j                  j                        | _	        t               r|S t               r|S | j                  j                  r^| j                  r=| j                  | j                  j                  | j                  j                          |S | j"                  s	|t$        z  }|S )Nr   )base_dircollected_itemsselected_items
assertionsoptions)unused_snapshot_collectionsused_snapshot_collections)rV   r   r/   r`   rootpathr3   r4   r5   ra   r1   r   r   
num_unusedrb   remove_unused_snapshotsunusedusedre   r   )rF   
exitstatuss     r,   finishzSnapshotSession.finish   s    
'')$((//88 11//''''..55
   " ;;!!$$,,040B0B.2kk.>.> -   //55
r+   c                    | j                   j                  |       |j                  j                  }|j                  j
                  }|| j                  |   vr| j                  |   j                  |       |j                  j                  |j                  | j                        D ci c]%  }|j                  r|j                  |j                  ' }}| j                  j                  |       y y c c}w )N)r@   ignore_extensions)r5   appendr@   filepathr?   rE   r;   adddiscover_snapshotsr0   has_snapshotslocationr6   rg   )rF   	assertionr@   rS   
discovereddiscovered_extensionss         r,   register_requestz SnapshotSession.register_request   s    	*!//88#--77$"<"<]"KK&&}599/J #,"5"5"H"H"+"9"9&*&A&A #I #% ++ ##Y%8%88%! % ##$9: L%s   **C3c                    |D ]u  }|j                   }| j                  j                  |      }|r,|j                  ||D ch c]  }|j                   c}       X||vs]t        |      j                          w yc c}w )z
        Remove all unused snapshots using the registed extension for the collection file
        If there is not registered extension and the location is unused delete the file
        )rG   snapshot_namesN)r   r6   rY   delete_snapshotsnamer   unlink)rF   r{   r|   unused_snapshot_collectionrG   r?   snapshots          r,   r   z'SnapshotSession.remove_unused_snapshots   s     +F 	1& : C C((,,->?I**&76P$*2$ +  #*CC&'..0	1$s   A<c                     d | D        S )Nc              3   V   K   | ]!  }t        |t        j                        s| # y wr8   )
isinstancepytestFunction).0rm   s     r,   	<genexpr>z5SnapshotSession.filter_valid_items.<locals>.<genexpr>   s     L*T6??*KLs   ))r*   )rP   s    r,   rh   z"SnapshotSession.filter_valid_items   s    LLLr+   )
r?   r   r@   r   rJ   r   rA   r   rB   N)rB   N)r   r   rB   N)r{   r   r|   r   rB   N)/r#   r$   r%   __annotations__r0   r   r   r[   r1   r   r9   r3   r   r=   r4   r   r   listr5   r6   r;   r
   r	   r>   _QueuedWriteExtensionKey_QueuedWriteTestLocationKeyr   rH   rM   rV   r]   propertyr_   rb   re   ri   rn   rp   r   rt   intr   r   r   staticmethodr   rh   r*   r+   r,   r.   r.   5   s   $$ 37HT#Y/6 *.FH%&-+0+Ec-(E-24-HOT#z/*H-24-HK)*H8=d8SKc445S8=09;sCH}5  	78 [ (*::;	= 9
	P,	P (	P 		P
 
')DD	E	P
>,
> (
> 	
>
 
> 

>-
,
 (
 	

 
"	#
( H$ H H Mt M ME4#6 E4 E$}"5 $ 6$+,I$J	 @;"1%:1 $91 
	1. M$}"5 M(=:Q M Mr+   r.   )-collectionsr   dataclassesr   r   enumr   pathlibr   typingr   r	   r
   r   r   r   r   r   r   r   r   r   	constantsr   rJ   r   r   r   r1   r   typesr   r   utilsr   r   r   r   extensions.baser   r   r[   r   r   r.   r*   r+   r,   <module>r      s    #       . % $ "
 ,8  !&?!@#!EF #$EF  EM EM EMr+   