Ñò
mÈKc           @   sM  d  Z  d d k Z e i d d j Z e i o# d d k Z e i d e d ƒ n yf e d j o9 e o d d Un d d k	 Z	 e	 Z
 d d	 k l Z n d d k
 Z
 d d	 k l Z Wn, e j
 o  d d k Z e i e =‚  n Xe
 Z Z e i Z e i Z d d k Z d d k Z d d
 k l Z e i d d !d j o d d k Z e i Z n d d k Z e i Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d d d d d d d „ Z  d d d d d d d d d „ Z! d d d d d d d d d d d „
 Z" d „  Z# d „  Z$ y d d k% Z% [% Wn e j
 o d e _& n Xd S(   s½   Support for Berkeley DB 4.0 through 4.7 with a simple interface.

For the full featured object oriented interface use the bsddb.db module
instead.  It mirrors the Oracle Berkeley DB C API.
iÿÿÿÿNi    i   sF   in 3.x, bsddb has been removed; please use the pybsddb project insteadi   t   bsddb3s   from . import _pybsddb(   t   DeadlockWrap(   t   refi   t   _iter_mixinc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sA   t  |  i i ƒ } t | ƒ } t | |  i | ƒ ƒ |  i | <| S(   N(   t   _DeadlockWrapt   dbt   cursort   idR   t   _gen_cref_cleanert   _cursor_refs(   t   selft   curt   key(    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   _make_iter_cursor\   s    c            s   ‡  ‡ f d †  S(   Nc            s   ˆ  i  i ˆ d  ƒ S(   N(   R	   t   popt   None(   R   (   R
   R   (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   <lambda>f   s    (    (   R
   R   (    (   R
   R   s$   /usr/lib/python2.6/bsddb/__init__.pyR   b   s    c         c   sH  t  |  _ |  i d 7_ yyÏ |  i ƒ  } t | i d d d ƒ d } | Vt | d ƒ } xŒ y" t | d d d ƒ d } | VWq] t i j
 oU |  i o t	 d ƒ ‚ n |  i ƒ  } t | i
 | d d d ƒ t | d ƒ } q] Xq] Wn+ t i j
 o n t i j
 o n XWn |  i d 8_ ‚  n X|  i d 8_ d  S(   Ni   i    t   nexts'   Database changed size during iteration.(   t   Falset   _kill_iterationt   _in_iterR   R   t   firstt   getattrt   _bsddbt   DBCursorClosedErrort   RuntimeErrort   sett   DBNotFoundError(   R
   R   R   R   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   __iter__h   s4    		
	c         c   sQ  |  i  p d  St |  _ |  i d 7_ yû yÉ |  i ƒ  } t | i ƒ } | d } | Vt | d ƒ } x‰ y t | ƒ } | d } | VWqi t i	 j
 oU |  i o t
 d ƒ ‚ n |  i ƒ  } t | i | d d d ƒ t | d ƒ } qi Xqi Wn+ t i j
 o n t i	 j
 o n XWn |  i d 8_ ‚  n X|  i d 8_ d  S(   Ni   i    R   s'   Database changed size during iteration.(   R   R   R   R   R   R   R   R   R   R   R   R   R   (   R
   R   t   kvR   R   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt	   iteritems‘   s<    
	

	
	(   t   __name__t
   __module__R   R   R   R   (    (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR   [   s   			)t   _DBWithCursorc           B   sþ   e  Z d  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z	 e
 i d	 d
 !d j o d „  Z n d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e
 i d	 d j o
 e Z n d „  Z d „  Z d „  Z d „  Z RS(   s˜   
    A simple wrapper around DB that makes it look like the bsddbobject in
    the old module.  It uses a cursor as needed to provide DB traversal.
    c         C   sJ   | |  _  |  i  i d ƒ d  |  _ d  |  _ h  |  _ d |  _ t |  _ d  S(   Ni    (	   R   t   set_get_returns_noneR   t   dbct   saved_dbc_keyR	   R   R   R   (   R
   R   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   __init__Â   s    					c         C   s   |  i  ƒ  d  S(   N(   t   close(   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   __del__Ú   s    c         C   s`   |  i  d  j oL t |  i i ƒ |  _  |  i d  j	 o# t |  i  i |  i ƒ d  |  _ q\ n d  S(   N(   R#   R   R   R   R   R$   R   (   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   _checkCursorÝ   s
    i   c         C   s¼   |  i  om |  i  } d  |  _  | o@ y# t | i d d d ƒ d |  _ Wqc t i j
 o qc Xn t | i ƒ ~ n x> |  i i	 ƒ  D]- } | ƒ  } | d  j	 o t | i ƒ q‡ q‡ Wd  S(   Ni    (
   R#   R   R   t   currentR$   R   t   DBErrorR&   R	   t   values(   R
   t   savet   ct   cref(    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   _closeCursorsè   s    
		#	 	c         C   s!   |  i  d  j o t d ‚ n d  S(   Ns$   BSDDB object has already been closed(   R   R   t   error(   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt
   _checkOpenø   s    c         C   s   |  i  d  j	 S(   N(   R   R   (   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   isOpenü   s    c            s   ˆ  i  ƒ  t ‡  f d †  ƒ S(   Nc              s   t  ˆ  i ƒ S(    (   t   lenR   (    (   R
   (    s$   /usr/lib/python2.6/bsddb/__init__.pyR     s    (   R1   R   (   R
   (    (   R
   s$   /usr/lib/python2.6/bsddb/__init__.pyt   __len__ÿ   s    
i    i   i   c         C   s7   |  i  ƒ  o t t t |  i i ƒ ƒ ƒ St t ƒ  ƒ S(   N(   R2   t   reprt   dictR   R   t   items(   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   __repr__  s    c            s    ˆ  i  ƒ  t ‡  ‡ f d †  ƒ S(   Nc              s   ˆ  i  ˆ S(    (   R   (    (   R
   R   (    s$   /usr/lib/python2.6/bsddb/__init__.pyR     s    (   R1   R   (   R
   R   (    (   R
   R   s$   /usr/lib/python2.6/bsddb/__init__.pyt   __getitem__	  s    
c            s[   ˆ  i  ƒ  ˆ  i ƒ  ˆ  i o ˆ ˆ  j o t ˆ  _ n ‡  ‡ ‡ f d †  } t | ƒ d  S(   Nc              s   ˆ ˆ  i  ˆ <d  S(   N(   R   (    (   R
   t   valueR   (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   wrapF  s    (   R1   R/   R   t   TrueR   R   (   R
   R   R:   R;   (    (   R
   R:   R   s$   /usr/lib/python2.6/bsddb/__init__.pyt   __setitem__  s    

c            sX   ˆ  i  ƒ  ˆ  i ƒ  ˆ  i o ˆ ˆ  j o t ˆ  _ n ‡  ‡ f d †  } t | ƒ d  S(   Nc              s   ˆ  i  ˆ =d  S(   N(   R   (    (   R
   R   (    s$   /usr/lib/python2.6/bsddb/__init__.pyR;     s    (   R1   R/   R   R<   R   R   (   R
   R   R;   (    (   R
   R   s$   /usr/lib/python2.6/bsddb/__init__.pyt   __delitem__  s    

c         C   sv   |  i  d d ƒ |  i d  j	 o t |  i i ƒ n d } |  i d  j	 o t |  i i ƒ } n d  |  _ d  |  _ | S(   NR,   i    (   R/   R#   R   R   R&   R   (   R
   t   v(    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR&     s    		c         C   s   |  i  ƒ  t |  i i ƒ S(   N(   R1   R   R   t   keys(   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR@   *  s    
c         C   s   |  i  ƒ  t |  i i | ƒ S(   N(   R1   R   R   t   has_key(   R
   R   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyRA   .  s    
c         C   s'   |  i  ƒ  |  i ƒ  t |  i i | ƒ S(   N(   R1   R(   R   R#   t	   set_range(   R
   R   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   set_location2  s    

c         C   s0   |  i  ƒ  |  i ƒ  t t |  i d ƒ ƒ } | S(   NR   (   R1   R(   R   R   R#   (   R
   t   rv(    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR   7  s    

i   c         C   s*   |  i  ƒ  |  i ƒ  t |  i i ƒ } | S(   N(   R1   R(   R   R#   t   prev(   R
   RD   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   previous@  s    

c         C   s3   |  i  ƒ  d  |  _ |  i ƒ  t |  i i ƒ } | S(   N(   R1   R   R$   R(   R   R#   R   (   R
   RD   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR   F  s
    
	
c         C   s3   |  i  ƒ  d  |  _ |  i ƒ  t |  i i ƒ } | S(   N(   R1   R   R$   R(   R   R#   t   last(   R
   RD   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyRG   N  s
    
	
c         C   s   |  i  ƒ  t |  i i ƒ S(   N(   R1   R   R   t   sync(   R
   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyRH   V  s    
(   i   i   (   R   R    t   __doc__R%   R'   R(   R/   R1   R2   R4   t   syst   version_infoR8   R9   R=   R>   R&   R@   RA   RC   R   t   __next__RF   R   RG   RH   (    (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyR!   ½   s0   																
			R-   i¶  c	         C   sÒ   t  | |  ƒ }	 t | ƒ }
 t i |
 ƒ } | i | ƒ | d  j	 o | i | ƒ n | d  j	 o | i | ƒ n | d  j	 o | i | ƒ n | d  j	 o | i	 | ƒ n | i
 |  t i |	 | ƒ t | ƒ S(   N(   t
   _checkflagt
   _openDBEnvR   t   DBt	   set_flagsR   t   set_pagesizet
   set_lordert   set_h_ffactort   set_h_nelemt   opent   DB_HASHR!   (   t   filet   flagt   modet   pgsizet   ffactort   nelemt	   cachesizet   lordert   hflagst   flagst   et   d(    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   hashopen^  s        c	         C   sÒ   t  | |  ƒ }	 t | ƒ }
 t i |
 ƒ } | d  j	 o | i | ƒ n | d  j	 o | i | ƒ n | i | ƒ | d  j	 o | i | ƒ n | d  j	 o | i	 | ƒ n | i
 |  t i |	 | ƒ t | ƒ S(   N(   RM   RN   R   RO   R   RQ   RR   RP   t   set_bt_minkeyt   set_bt_maxkeyRU   t   DB_BTREER!   (   RW   RX   RY   t   btflagsR]   t
   maxkeypaget
   minkeypageRZ   R^   R`   Ra   Rb   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   btopenn  s        c         C   s  t  | |  ƒ } t | ƒ } t i | ƒ } | d  j	 o | i | ƒ n | d  j	 o | i | ƒ n | i | ƒ | d  j	 o | i | ƒ n | d  j	 o | i	 | ƒ n |	 d  j	 o | i
 |	 ƒ n |
 d  j	 o | i |
 ƒ n | i |  t i | | ƒ t | ƒ S(   N(   RM   RN   R   RO   R   RQ   RR   RP   t   set_re_delimt
   set_re_lent   set_re_sourcet
   set_re_padRU   t   DB_RECNOR!   (   RW   RX   RY   t   rnflagsR]   RZ   R^   t   rlent   delimt   sourcet   padR`   Ra   Rb   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   rnopen€  s$          c         C   sŠ   t  i ƒ  } |  d  j	 o. |  d j o | i d |  ƒ qG t d ‚ n | i t  i ƒ | i d t  i t  i	 Bt  i
 Bt  i Bt  i Bƒ | S(   Ni P  i    s   cachesize must be >= 20480t   .(   R   t   DBEnvR   t   set_cachesizeR0   t   set_lk_detectt   DB_LOCK_DEFAULTRU   t
   DB_PRIVATEt	   DB_CREATEt	   DB_THREADt   DB_INIT_LOCKt   DB_INIT_MPOOL(   R]   Ra   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyRN   “  s    /c         C   sÄ   |  d j o t  i } n  |  d j o
 d } n‰ |  d j o t  i } no |  d j o t  i } nU |  d j o> t  i } | d  j	 o$ t i i | ƒ o t i | ƒ q¹ n
 t d ‚ | t  i	 BS(   Nt   rt   rwi    t   wR-   t   ns+   flags should be one of 'r', 'w', 'c' or 'n'(
   R   t	   DB_RDONLYR|   R   t   ost   patht   isfilet   unlinkR0   R}   (   RX   RW   R`   (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyRM   ž  s    
	 	(   i   i   ('   RI   RJ   RK   t   absolute_importt   py3kwarningt   warningst   warnpy3kt   DeprecationWarningR   t   _pybsddbR   t   bsddb3.dbutilsR   R   t   bsddb.dbutilst   ImportErrort   modulesR   t   _dbt   __version__R*   R0   R…   t   weakrefR   t   UserDictt	   DictMixint   MutableMappingt   collectionsR   R!   R   Rc   Rj   Ru   RN   RM   t   threadR}   (    (    (    s$   /usr/lib/python2.6/bsddb/__init__.pyt   <module>(   s\   
	

			b¡		