
    n%@e                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ ddlm	Z	m
Z
 dej        z   ej        z   e j        j        z   Zd Zd Zd	 Z G d
 d          ZdS )    N)memoize)contextmanager   )
nested_getflattenz-_.() c                 \    d                     t          t          j        |                     S )zc Escape text so that it is a valid filename

    >>> escape_filename('Foo!bar?')
    'Foobar'

     )joinfiltervalid_chars__contains__)fns    *lib/python3.11/site-packages/partd/core.pyescape_filenamer      s#     776+2B77888    c                 v    t           j                            | t          t	          |                              S N)ospathr
   r   token)r   keys     r   filenamer      s&    7<<oeCjj99:::r   c                     t          | t                    r| S t          | t                    r&t          j        j        t          t          |            S t          |           S )zo

    >>> token('hello')
    'hello'
    >>> token(('hello', 'world'))  # doctest: +SKIP
    'hello/world'
    )
isinstancestrtupler   r   r
   mapr   )r   s    r   r   r      sO     #s 
	C		 w|S__--3xxr   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	Interfacec                 ,    t                      | _        d S r   )set
_iset_seenselfs    r   __init__zInterface.__init__.   s    %%r   c                 `    | j                             |           t                      | _        d S r   )__dict__updater!   r"   )r$   states     r   __setstate__zInterface.__setstate__1   s'    U###%%r   c                 n    || j         v rd S  | j        ||fi | | j                             |           d S r   )r"   _isetadd)r$   r   valuekwargss       r   isetzInterface.iset5   sL    $/!!FDJsE,,V,,,O$$$$$r   c                     | S r    r#   s    r   	__enter__zInterface.__enter__<   s    r   c                 .    |                                   d S r   )drop)r$   typer.   	tracebacks       r   __exit__zInterface.__exit__?   s    		r   c                 >    |                      |gd          d         S )NFlockr   )_get)r$   r   s     r   igetzInterface.igetB   s    yy#Uy++A..r   c           	      N   t          |t                    s | j        |gfi |d         S t          d |D                       rUt          t	          |                    } | j        |fi |}t          |t          t          ||                              S  | j        |fi |S )Nr   c              3   @   K   | ]}t          |t                    V  d S r   )r   list).0r   s     r   	<genexpr>z Interface.get.<locals>.<genexpr>H   s,      773C&&777777r   )	r   r@   getanyr   r   dictzipr<   )r$   keysr/   flatkeysresults        r   rC   zInterface.getE   s    $%% 	-48TF--f--a0077$77777 	-GDMM**HTXh11&11FdDXv)>)>$?$?@@@49T,,V,,,r   c                 f    t          |t                    s | j        |gfi |S  | j        |fi |S r   )r   r@   _delete)r$   rG   r/   s      r   deletezInterface.deleteO   sJ    $%% 	04<11&1114</////r   c                     | j         j        5  | j                             |d          }| j                             |d           d d d            n# 1 swxY w Y   |S )NFr:   )partdr;   rC   rL   )r$   rG   r/   rI   s       r   popzInterface.popU   s    Z_ 	0 	0Z^^Du^55FJd///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 s   9AAAN)__name__
__module____qualname__r%   r*   r0   r3   r8   r=   rC   rL   rO   r2   r   r   r   r   -   s                  % % %    / / /- - -0 0 0    r   r   )r   shutillocketstringtoolzr   
contextlibr   utilsr   r   ascii_lettersdigitsr   sepr   r   r   r   r   r2   r   r   <module>r\      s    				          % % % % % % & & & & & & & &
 --=K9 9 9; ; ;   , , , , , , , , , ,r   