
    Vh
                        d Z ddlmZ ddlZddlZddlZddlZddlm	Z	m
Z
mZ ddZddZddZdd	Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd
ZdddZdddZdddZ G d dej(                        Zy)zFunctions for disk IO.    )annotationsN   )ENCODINGto_bytesto_textc                >    t        j                  t        |             S )z:Parse and return the json content from the specified path.)jsonloadsread_text_filepaths    I/home/dcms/DCMS/lib/python3.12/site-packages/ansible_test/_internal/io.pyread_json_filer      s    ::nT*++    c                *    t        t        |             S )z2Return the contents of the specified path as text.)r   read_binary_filer   s    r   r   r      s    #D)**r   c                d    t        |       5 }|j                         cddd       S # 1 sw Y   yxY w)z3Return the contents of the specified path as bytes.N)open_binary_fileread)r   file_objs     r   r   r      s*    	$	 8}}  s   &/c                D    t        j                  t        |       d       y)zGCreate a directory at path, including any necessary parent directories.T)exist_okN)osmakedirsr   r   s    r   	make_dirsr       s    KK.r   c                l    t        j                  |||rdnd|rdnd|      dz   }t        | ||       |S )z\Write the given json content to the specified path, optionally creating missing directories.   N)z, z: ),:)	sort_keysindent
separatorscls
)create_directories)r	   dumpswrite_text_file)r   contentr%   	formattedencodertext_contents         r   write_json_filer,   %   sG     ::g(1*3Q9B
")	 
 #''L D,;MNr   c                    |r(t        t        j                  j                  |              t	        | d      5 }|j                  t        |             ddd       y# 1 sw Y   yxY w)z\Write the given text content to the specified path, optionally creating missing directories.wbN)r   r   r   dirnamer   writer   )r   r(   r%   r   s       r   r'   r'   9   sL    "''//$'(	$	% *x()* * *s   AA$c                p    d|v rt        d|z        t        j                  t        |       |t              S )z$Open the given path for text access.bz*mode cannot include "b" for text files: %s)encoding)	Exceptionioopenr   r   r   modes     r   open_text_filer9   B   s1    
d{DtKLL778D>4(;;r   c                d    d|vrt        d|z        t        j                  t        |       |      S )z&Open the given path for binary access.r2   z*mode must include "b" for binary files: %s)r4   r5   r6   r   r7   s     r   r   r   J   s/    
$DtKLL778D>4((r   c                      e Zd ZdZddZy)SortedSetEncoderzEncode sets as sorted lists.c                x    t        |t              rt        |      S t        j                  j                  | |      S )z.Return a serialized version of the `o` object.)
isinstancesetsortedr	   JSONEncoderdefault)selfos     r   rB   zSortedSetEncoder.defaultU   s/    a!9''a00r   N)rD   t.AnyreturnrE   )__name__
__module____qualname____doc__rB    r   r   r<   r<   R   s
    &1r   r<   )r   strrF   rE   )r   rL   rF   rL   )r   rL   rF   bytes)r   rL   rF   None)FTN)r   rL   r(   rE   r%   boolr)   rO   r*   z$t.Optional[t.Type[json.JSONEncoder]]rF   rL   )F)r   rL   r(   rL   r%   rO   rF   rN   )r)r   rL   r8   rL   rF   z	t.IO[str])rb)r   rL   r8   rL   rF   zt.IO[bytes])rJ   
__future__r   r5   r	   r   typingtr3   r   r   r   r   r   r   r   r,   r'   r9   r   rA   r<   rK   r   r   <module>rU      s     " 	  	  ,
+
/  %48
  	
 2 	(*<)1t'' 1r   