ó
è¾bc           @   s}  d  Z  d d l Z e j d d k Z e j d k r“ e j d k  r“ d d l Z e j rz e d k rz e j d e d ƒ n  e j	 d	 d
 e d ƒ n  yb e d k rØ e r³ d d Un d d l
 Z
 e
 Z d d l m Z n d d l Z d d l m Z Wn* e k
 r!d d l Z e j e =‚  n Xe Z Z e j Z e j Z d d l Z d d l Z d d l m Z e j d k  rd d l Z e j Z n d d l Z e j 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 l& Z' [' Wn e k
 rxd e _( n Xd S(   s½   Support for Berkeley DB 4.3 through 5.3 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   i   i   t   bsddb3sQ   in 3.x, the bsddb module has been removed; please use the pybsddb project insteadt   ignores   .*CObject.*s   bsddb.__init__s   from . import _pybsddb(   t   DeadlockWrap(   t   reft   _iter_mixinc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   sA   t  |  j j ƒ } t | ƒ } t | |  j | ƒ ƒ |  j | <| S(   N(   t   _DeadlockWrapt   dbt   cursort   idR   t   _gen_cref_cleanert   _cursor_refs(   t   selft   curt   key(    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   _make_iter_cursor_   s    c            s   ‡  ‡ f d †  S(   Nc            s   ˆ j  j ˆ  d  ƒ S(   N(   R
   t   popt   None(   R   (   R   R   (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   <lambda>i   t    (    (   R   R   (    (   R   R   s$   /usr/lib/python2.7/bsddb/__init__.pyR	   e   s    c         c   sA  t  |  _ |  j d 7_ yú yÌ |  j ƒ  } t | j d d d ƒ d } | Vt | d ƒ } x‰ y" t | d d d ƒ d } | VWq] t j k
 rá |  j rª t	 d ƒ ‚ n  |  j ƒ  } t | j
 | d d d ƒ t | d ƒ } q] Xq] WWn' t j k
 rý n t j k
 rn XWn |  j d 8_ ‚  n X|  j 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.7/bsddb/__init__.pyt   __iter__k   s4    			c         c   sH  |  j  s d  St |  _ |  j d 7_ yô yÆ |  j ƒ  } t | j ƒ } | d } | Vt | d ƒ } x† y t | ƒ } | d } | VWqg t j	 k
 rè |  j r± t
 d ƒ ‚ n  |  j ƒ  } t | j | d d d ƒ t | d ƒ } qg Xqg WWn' t j k
 rn t j	 k
 rn XWn |  j d 8_ ‚  n X|  j 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.7/bsddb/__init__.pyt	   iteritems”   s<    		

		(   t   __name__t
   __module__R   R	   R   R    (    (    (    s$   /usr/lib/python2.7/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
 j d k ri d „  Z n  d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e
 j d d k rÍ 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   | |  _  |  j  j d ƒ d  |  _ d  |  _ i  |  _ 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.7/bsddb/__init__.pyt   __init__Å   s    					c         C   s   |  j  ƒ  d  S(   N(   t   close(   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   __del__Ý   s    c         C   s\   |  j  d  k rX t |  j j ƒ |  _  |  j d  k	 rX t |  j  j |  j ƒ d  |  _ qX n  d  S(   N(   R%   R   R   R   R   R&   R   (   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   _checkCursorà   s
    i   c         C   s´   |  j  rq |  j  } d  |  _  | r^ y# t | j d d d ƒ d |  _ Wq^ t j k
 rZ q^ Xn  t | j ƒ ~ n  x< |  j j	 ƒ  D]+ } | ƒ  } | d  k	 r t | j ƒ 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.7/bsddb/__init__.pyt   _closeCursorsë   s    			#	c         C   s   |  j  d  k r t d ‚ n  d  S(   Ns$   BSDDB object has already been closed(   R   R   t   error(   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt
   _checkOpenû   s    c         C   s   |  j  d  k	 S(   N(   R   R   (   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   isOpenÿ   s    c            s   ˆ  j  ƒ  t ‡  f d †  ƒ S(   Nc              s   t  ˆ  j ƒ S(   N(   t   lenR   (    (   R   (    s$   /usr/lib/python2.7/bsddb/__init__.pyR     R   (   R3   R   (   R   (    (   R   s$   /usr/lib/python2.7/bsddb/__init__.pyt   __len__  s    
i   i   c         C   s5   |  j  ƒ  r( t t t |  j j ƒ ƒ ƒ St t ƒ  ƒ S(   N(   R4   t   reprt   dictR   R   t   items(   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   __repr__  s    c            s    ˆ j  ƒ  t ‡  ‡ f d †  ƒ S(   Nc              s   ˆ j  ˆ  S(   N(   R   (    (   R   R   (    s$   /usr/lib/python2.7/bsddb/__init__.pyR     R   (   R3   R   (   R   R   (    (   R   R   s$   /usr/lib/python2.7/bsddb/__init__.pyt   __getitem__  s    
c            sX   ˆ j  ƒ  ˆ j ƒ  ˆ j r5 ˆ  ˆ k r5 t ˆ _ n  ‡  ‡ ‡ f d †  } t | ƒ d  S(   Nc              s   ˆ ˆ j  ˆ  <d  S(   N(   R   (    (   R   R   t   value(    s$   /usr/lib/python2.7/bsddb/__init__.pyt   wrapF  s    (   R3   R1   R   t   TrueR   R   (   R   R   R<   R=   (    (   R   R   R<   s$   /usr/lib/python2.7/bsddb/__init__.pyt   __setitem__  s    

c            sU   ˆ j  ƒ  ˆ j ƒ  ˆ j r5 ˆ  ˆ k r5 t ˆ _ n  ‡  ‡ f d †  } t | ƒ d  S(   Nc              s   ˆ j  ˆ  =d  S(   N(   R   (    (   R   R   (    s$   /usr/lib/python2.7/bsddb/__init__.pyR=     s    (   R3   R1   R   R>   R   R   (   R   R   R=   (    (   R   R   s$   /usr/lib/python2.7/bsddb/__init__.pyt   __delitem__  s    

c         C   sr   |  j  d d ƒ |  j d  k	 r2 t |  j j ƒ n  d } |  j d  k	 r\ t |  j j ƒ } n  d  |  _ d  |  _ | S(   NR.   i    (   R1   R%   R   R   R(   R   (   R   t   v(    (    s$   /usr/lib/python2.7/bsddb/__init__.pyR(   "  s    		c         C   s   |  j  ƒ  t |  j j ƒ S(   N(   R3   R   R   t   keys(   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRB   -  s    
c         C   s   |  j  ƒ  t |  j j | ƒ S(   N(   R3   R   R   t   has_key(   R   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRC   1  s    
c         C   s'   |  j  ƒ  |  j ƒ  t |  j j | ƒ S(   N(   R3   R*   R   R%   t	   set_range(   R   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   set_location5  s    

c         C   s0   |  j  ƒ  |  j ƒ  t t |  j d ƒ ƒ } | S(   NR   (   R3   R*   R   R   R%   (   R   t   rv(    (    s$   /usr/lib/python2.7/bsddb/__init__.pyR   :  s    

i    i   c         C   s*   |  j  ƒ  |  j ƒ  t |  j j ƒ } | S(   N(   R3   R*   R   R%   t   prev(   R   RF   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   previousC  s    

c         C   s3   |  j  ƒ  d  |  _ |  j ƒ  t |  j j ƒ } | S(   N(   R3   R   R&   R*   R   R%   R   (   R   RF   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyR   I  s
    
	
c         C   s3   |  j  ƒ  d  |  _ |  j ƒ  t |  j j ƒ } | S(   N(   R3   R   R&   R*   R   R%   t   last(   R   RF   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRI   Q  s
    
	
c         C   s   |  j  ƒ  t |  j j ƒ S(   N(   R3   R   R   t   sync(   R   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRJ   Y  s    
(   i   i   (   R!   R"   t   __doc__R'   R)   R*   R1   R3   R4   R6   t   syst   version_infoR:   R;   R?   R@   R(   RB   RC   RE   R   t   __next__RH   R   RI   RJ   (    (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyR#   À   s0   																				R/   i¶  c	         C   sÊ   t  | |  ƒ }	 t | ƒ }
 t j |
 ƒ } | j | ƒ | d  k	 rS | j | ƒ n  | d  k	 ro | j | ƒ n  | d  k	 r‹ | j | ƒ n  | d  k	 r§ | j	 | ƒ n  | j
 |  t j |	 | ƒ 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.7/bsddb/__init__.pyt   hashopena  s        c	         C   sÊ   t  | |  ƒ }	 t | ƒ }
 t j |
 ƒ } | d  k	 rF | j | ƒ n  | d  k	 rb | j | ƒ n  | j | ƒ | d  k	 r‹ | j | ƒ n  | d  k	 r§ | j	 | ƒ n  | j
 |  t j |	 | ƒ t | ƒ S(   N(   RO   RP   R   RQ   R   RS   RT   RR   t   set_bt_minkeyt   set_bt_maxkeyRW   t   DB_BTREER#   (   RY   RZ   R[   t   btflagsR_   t
   maxkeypaget
   minkeypageR\   R`   Rb   Rc   Rd   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   btopenq  s        c         C   s  t  | |  ƒ } t | ƒ } t j | ƒ } | d  k	 rF | j | ƒ n  | d  k	 rb | j | ƒ n  | j | ƒ | d  k	 r‹ | j | ƒ n  | d  k	 r§ | j	 | ƒ n  |	 d  k	 rÃ | j
 |	 ƒ n  |
 d  k	 rß | j |
 ƒ n  | j |  t j | | ƒ t | ƒ S(   N(   RO   RP   R   RQ   R   RS   RT   RR   t   set_re_delimt
   set_re_lent   set_re_sourcet
   set_re_padRW   t   DB_RECNOR#   (   RY   RZ   R[   t   rnflagsR_   R\   R`   t   rlent   delimt   sourcet   padRb   Rc   Rd   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   rnopenƒ  s$          c         C   s†   t  j ƒ  } |  d  k	 rC |  d k r7 | j d |  ƒ qC t d ‚ n  | j t  j ƒ | j d t  j t  j	 Bt  j
 Bt  j Bt  j Bƒ | S(   Ni P  i    s   cachesize must be >= 20480t   .(   R   t   DBEnvR   t   set_cachesizeR2   t   set_lk_detectt   DB_LOCK_DEFAULTRW   t
   DB_PRIVATEt	   DB_CREATEt	   DB_THREADt   DB_INIT_LOCKt   DB_INIT_MPOOL(   R_   Rc   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRP   –  s    /c         C   s·   |  d k r t  j } n” |  d k r- d } n |  d k rE t  j } ng |  d k r] t  j } nO |  d k r£ t  j } | d  k	 r¬ t j j | ƒ r¬ t j | ƒ q¬ n	 t d ‚ | t  j	 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   unlinkR2   R   (   RZ   RY   Rb   (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyRO   ¡  s    			(   i   i   (   i   i    (   i   i   ()   RK   RL   RM   t   absolute_importt   warningst   py3kwarningR!   t   warnpy3kt   DeprecationWarningt   filterwarningst   _pybsddbR   t   bsddb3.dbutilsR   R   t   bsddb.dbutilst   ImportErrort   modulesR   t   _dbt   __version__R,   R2   R‡   t   weakrefR   t   UserDictt	   DictMixint   MutableMappingt   collectionsR   R#   R   Re   Rl   Rw   RP   RO   t   threadt   TR   (    (    (    s$   /usr/lib/python2.7/bsddb/__init__.pyt   <module>(   sb   	


			b¡		