
    BTh@                        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 d dl	m
Z
 d dlmZmZmZmZmZmZmZ dd	lmZmZmZ dd
lmZ defdZdefdZdddeee
f   deee      dee   fdZdedefdZdedefdZ ededed   fd       Z!dedeeef   defdZ"ededeeef   ded   fd       Z#eedddddd e$d!e$dd"f
d#Z%y)$    N)contextmanager)ndiff)gettext)import_module)Path)AnyDictIteratorListOptionalSequenceUnion   )DIFF_LINE_COUNT_LIMITDIFF_LINE_WIDTH_LIMITSYMBOL_ELLIPSIS)FailedToLoadModuleMemberreturnc                  P    t        j                  d      } t        | xr | dk7        S )NPYTEST_XDIST_WORKERmaster)osgetenvbool)worker_names    ^/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/syrupy/utils.pyis_xdist_workerr      s&    ))12K7x 788    c                  |    t        j                  d      } t        | xr t        |       dkD  xr t	                      S )NPYTEST_XDIST_WORKER_COUNTr   )r   r   r   intr   )worker_counts    r   is_xdist_controllerr#      s6    9989LP\!2Q!6P?P;PQQr   )ignore_extensionsrootr$   c             #     K   t        |xs g       }t        |       j                  d      D ]]  }|j                  j	                  d      r|j                         s0|j                  r|j                  d   dd  |v rQt        |       _ y w)N*.r   )setr   rglobname
startswithis_filesuffixesstr)r%   r$   ignore_extsfilepaths       r   walk_snapshot_dirr3   $   s        1 7R8KJ$$S)  }}'',1A1A1C  X%6%6r%:12%>+%Mh-	 s   ABB1Bpathc                    d}| j                  |      ^ }}|j                  |      }|s#t        t        d      j	                  |            	 t        |      }	 t        ||      S # t        $ r)}t        t        d      j	                  |            |d }~ww xY w# t        $ r*}t        t        d      j	                  ||            |d }~ww xY w)Nr(   z+Cannot load member '{}' without module pathzModule '{}' does not exist.z%Member '{}' not found in module '{}'.)	splitjoinr   r   formatr   ModuleNotFoundErrorgetattrAttributeError)r4   sepmodule_partsmodule_member_namemodule_namemodulees          r   import_module_memberrB   0   s    
C*.**S/'l&((<(K&ABII"
 	

{+v122  &1299+F
	  &;<CC"

 	s0   A& B &	B/$BB	C$%C		Cenv_var_namec                     	 t        j                  t        j                  |          S # t        t
        t         j                  j                  f$ r" t        j                  j                  |       cY S w xY wN)	jsonloadsr   environKeyError	TypeErrordecoderJSONDecodeErrorget)rC   s    r   get_env_valuerN   M   sR    ,zz"**\233i!=!=> ,zz~~l++,s   %( AA21A2kwargsc               +   r  K   i t         j                  }	 t         j                  j                  |        t         j                  j                          t         j                  j                  |       y # t         j                  j                          t         j                  j                  |       w xY wwrE   )r   rH   updateclear)rO   prev_envs     r   env_contextrT   T   st     "**~H$jj''





(# 	




(#s   B7!A5 >B75?B44B7objattrsc                 2    |D ]  }t        | |||           y rE   )setattr)rU   rV   ks      r   	set_attrsrZ   ^   s!     "Qa!"r   c           	   #      K   |D ci c]  }|t        | |d        }}	 t        | |       t        | |       y c c}w # t        | |       w xY wwrE   )r:   rZ   )rU   rV   rY   
prev_attrss       r   	obj_attrsr]   c   sU     49:q!WS!T**:J:#U###z"	 ; 	#z"s"   A:A? AAA)line_diff_limitline_size_limitlines_aSequence[str]lines_br^   r_   zIterator[str]c          	         ddt        t        t        |       t        |                  D ]~  }dj                  | ||dz          }dj                  |||dz          }||k7  s7|t        t        t        |      t        |                  D ]  }|||dz    }|||dz    }	||	k7  s| n  n dfd}
t	         |
|        |
|            S )zg
    Wrapper around difflib ndiff to bail early
    https://github.com/python/cpython/issues/65452
    r    r   c                    t        
z
  d      }
z   }t        t        z   }|dkD  r|gng t        | ||       D cg c]T  \  }}||k(  rt        	z
  d      nd||k(  r	z   n	 }}|dkD  rt        nd||| z   |t        |      k  rt        ndz   }|V c}}}}}z   |t        |       k  r|gz   S g z   S c c}}}}}w )Nr   rd   )maxr   	enumeratelen)linesline_idx_fromline_idx_tosymbol_hidden_linenline
line_startline_endadj_linefirst_diff_char_idxfirst_diff_line_idxr^   r_   s            r   adjust_lineszqdiff.<locals>.adjust_lines   s   //A1E)O;,> &3Q%6 !B  )}[)IJ At  !M1   3o EqI!"  !M1 0/A!0 !)J )3Q_B:h/0*2SY*>BH # 6 (3SZ'?"#7I	
: FH7I	
s    AB8)ri   ra   r   ra   )rangerf   rh   r7   r   )r`   rb   r^   r_   iline_aline_bjchar_achar_brt   rr   rs   s     ``       @@r   qdiffr|   l   s     3s7|S\23 QU+,QU+,V"#3s6{CK89 AE*AE*V#*+' #
 #
J g&W(=>>r   )&rF   r   
contextlibr   difflibr   r   	importlibr   pathlibr   typingr   r	   r
   r   r   r   r   	constantsr   r   r   
exceptionsr   r   r   r#   r0   r3   rB   objectrN   rT   rZ   r]   r!   r|    r   r   <module>r      sp    	 %   #    
 19 9
RT R IM	 
T	
	 2:492E	 c]	 s s :, , , $# $(4. $ $"3 "tCH~ "# "
 #3 #tCH~ #(4. # # 10@?@?@? 	@?
 @? @?r   