mņ
/}	Fc           @   sS   d  k  Z  d  k Z d d d d d d f Z d d d  Z d e f d     YZ d  S(   Nt   _t   _under_t   /t   _slash_s   \t   _bslash_s   	t   _tab_s   
t   _lf_s   t   _cr_s   UTF-8c         C   s\   | | j o" t |  | d  i | d  }  n x& t D] \ } } |  i | |  }  q6 W|  S(   Nt   replace(   t   inenct   fsenct   unicodet   keyt   encodet   _escape_mappingt   charR   (   R   R	   R
   R   R   (    (    t"   /data/htdocs/projects/ezdb/ezdb.pyt
   escape_key   s    " t   ezdbc           B   sh   t  Z d  Z d d e d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   s    very simple flat-file db

        stores objects using some id as filename (may be optimized into
        a dir structure) 
    s   UTF-8c         C   sG   t  i i |  |  _ |  i i d t  | |  _ | |  _ | |  _	 d  S(   Nt   dir(
   t   pyt   patht   localt   dbpatht   selft   ensuret   TrueR	   R
   t   indexer(   R   R   R	   R
   R   (    (    R   t   __init__   s
    		c         C   sŹ   t  | t  p t d   n |  i i t | |  i |  i	   } | i d t  p t |   n | i   } zE t i | t i  z |  i | i    SWd  t i | t i  XWd  | i   Xd  S(   Ns   only string keys allowedt   file(   t
   isinstanceR   t   strt
   ValueErrorR   R   t   joinR   R	   R
   t   fpatht   checkR   t   KeyErrort   opent   fpt   fcntlt   flockt   LOCK_EXt   _deserializet   readt   LOCK_UNt   close(   R   R   R&   R"   (    (    R   t   __getitem__&   s    $  c         C   sū   t  | t  p t d   n t  | t  p t d   n |  i i t	 | |  i
 |  i   } | i d t  | i   } zH t i | t i  z | i |  i |   Wd  t i | t i  XWd  | i   X|  i o |  i i | |  n d  S(   Ns   can only store dictss   only string keys allowedR   (   R   t   valuet   dictR    R   R   R   R   R!   R   R	   R
   R"   R   R   R%   R&   R'   R(   R)   t   writet
   _serializeR,   R-   R   t   index(   R   R   R/   R&   R"   (    (    R   t   __setitem__6   s"    $  
c         C   sß   t  | t  p t d   n |  i i t | |  i |  i	   } | i d t  p t |   n | i   } z< t i | t i  z | i   Wd  t i | t i  XWd  | i   X|  i o |  i i |  n d  S(   Ns   only string keys allowedR   (   R   R   R   R    R   R   R!   R   R	   R
   R"   R#   R   R$   R%   R&   R'   R(   R)   t   removeR,   R-   R   t   unindex(   R   R   R&   R"   (    (    R   t   __delitem__I   s     $  
c         C   s    d k  l } d  k } t |  S(   N(   s   Decimal(   t   decimalt   Decimalt   datetimet   evalt   data(   R   R<   R9   R:   (    (    R   R*   [   s    	c         C   s
   t  |  S(   N(   t   reprR<   (   R   R<   (    (    R   R2   `   s    c         C   s   t  |  i i    S(   N(   t   lenR   R   t   listdir(   R   (    (    R   t   __len__c   s    c         c   s?   x8 |  i i   D]' } | i d t  p q n | i Vq Wd  S(   NR   (   R   R   R?   R   R#   R   t   basename(   R   R   (    (    R   t   __iter__f   s
     c         c   sQ   xJ |  i i   D]9 } | i d t  p q n | i t | i    f Vq Wd  S(   NR   (	   R   R   R?   R   R#   R   RA   R;   R+   (   R   R   (    (    R   t	   iteritemsl   s
     (   t   __name__t
   __module__t   __doc__t   NoneR   R.   R4   R7   R*   R2   R@   RB   RC   (    (    (    R   R      s    							(   R    R   (   R   R   (   s   \R   (   s   	R   (   s   
R   (   s   R   (   R   R'   R   R   t   objectR   (   R'   R   R   R   R   (    (    R   t   ?   s   		
