
    wi%                         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dS )z?
helper routines for testing round trip of commented YAML data
    N)Pathc                     	 |                      d          }t          |          D ]#}| |                                         st          $	 | |dz   d          } n# t          $ r Y nw xY wt	          j        |           S )N
   )indexrangeisspace
ValueErrortextwrapdedent)dataposition_of_first_newlineidxs      q/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/srsly/tests/ruamel_yaml/roundtrip.pyr   r      s    5$(JJt$4$4!233 	! 	!C9$$&& !  !	! -1334     ?4   s   AA 
A&%A&c                 x    dd l }t          |           }|j                            ||j        j        ||          S Nr   )Loaderpreserve_quotesversion)srsly.ruamel_yamlr   ruamel_yamlloadRoundTripLoaderinpr   r   srslydinps        r   round_trip_loadr      sK    #;;D!! 0'	 "       c                 x    dd l }t          |           }|j                            ||j        j        ||          S r   )r   r   r   load_allr   r   s        r   round_trip_load_allr"   $   sK    #;;D%% 0'	 &   r   c	                 P    dd l }	|	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   sK     ,,)3!%! - 
 
 
r   stdinc                 D   dd l }|                     d          }|                    d          }|                    |||d          }t          j        dk     }|D ]F}|r#|d d         dv r|                                dz   }t          j                            |           Gd S )Nr   Tzround trip YAML)         )z--- z+++ r   )difflib
splitlinesunified_diffsysversion_inforstripstdoutwrite)	r   outp	file_namer1   inloutldiffstrip_trailing_spacelines	            r   r=   r=   J   s    NNN
..

C??4  DT96GHHD+f4   	(D!H0@$@$@;;==4'D
 r   c           
      L   || }t          |          }|||z  }t          | |          }|rt          d|           |kt          |t                    rV|                                D ]A\  }}||         |k    r0t          d                    ||         |                     t          Bt          ||||||	|
|          }||k    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)
    N)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   r9   extraintermediater%   r&   r'   r(   r   r)   r*   r   	dump_datadoutpr   kvress                     r   
round_triprR   X   s   & |4LLE3@@@D fdlD)) 	%$**,, % %17a<<*11$q'1==>>>$$   )3!%!	 	 	C e||UC(((	
"----%<<<<
)3!%!	 	 	C 

*CR8888%<<<<Kr   c                 4   t          |           } || }|
|
}
t          |          }|||z  }t                      }||_        d|_        |                    |           }|rt          d|           |kt          |t                    rV|                                D ]A\  }}||         |k    r0t          d	                    ||         |                     t          B||_        ||_        ||_        ||_        |	|_        |                    ||          }|S )rA   NFr   rB   )compare)r   YAMLr   scalar_after_indicatorr   rF   rG   rH   rI   rJ   r
   r%   r'   r(   r)   r*   dump)r   r9   rK   rL   r%   r'   r(   r   r)   r*   r   rM   rN   yamlr   rO   rP   rQ   s                     r   na_round_triprY      s3   $ ++C|4LLE66D*D"'D99S>>D fdlD)) 	%$**,, % %17a<<*11$q'1==>>>$$   DK!6D$D(D$D
))D%)
(
(CJr   c                  P    dd l  G fddj        j                  } |di | S )Nr   c                   F    e Zd ZdZ fdZ fdZ fdZ fdZ fdZdS )YAML.<locals>.MyYAMLz%auto dedent string parameters on loadc                     t          |t                    r,|r|d         dk    r
|dd          }t          j        |          }j        j                            | |          S Nr   r   r   )rG   strr   r   r   rU   r   )selfr$   r   s     r   r   zYAML.<locals>.MyYAML.load   sc    &#&& 1 (fQi4//#ABBZF!00$)..tV<<<r   c              3      K   t          |t                    r,|r|d         dk    r
|dd          }t          j        |          }j        j                            | |          D ]}|V  d S r^   )rG   r_   r   r   r   rU   r!   )r`   r$   dr   s      r   r!   zYAML.<locals>.MyYAML.load_all   s      &#&& 1 (fQi4//#ABBZF!00&+44T6BB   r   c                 f   ddl m}m} d|v d|v z  sJ d|v r 
j        j        j        |fi |S |                                }t          j        |	                    d                    }|	                    dd          }|r|d         dk    r
|dd          } |            x|d<   } 
j        j        j        | |fi | |
                                }	t          |	           |rBt          |	                                          }	t          |                                          }|	|k    sJ d S )	Nr   StringIOBytesIOr$   rT   unordered_linesFr   r   )srsly.ruamel_yaml.compatre   rf   r   rU   rW   copyr   r   popgetvaluerF   sortedr2   )r`   r   kwre   rf   lkwexpectedrg   strQ   r   s             r   rW   zYAML.<locals>.MyYAML.dump   sU   BBBBBBBBNyB77772~~2u(-24>>2>>>''))Cswwy'9'9::H!gg&7??O (HQK4//#ABB<!)+CMB'E"'d::c:::++--C#JJJ 9S^^--..!("5"5"7"788(??????r   c                 
   ddl m}m} t          |
