
    h%                         S r SSKrSSKrSSKJr  \" 5       rS rSS jrSS jr	        SS jr
SS jr            SS	 jr           SS
 jrS rSS jrg)z?
helper routines for testing round trip of commented YAML data
    N)Pathc                      U R                  S5      n[        U5       H   nX   R                  5       (       a  M  [        e   XS-   S  n [        R
                  " U 5      $ ! [         a     N"f = f)N
   )indexrangeisspace
ValueErrortextwrapdedent)dataposition_of_first_newlineidxs      [/home/james-whalen/.local/lib/python3.13/site-packages/srsly/tests/ruamel_yaml/roundtrip.pyr   r      sr    5$(JJt$4!23C9$$&&   4 134??4  	  s   4A A 
A,+A,c                     SS K n[        U 5      nUR                  R                  UUR                  R                  UUS9$ 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                     SS K n[        U 5      nUR                  R                  UUR                  R                  UUS9$ r   )r   r   r   load_allr   r   s        r   round_trip_load_allr"   $   sD    #;D%%  00'	 &  r   c	                 L    SS K n	U	R                  R                  U UUUUUUUUS9	$ )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                 2   SS K nU R                  S5      nUR                  S5      nUR                  XEUS5      n[        R                  S:  nU HE  nU(       a  US S S;   a  UR                  5       S-   n[        R                  R                  U5        MG     g )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96GHD++f4D!H0@$@;;=4'D

 r   c                    Uc  U n[        U5      nUb  X-  n[        XS9nU(       a  [        SU5        UbZ  [        U[        5      (       aE  UR                  5        H1  u  nnX   U:w  d  M  [        SR                  X   U5      5        [        e   [        UUUUUU	U
US9nUU:w  a  [        UUS5        [        SUSS9  UU:X  d   e[        UUUUUU	U
US9n[        S	USS9  UU:X  d   eU$ )
W
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$'1=>$$ - )3!%!	C e|UC(	
"-%<<
)3!%!	C 

*CR8%<<Kr   c                    [        U 5      n Uc  U nU
b  U
n
[        U5      nUb  X-  n[        5       nX}l        SUl        UR	                  U 5      nU(       a  [        SU5        UbZ  [        U[        5      (       aE  UR                  5        H1  u  nnX   U:w  d  M  [        SR                  X   U5      5        [        e   XMl        X]l        Xml        Xl        Xl        UR!                  XS9nU$ )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99S>DfdlD))$**,17a<*11$'1=>$$ - K!6$($
))D)
(CJr   c                  `   ^ SS K m " U4S jSTR                  R                  5      nU" S0 U D6$ )Nr   c                   V   > \ rS rSrSrU 4S jrU 4S jrU 4S jrU 4S jrU 4S jr	Sr
g	)
YAML.<locals>.MyYAML   z%auto dedent string parameters on loadc                    > [        U[        5      (       a+  U(       a  US   S:X  a  USS  n[        R                  " U5      nTR                  R
                  R                  X5      $ Nr   r   r   )rF   strr   r   r   rT   r   )selfr$   r   s     r   r   YAML.<locals>.MyYAML.load   sT    &#&&fQi4/#ABZF!0$$))..t<<r   c              3      >#    [        U[        5      (       a+  U(       a  US   S:X  a  USS  n[        R                  " U5      nTR                  R
                  R                  X5       H  nUv   M	     g 7fr^   )rF   r_   r   r   r   rT   r!   )r`   r$   dr   s      r   r!   YAML.<locals>.MyYAML.load_all   sa     &#&&fQi4/#ABZF!0&&++44TB Cs   A2A5c                 h  > SSK JnJn  SU;   SU;   -  (       d   eSU;   a'  T
R                  R                  R
                  " U40 UD6$ UR                  5       n[        R                  " UR                  S5      5      nUR                  SS5      nU(       a  US   S:X  a  USS  nU" 5       =US'   nT
R                  R                  R
                  " X40 UD6  UR                  5       n	[        U	5        U(       a2  [        U	R                  5       5      n	[        UR                  5       5      nX:X  d   eg )	Nr   StringIOBytesIOr$   rS   unordered_linesFr   r   )srsly.ruamel_yaml.compatrg   rh   r   rT   rV   copyr   r   popgetvaluerE   sortedr1   )r`   r   kwrg   rh   lkwexpectedri   strP   r   s             r   rV   YAML.<locals>.MyYAML.dump   s   BNyB7772~((--224>2>>'')Cswwy'9:H!gg&7?OHQK4/#AB<!)+CMB""'':c:++-C#JS^^-.!("5"5"78?"?r   c                   > SSK JnJn  [        UT
R                  R
                  R                  [        45      (       d   eUR                  5       nU(       a  US   S:X  a  USS  n[        R                  " U5      nT
R                  R                  R                  X5      nUR                  SU5      nU" 5       =US'   nT
R                  R                  R                  " X40 UD6  UR                  5       n	X:w  a  [!        XyS5        X:X  d   eg Nr   rf   r   r   r8   r$   rB   )rj   rg   rh   rF   r   compat	text_typer_   rk   r   r   rT   r   rl   rV   rm   r<   r`   r$   ro   rg   rh   rp   r   r8   rr   rP   r   s             r   rQ   YAML.<locals>.MyYAML.round_trip   s    Bfu'8'8'?'?'I'I3&OPPPP'')C&)t+__V,F$$))..t<D7766*D!)+CMB""'':c:++-C{T/;;r   c                 0  > SSK JnJn  [        UT
R                  R
                  R                  [        45      (       d   eUR                  5       nU(       a  US   S:X  a  USS  n[        R                  " U5      n[        T
R                  R                  R                  X5      5      nUR                  SU5      nU" 5       =US'   nT
R                  R                  R                  " X40 UD6  UR!                  5       n	X:w  a  [#        XyS5        X:X  d   eg ru   )rj   rg   rh   rF   r   rv   rw   r_   rk   r   r   listrT   r!   rl   dump_allrm   r<   rx   s             r   round_trip_all#YAML.<locals>.MyYAML.round_trip_all   s    Bfu'8'8'?'?'I'I3&OPPPP'')C&)t+__V,F))..77EFD7766*D!)+CMB""++D>#>++-C{T/;;r    N)__name__
__module____qualname____firstlineno____doc__r   r!   rV   rQ   r}   __static_attributes__)r   s   r   MyYAMLr[      s$    3	=		#(	"	 	r   r   r   )r   r   rT   )ro   r   r   s     @r   rT   rT      s/    F""'' FP <B<r   c                    SSK JnJnJn  [	        US5      (       d  [        [        U5      5      nUc  SnX-  nUR                  [        U 5      5         [        R                  /nU(       a  UR                  S5        UR                  [        U5      5        [        S/UQ76   U" XSS	9n	Ubm  S
[        R                  ;   a<  U	R                  S5      n	U	 V
s/ s H  n
SU
;  d  M  U
PM     n	n
SR                  U	5      n	[        SU	SS9  [        SUSS9  X:X  d   egs  sn
f ! U aT  n[        SR!                  [        R                  U5      5        [        UR"                  5        UR$                  s SnA$ SnAff = f)z_
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     sR   
 DC8V$$H&)	$I)$~~JJt

3y>"j33$GS555nnT*(+M/@/LtMggcl+s++v2.= =
  N
  $299#..)TUi###$s8   BD  
D$D*0D  D   E:&A	E5/E:5E:)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   