
    @g                        d dl Z d dlZd dlmZmZmZmZ  G d de      Zeeeee	edf   f   Z
e G d de             Zdeeef   d	efd
Z ej                         fde
deeef   fdZe j                  deee	e
f   fd       Zej"                  de	fd       Zej"                  defd       Zej"                  defd       Zy)    N)DictProtocolUnionruntime_checkablec                       e Zd ZdZy)Symlinkz6
    A string indicating the target of a symlink.
    N)__name__
__module____qualname____doc__     T/var/www/openai/venv/lib/python3.12/site-packages/importlib_resources/tests/_path.pyr   r   	   s    r   r   	FilesSpecc                   *    e Zd Zd Zd Zd Zd Zd Zy)	TreeMakerc                      y Nr   )selfargskwargss      r   __truediv__zTreeMaker.__truediv__   s    Cr   c                      y r   r   )r   r   s     r   mkdirzTreeMaker.mkdir   s    sr   c                      y r   r   )r   contentr   s      r   
write_textzTreeMaker.write_text   s    Sr   c                      y r   r   )r   r   s     r   write_byteszTreeMaker.write_bytes   s    Cr   c                      y r   r   )r   targets     r   
symlink_tozTreeMaker.symlink_to   s    #r   N)r	   r
   r   r   r   r   r   r"   r   r   r   r   r      s    /"0'%r   r   objreturnc                 P    t        | t              r| S t        j                  |       S r   )
isinstancer   pathlibPath)r#   s    r   _ensure_tree_makerr)      s    S),3C',,s2CCr   specprefixc                 d    | j                         D ]  \  }}t        |t        |      |z          y)a  
    Build a set of files/directories, as described by the spec.

    Each key represents a pathname, and the value represents
    the content. Content may be a nested directory.

    >>> spec = {
    ...     'README.txt': "A README file",
    ...     "foo": {
    ...         "__init__.py": "",
    ...         "bar": {
    ...             "__init__.py": "",
    ...         },
    ...         "baz.py": "# Some code",
    ...         "bar.py": Symlink("baz.py"),
    ...     },
    ...     "bing": Symlink("foo"),
    ... }
    >>> target = getfixture('tmp_path')
    >>> build(spec, target)
    >>> target.joinpath('foo/baz.py').read_text(encoding='utf-8')
    '# Some code'
    >>> target.joinpath('bing/bar.py').read_text(encoding='utf-8')
    '# Some code'
    N)itemscreater)   )r*   r+   namecontentss       r   buildr1   #   s-    : **,hx+F3d:; 'r   r   c                 B    |j                  d       t        | |       y )NT)exist_ok)r+   )r   r1   r   paths     r   r.   r.   D   s    JJJ	'$r   c                 &    |j                  |        y r   )r   r4   s     r   _r7   J   s    Wr   c                 *    |j                  | d       y )Nzutf-8)encoding)r   r4   s     r   r7   r7   O   s    OOGgO.r   c                 &    |j                  |        y r   )r"   r4   s     r   r7   r7   T   s    OOGr   )	functoolsr'   typingr   r   r   r   strr   bytesr   r   r)   r(   r1   singledispatchr.   registerr7   r   r   r   <module>rA      s,     ; ;c  eC<==>	 	& 	& 	&DE#y.1 Di D %1GLLN<
<#y.!<B  E#ui/0    
 u   /s / / w  r   