
    bi                         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y)    N)memoize)contextmanager   )
nested_getflattenz-_.() c                 T    dj                  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    E/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/partd/core.pyescape_filenamer      s      776+22B788    c                 f    t         j                  j                  | t        t	        |                  S N)ospathr
   r   token)r   keys     r   filenamer      s     77<<oeCj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      s?     #s
	C	ww||S_--3xr   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)	Interfacec                 "    t               | _        y r   )set
_iset_seenselfs    r   __init__zInterface.__init__.   s    %r   c                 X    | j                   j                  |       t               | _        y r   )__dict__updater!   r"   )r$   states     r   __setstate__zInterface.__setstate__1   s    U#%r   c                     || j                   v ry  | j                  ||fi | | j                   j                  |       y r   )r"   _isetadd)r$   r   valuekwargss       r   isetzInterface.iset5   s8    $//!DJJsE,V,OO$r   c                     | S r    r#   s    r   	__enter__zInterface.__enter__<   s    r   c                 $    | j                          y r   )drop)r$   typer.   	tracebacks       r   __exit__zInterface.__exit__?   s    		r   c                 0    | j                  |gd      d   S )NFlockr   )_get)r$   r   s     r   igetzInterface.igetB   s    yy#Uy+A..r   c           	      &   t        |t              s | j                  |gfi |d   S t        d |D              rFt        t	        |            } | j                  |fi |}t        |t        t        ||                  S  | j                  |fi |S )Nr   c              3   <   K   | ]  }t        |t                y wr   )r   list).0r   s     r   	<genexpr>z Interface.get.<locals>.<genexpr>H   s     73C&7s   )	r   r@   getanyr   r   dictzipr<   )r$   keysr/   flatkeysresults        r   rC   zInterface.getE   s    $%488TF-f-a007$77GDM*HTXXh1&1FdDXv)>$?@@499T,V,,r   c                 p    t        |t              s | j                  |gfi |S  | j                  |fi |S r   )r   r@   _delete)r$   rG   r/   s      r   deletezInterface.deleteO   s:    $%4<<1&114<<///r   c                     | j                   j                  5  | j                   j                  |d      }| j                   j                  |d       d d d        |S # 1 sw Y   S xY w)NFr:   )partdr;   rC   rL   )r$   rG   r/   rI   s       r   popzInterface.popU   sX    ZZ__ 	0ZZ^^Du^5FJJd/	0 	0 s   ;AA&N)__name__
__module____qualname__r%   r*   r0   r3   r8   r=   rC   rL   rO   r2   r   r   r   r   -   s/      %/-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; , ,r   