
    i%                         d Z ddlZddlZddlmZ  e       Zd ZddZddZ		 	 	 	 	 	 	 	 ddZ
ddZ	 	 	 	 	 	 	 	 	 	 	 	 dd	Z	 	 	 	 	 	 	 	 	 	 	 dd
Zd ZddZy)z?
helper routines for testing round trip of commented YAML data
    N)Pathc                     	 | j                  d      }t        |      D ]  }| |   j                         rt         	 | |dz   d  } t	        j
                  |       S # t        $ r Y  w xY w)N
   )indexrangeisspace
ValueErrortextwrapdedent)dataposition_of_first_newlineidxs      r/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/srsly/tests/ruamel_yaml/roundtrip.pyr   r      sy    5$(JJt$4!23 	!C9$$&  	! -134??4  	  s   2A A 	A&%A&c                     dd l }t        |       }|j                  j                  ||j                  j                  ||      S Nr   )Loaderpreserve_quotesversion)srsly.ruamel_yamlr   ruamel_yamlloadRoundTripLoaderinpr   r   srslydinps        r   round_trip_loadr      sD    #;D!!  00'	 "      c                     dd l }t        |       }|j                  j                  ||j                  j                  ||      S r   )r   r   r   load_allr   r   s        r   round_trip_load_allr"   $   sD    #;D%%  00'	 &  r   c	                 R    dd l }	|	j                  j                  | ||||||||	      S )Nr   )streamindentblock_seq_indenttop_level_colon_alignprefix_colonexplicit_startexplicit_endr   )r   r   round_trip_dump)
r   r$   r%   r&   r'   r(   r)   r*   r   r   s
             r   r+   r+   0   s@     ,,)3!%! - 
 
r   c                 "   dd l }| j                  d      }|j                  d      }|j                  |||d      }t        j                  dk  }|D ]=  }|r|d d dv r|j                         dz   }t        j                  j                  |       ? y )Nr   Tzround trip YAML)         )z--- z+++ r   )difflib
splitlinesunified_diffsysversion_inforstripstdoutwrite)	r   outp	file_namer0   inloutldiffstrip_trailing_spacelines	            r   r<   r<   J   s    
..
C??4 DT96GHD++f4 D!H0@$@;;=4'D

r   c           
         || }t        |      }|||z  }t        | |      }|rt        d|       |Tt        |t              rD|j                         D ]1  \  }}||   |k7  st        dj                  ||   |             t         t        ||||||	|
|      }||k7  rt        ||d       t        d|d       ||k(  sJ t        ||||||	|
|      }t        d	|d       ||k(  sJ |S )
c
    inp:    input string to parse
    outp:   expected output (equals input if not specified)
    )r   r   {0!r} <> {1!r})r%   r&   r'   r(   r)   r*   r   input stringz
roundtrip data:
 )sepzroundtrip second round data:
)
r   r   print
isinstancedictitemsformatr
   r+   r<   )r   r8   extraintermediater%   r&   r'   r(   r   r)   r*   r   	dump_datadoutpr   kvress                     r   
round_triprQ   X   s*   & |4LE3@DfdlD)$**, %17a<*11$q'1=>$$% )3!%!	C e|UC(	
"-%<<
)3!%!	C 

*CR8%<<Kr   c                    t        |       } || }|
|
}
t        |      }|||z  }t               }||_        d|_        |j	                  |       }|rt        d|       |Tt        |t              rD|j                         D ]1  \  }}||   |k7  st        dj                  ||   |             t         ||_        ||_        ||_        ||_        |	|_        |j!                  ||      }|S )r@   Fr   rA   )compare)r   YAMLr   scalar_after_indicatorr   rE   rF   rG   rH   rI   r
   r%   r'   r(   r)   r*   dump)r   r8   rJ   rK   r%   r'   r(   r   r)   r*   r   rL   rM   yamlr   rN   rO   rP   s                     r   na_round_triprX      s   $ +C|4LE6D*D"'D99S>DfdlD)$**, %17a<*11$q'1=>$$% DK!6D$D(D$D
))D%)
(CJr   c                  ^    dd l  G fddj                  j                        } |di | S )Nr   c                   D    e Zd ZdZ fdZ fdZ fdZ fdZ fdZy)YAML.<locals>.MyYAMLz%auto dedent string parameters on loadc                     t        |t              r$|r|d   dk(  r|dd  }t        j                  |      }j                  j
                  j                  | |      S Nr   r   r   )rF   strr   r   r   rT   r   )selfr$   r   s     r   r   zYAML.<locals>.MyYAML.load   sS    &#&fQi4/#ABZF!0$$))..tV<<r   c              3      K   t        |t              r$|r|d   dk(  r|dd  }t        j                  |      }j                  j
                  j                  | |      D ]  }|  y wr]   )rF   r^   r   r   r   rT   r!   )r_   r$   dr   s      r   r!   zYAML.<locals>.MyYAML.load_all   se     &#&fQi4/#ABZF!0&&++44T6B s   A%A(c                 @   ddl m}m} d|v d|v z  sJ d|v r' 
