
    Xj                        d dl Z d dlZd dl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z  d	efd
Z ej                    fde
deez  fdZe j        dee	z  e
z  fd            Zej        de	fd            Zej        defd            Zej        defd            ZdS )    N)ProtocolUnionruntime_checkablec                       e Zd ZdZdS )Symlinkz6
    A string indicating the target of a symlink.
    N)__name__
__module____qualname____doc__     \/var/www/FlaskApp/flask-venv/lib/python3.11/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dS )	TreeMakerc                     d S Nr   )selfargskwargss      r   __truediv__zTreeMaker.__truediv__         r   c                     d S r   r   )r   r   s     r   mkdirzTreeMaker.mkdir   r   r   c                     d S r   r   )r   contentr   s      r   
write_textzTreeMaker.write_text   r   r   c                     d S r   r   )r   r   s     r   write_byteszTreeMaker.write_bytes   r   r   c                     d S r   r   )r   targets     r   
symlink_tozTreeMaker.symlink_to   r   r   N)r   r	   r
   r   r   r   r   r"   r   r   r   r   r      s=        ///"""000'''%%%%%r   r   objreturnc                 X    t          | t                    r| nt          j        |           S r   )
isinstancer   pathlibPath)r#   s    r   _ensure_tree_makerr)      s%    S),,C33',s2C2CCr   specprefixc                 z    |                                  D ]%\  }}t          |t          |          |z             &dS )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   #   sJ    : **,, < <hx+F33d:;;;;< <r   r   c                 T    |                     d           t          | |           d S )NT)exist_ok)r+   )r   r1   r   paths     r   r.   r.   D   s/    JJJ	'$r   c                 0    |                     |            d S r   )r   r4   s     r   _r7   J   s    Wr   c                 4    |                     | d           d S )Nzutf-8)encoding)r   r4   s     r   r7   r7   O   s    OOGgO.....r   c                 0    |                     |            d S r   )r"   r4   s     r   r7   r7   T   s    OOGr   )	functoolsr'   typingr   r   r   strr   dictbytesr   r   r)   r(   r1   singledispatchr.   registerr7   r   r   r   <module>rB      s        5 5 5 5 5 5 5 5 5 5    c    eC<==>	 	& 	& 	& 	& 	& 	& 	& 	&DC)O D	 D D D D +glnn< <
<)O< < < <B  C%K)+        
 u     /s / / / / w      r   