j        j        j        t          f          sJ |                                }|r|d         dk    r
|dd          }t          j
        |          }
j        j                            | |          }|                    d|          } |            x|d<   } 
j        j        j        | |fi | |                                }	|	|k    rt!          ||	d           |	|k    sJ d S Nr   rd   r   r   r9   r$   rC   )rh   re   rf   rG   r   compat	text_typer_   ri   r   r   rU   r   rj   rW   rk   r=   r`   r$   rm   re   rf   rn   r   r9   rp   rQ   r   s             r   rR   zYAML.<locals>.MyYAML.round_trip   s   BBBBBBBBfu'8'?'I3&OPP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 |                                }|r|d         dk    r
|dd          }t          j
        |          }t          
j        j                            | |                    }|                    d|          } |            x|d<   } 
j        j        j        | |fi | |                                }	|	|k    rt#          ||	d           |	|k    sJ d S rr   )rh   re   rf   rG   r   rs   rt   r_   ri   r   r   listrU   r!   rj   dump_allrk   r=   ru   s             r   round_trip_allz#YAML.<locals>.MyYAML.round_trip_all   s$   BBBBBBBBfu'8'?'I3&OPPPPP''))C $&)t++_V,,F).77fEEFFD7766**D!)+CMB+E"+D$>>#>>>++--Cd{{T3///$;;;;;;r   N)	__name__
__module____qualname____doc__r   r!   rW   rR   ry   )r   s   r   MyYAMLr\      s        33	= 	= 	= 	= 	=	 	 	 	 		# 	# 	# 	# 	#(	 	 	 	 	"	 	 	 	 	 	 	r   r~    )r   r   rU   )rm   r~   r   s     @r   rU   rU      sh    F F F F F F F"' F F FP 6<<B<<r   Fc                 &   ddl m}m}m} t	          |d          st          t          |                    }|d}||z  }|                    t          |                      	 t          j
        g}|r|                    d           |                    t          |                     t          dg|R    |||d	          }	|pd
t          j        v r6|	                    d          }	d |	D             }	d                    |	          }	t          d|	d           t          d|d           |	|k    sJ nZ# |$ rR}
t          d                    t          j
        |                     t          |
j                   |
j        cY d}
~
S d}
~
ww xY wdS )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__c                     g | ]}d |v|	S )zno version infor   ).0r?   s     r   
<listcomp>z save_and_run.<locals>.<listcomp>+  s#    MMM/@/L/Lt/L/L/Lr   rD   z	result:  )endz	expected:z"##### Running '{} {}' FAILED #####)
subprocessr   r   r   hasattrr   r_   
write_textr   r4   
executableappendrF   builtin_module_namesr2   joinrJ   output
returncode)programbase_dirr   r:   	optimizedr   r   r   cmdrQ   	exceptions              r   save_and_runr     s   
 DCCCCCCCCC8V$$ 'H&&)	9$I)))$~ 	JJt

3y>>"""j3l3v$GGGS555nnT**MMMMMggcll+s+++++v2....&==== $ $ $299#.)TTUUUi#######$ 1s    #CD7 7F<AF	F	F)NN)NNNNNNNN)r,   )NNNNNNNNNNNN)NNNNNNNNNNN)NNNF)r}   r4   r   pathlibr   objectenforcer   r   r"   r+   r=   rR   rY   rU   r   r   r   r   <module>r      s]    


       
&((
! 
! 
!	 	 	 		 	 	 	    4     

; ; ; ;@ 

, , , ,^K K K\! ! ! ! ! !r   