j                  j                  j
                  |fi |S |j                         }t        j                  |j                  d            }|j                  dd      }|r|d   dk(  r|dd  } |       x|d<   } 
j                  j                  j
                  | |fi | |j                         }	t        |	       |r2t        |	j                               }	t        |j                               }|	|k(  sJ y )	Nr   StringIOBytesIOr$   rS   unordered_linesFr   r   )srsly.ruamel_yaml.compatrd   re   r   rT   rV   copyr   r   popgetvaluerE   sortedr1   )r_   r   kwrd   re   lkwexpectedrf   strP   r   s             r   rV   zYAML.<locals>.MyYAML.dump   s   BNyB7772~2u((--224>2>>'')Cswwy'9:H!gg&7?OHQK4/#AB<!)+CMB'E""''d:c:++-C#JS^^-.!("5"5"78(?"?r   c                    ddl m}m} t        |
j                  j
                  j                  t        f      sJ |j                         }|r|d   dk(  r|dd  }t        j                  |      }
j                  j                  j                  | |      }|j                  d|      } |       x|d<   } 
j                  j                  j                  | |fi | |j                         }	|	|k7  rt!        ||	d       |	|k(  sJ y Nr   rc   r   r   r8   r$   rB   )rg   rd   re   rF   r   compat	text_typer^   rh   r   r   rT   r   ri   rV   rj   r<   r_   r$   rl   rd   re   rm   r   r8   ro   rP   r   s             r   rQ   zYAML.<locals>.MyYAML.round_trip   s    Bfu'8'8'?'?'I'I3&OPPP'')C&)t+__V,F$$))..tV<D7766*D!)+CMB'E""''d:c:++-Cd{T3/$;;r   c                    ddl m}m} t        |
j                  j
                  j                  t        f      sJ |j                         }|r|d   dk(  r|dd  }t        j                  |      }t        
j                  j                  j                  | |            }|j                  d|      } |       x|d<   } 
j                  j                  j                  | |fi | |j!                         }	|	|k7  rt#        ||	d       |	|k(  sJ y rq   )rg   rd   re   rF   r   rr   rs   r^   rh   r   r   listrT   r!   ri   dump_allrj   r<   rt   s             r   round_trip_allz#YAML.<locals>.MyYAML.round_trip_all   s    Bfu'8'8'?'?'I'I3&OPPP'')C&)t+__V,F))..77fEFD7766*D!)+CMB+E""++D$>#>++-Cd{T3/$;;r   N)	__name__
__module____qualname____doc__r   r!   rV   rQ   rx   )r   s   r   MyYAMLr[      s    3	=		#(	"	r   r}    )r   r   rT   )rl   r}   r   s     @r   rT   rT      s/    F""'' FP <B<r   c                    ddl m}m}m} t	        |d      st        t        |            }|d}||z  }|j                  t        |              	 t        j                  g}|r|j                  d       |j                  t        |             t        dg|   |||d	      }	|kd
t        j                  v r6|	j                  d      }	|	D 
cg c]	  }
d|
vs|
 }	}
dj                  |	      }	t        d|	d       t        d|d       |	|k(  sJ yc c}
w # |$ rT}t        dj!                  t        j                  |             t        |j"                         |j$                  cY d}~S d}~ww xY w)zk
    safe and run a python program, thereby circumventing any restrictions on module level
    imports
    r   )check_outputSTDOUTCalledProcessErrorhashNzsafe_and_run_tmp.pyz-Ozrunning:T)stderruniversal_newlines__pypy__zno version inforC   z	result:  )endz	expected:z"##### Running '{} {}' FAILED #####)
subprocessr   r   r   hasattrr   r^   
write_textr   r3   
executableappendrE   builtin_module_namesr1   joinrI   output
returncode)programbase_dirr   r9   	optimizedr   r   r   cmdrP   r>   	exceptions               r   save_and_runr     sT   
 DC8V$H&)	9$I)$~~JJt

3y>"j33v$GS555nnT*(+M/@/LtMMggcl+s++v2.&= =
  N
  $299#..)TUi###$s8   A>D 	DD6D D E0A	E+%E0+E0)NN)NNNNNNNN)stdin)NNNNNNNNNNNN)NNNNNNNNNNN)NNNF)r|   r3   r   pathlibr   objectenforcer   r   r"   r+   r<   rQ   rX   rT   r   r~   r   r   <module>r      s      
(
!		 4  

;@ 

,^K\!r   