;ò
¢)?Bc           @   s¥   d  k  Z  d  k Z d  k Z d  k Z d  k Z d k l Z e i Z y d  k Z e Z	 Wn e
 j
 o d  k	 Z	 n Xd f  d „  ƒ  YZ d e i f d „  ƒ  YZ d  S(   N(   s   LockFiles	   DumbBTreec           B   sª   t  Z d  Z d „  Z d „  Z e d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   st  Stores pickles of Article objects

    This dictionary-like object stores pickles of all the Article
    objects.  The object itself is stored using marshal.  It would be
    much simpler, and probably faster, to store the actual objects in
    the DumbBTree and pickle it.

    TBD: Also needs a more sensible name, like IteratableDictionary or
    SortedDictionary.
    c         C   s^   d |  _ | |  _ t i |  i d ƒ |  _ |  i ƒ  d |  _ h  |  _ g  |  _ |  i	 ƒ  d  S(   Ni    s   .lock(
   s   selfs   current_indexs   paths   LockFiles   lockfiles   locks   _DumbBTree__dirtys   dicts   sorteds   load(   s   selfs   path(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __init__9   s    		
			c         C   s   d |  i Sd  S(   Ns   DumbBTree(%s)(   s   selfs   path(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __repr__C   s    c         C   sG   |  i d j p | o, |  i i ƒ  |  _ |  i i ƒ  d |  _ n d  S(   Ni   i    (   s   selfs   _DumbBTree__dirtys   dirtys   dicts   keyss   sorteds   sort(   s   selfs   dirty(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __sortF   s    c         C   s   |  i i ƒ  d  S(   N(   s   selfs   lockfiles   lock(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   lockL   s    c         C   s.   y |  i i ƒ  Wn t i j
 o n Xd  S(   N(   s   selfs   lockfiles   unlocks   LockFiles   NotLockedError(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   unlockO   s    c         C   sô   |  i d j o |  i | =d |  _ d  Sn y |  i |  i } Wn t j
 o t } n X| | j o8 y |  i |  i d } Wq  t j
 o t } q  Xn |  i | =|  i	 d d ƒ | t j	 o |  i i
 | ƒ |  _ n |  i d |  _ d  S(   Ni    i   s   dirty(   s   selfs   current_indexs   dicts   items   _DumbBTree__dirtys   sorteds   cis
   IndexErrors   Nones   _DumbBTree__sorts   index(   s   selfs   items   ci(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __delitem__U   s$    
	
c         C   s   h  |  _ d  S(   N(   s   selfs   dict(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   cleark   s    c         C   sJ   |  i ƒ  |  i o
 t ‚ n( |  i d } d |  _ | |  i | f Sd  S(   Ni    i   (   s   selfs   _DumbBTree__sorts   sorteds   KeyErrors   keys   current_indexs   dict(   s   selfs   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   firstp   s    

	c         C   sM   |  i o
 t ‚ n5 |  i d } t |  i ƒ d |  _ | |  i | f Sd  S(   Niÿÿÿÿi   (   s   selfs   sorteds   KeyErrors   keys   lens   current_indexs   dict(   s   selfs   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   lasty   s
    
c         C   sU   y |  i |  i } Wn t j
 o t ‚ n X|  i d |  _ | |  i | f Sd  S(   Ni   (   s   selfs   sorteds   current_indexs   keys
   IndexErrors   KeyErrors   dict(   s   selfs   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   next   s    c         C   s   |  i i | ƒ Sd  S(   N(   s   selfs   dicts   has_keys   key(   s   selfs   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   has_key‰   s    c         C   s7   |  i i | ƒ o
 t ‚ n |  i i | ƒ |  _ d  S(   N(   s   selfs   dicts   has_keys   locs   KeyErrors   sorteds   indexs   current_index(   s   selfs   loc(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   set_locationŒ   s    
c         C   s   |  i | Sd  S(   N(   s   selfs   dicts   item(   s   selfs   item(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __getitem__‘   s    c         C   s”   |  i d j o | |  i | <d |  _ d  Sn y |  i |  i } Wn t j
 o | } n X| |  i | <|  i	 d d ƒ |  i i
 | ƒ |  _ d  S(   Ni    i   s   dirty(   s   selfs   current_indexs   vals   dicts   items   _DumbBTree__dirtys   sorteds   current_items
   IndexErrors   _DumbBTree__sorts   index(   s   selfs   items   vals   current_item(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __setitem__”   s    	c         C   s   t  |  i ƒ Sd  S(   N(   s   lens   selfs   sorted(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __len__£   s    c         C   s   y7 t  |  i ƒ } z t i | ƒ |  _ Wd  | i ƒ  XWnA t j
 o# } | i
 t
 i j o ‚  q‹ n$ t j
 o n X|  i d d ƒ d  S(   Ns   dirtyi   (   s   opens   selfs   paths   fps   marshals   loads   dicts   closes   IOErrors   es   errnos   ENOENTs   EOFErrors   _DumbBTree__sort(   s   selfs   fps   e(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   load¦   s      c         C   sg   t  i d ƒ } z t |  i d ƒ } Wd  t  i | ƒ X| i t i	 |  i
 ƒ ƒ | i ƒ  |  i ƒ  d  S(   Ni   s   w(   s   oss   umasks   omasks   opens   selfs   paths   fps   writes   marshals   dumpss   dicts   closes   unlock(   s   selfs   fps   omask(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   closeµ   s     
(   s   __name__s
   __module__s   __doc__s   __init__s   __repr__s   Nones   _DumbBTree__sorts   locks   unlocks   __delitem__s   clears   firsts   lasts   nexts   has_keys   set_locations   __getitem__s   __setitem__s   __len__s   loads   close(    (    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys	   DumbBTree-   s$   
 	
															s   HyperDatabasec           B   s­   t  Z e i i Z d „  Z d „  Z d „  Z d „  Z	 e
 e
 e
 d „ Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   Nc         C   s=   h  |  _ t |  _ | |  _ t i i | ƒ |  _	 h  |  _
 d  S(   N(   s   selfs   _HyperDatabase__caches   Nones"   _HyperDatabase__currentOpenArchives   mlists   _mlists   oss   paths
   expandusers   basedirs   changed(   s   selfs   basedirs   mlist(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __init__È   s
    			c         C   sl   |  i | ƒ d } y; |  i i ƒ  \ } } t i	 t i
 t | d ƒ ƒ ƒ } Wn t j
 o n X| Sd  S(   Ns   Nonei    (   s   selfs   _HyperDatabase__openIndicess   archives   dates	   dateIndexs   firsts   datekeys   msgids   times   asctimes	   localtimes   floats   KeyError(   s   selfs   archives   msgids   datekeys   date(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys	   firstdateÐ   s    &c         C   sl   |  i | ƒ d } y; |  i i ƒ  \ } } t i	 t i
 t | d ƒ ƒ ƒ } Wn t j
 o n X| Sd  S(   Ns   Nonei    (   s   selfs   _HyperDatabase__openIndicess   archives   dates	   dateIndexs   lasts   datekeys   msgids   times   asctimes	   localtimes   floats   KeyError(   s   selfs   archives   msgids   datekeys   date(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   lastdateÚ   s    &c         C   s   |  i | ƒ t |  i ƒ Sd  S(   N(   s   selfs   _HyperDatabase__openIndicess   archives   lens	   dateIndex(   s   selfs   archive(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   numArticlesä   s    c         C   s*   |  i | ƒ |  i | | | | | ƒ d  S(   N(   s   selfs   _HyperDatabase__openIndicess   archives    _HyperDatabase__super_addArticles   articles   subjects   authors   date(   s   selfs   archives   articles   subjects   authors   date(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys
   addArticleè   s    c         C   s  |  i | j o d  Sn |  i ƒ  t i i |  i d ƒ } t i	 d ƒ } zJ y t i | d ƒ Wn/ t j
 o# } | i t i j o ‚  q’ n XWd  t i	 | ƒ XxT d d d d d f D]= } t t i i | | d	 | ƒ ƒ } t |  | d
 | ƒ qº W| |  _ d  S(   Ns   databasei    iø  s   dates   authors   subjects   articles   threads   -s   Index(   s   selfs"   _HyperDatabase__currentOpenArchives   archives   _HyperDatabase__closeIndicess   oss   paths   joins   basedirs   arcdirs   umasks   omasks   mkdirs   OSErrors   es   errnos   EEXISTs   is	   DumbBTrees   ts   setattr(   s   selfs   archives   es   is   arcdirs   ts   omask(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __openIndicesí   s$    
   #c         C   s¼   x¬ d d d d d f D]• } | d } t |  | ƒ ou t |  | ƒ } | d j o> t |  d ƒ o h  |  _ n t | ƒ } | |  i |  i	 <n | i
 ƒ  t |  | ƒ q q Wt |  _	 d  S(   Ns   dates   authors   subjects   threads   articles   Indexs   archive_length(   s   is   attrs   hasattrs   selfs   getattrs   indexs   archive_lengths   lens   ls"   _HyperDatabase__currentOpenArchives   closes   delattrs   None(   s   selfs   indexs   attrs   is   l(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   __closeIndicesÿ   s     

c         C   s   |  i ƒ  d  S(   N(   s   selfs   _HyperDatabase__closeIndices(   s   self(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   close  s    c         C   s!   |  i | ƒ |  i i | ƒ Sd  S(   N(   s   selfs   _HyperDatabase__openIndicess   archives   articleIndexs   has_keys   msgid(   s   selfs   archives   msgid(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys
   hasArticle  s    c         C   s   |  i | ƒ | |  i | <d  S(   N(   s   selfs   _HyperDatabase__openIndicess   archives   msgids   threadIndexs   key(   s   selfs   archives   keys   msgid(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   setThreadKey  s    c         C   sq   |  i | ƒ |  i i | ƒ o; |  i | } t i	 | ƒ } |  i | <| i |  i ƒ n |  i | } | Sd  S(   N(   s   selfs   _HyperDatabase__openIndicess   archives   _HyperDatabase__caches   has_keys   msgids   articleIndexs   bufs   pickles   loadss   articles   setListIfUnsets   _mlist(   s   selfs   archives   msgids   bufs   article(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys
   getArticle  s    c         C   sX   |  i | ƒ t |  | d ƒ } y | i ƒ  \ } } | SWn t j
 o t	 Sn Xd  S(   Ns   Index(
   s   selfs   _HyperDatabase__openIndicess   archives   getattrs   indexs   firsts   keys   msgids   KeyErrors   None(   s   selfs   archives   indexs   msgids   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   first$  s    c         C   sX   |  i | ƒ t |  | d ƒ } y | i ƒ  \ } } | SWn t j
 o t	 Sn Xd  S(   Ns   Index(
   s   selfs   _HyperDatabase__openIndicess   archives   getattrs   indexs   nexts   keys   msgids   KeyErrors   None(   s   selfs   archives   indexs   msgids   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   next-  s    c         C   sŽ   |  i | ƒ | i ƒ  } yW |  i i | ƒ \ } } |  i i	 ƒ  | i
 d ƒ \ } } | | j o t Sn | SWn t j
 o t Sn Xd  S(   Ns    (   s   selfs   _HyperDatabase__openIndicess   archives   subjects   lowers   subjectIndexs   set_locations   keys   tempids   nexts   splits   subject2s   dates   Nones   KeyError(   s   selfs   archives   subjects   tempids   subject2s   keys   date(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   getOldestArticle6  s     c         C   s   d  S(   N(    (   s   selfs   archive(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys
   newArchiveB  s    c         C   sÃ   |  i | ƒ t |  i d ƒ o |  i i ƒ  d  Sn d } y |  i i ƒ  \ } } Wn t
 j
 o d } n XxL | oC |  i | =y |  i i ƒ  \ } } Wqs t
 j
 o d } qs Xqs Wd  S(   Ns   cleari    i   (   s   selfs   _HyperDatabase__openIndicess   archives   hasattrs   threadIndexs   clears   finisheds   firsts   keys   msgids   KeyErrors   next(   s   selfs   archives   indexs   msgids   finisheds   key(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys
   clearIndexE  s       
 (   s   __name__s
   __module__s	   pipermails   Databases
   addArticles    _HyperDatabase__super_addArticles   __init__s	   firstdates   lastdates   numArticless   Nones   _HyperDatabase__openIndicess   _HyperDatabase__closeIndicess   closes
   hasArticles   setThreadKeys
   getArticles   firsts   nexts   getOldestArticles
   newArchives
   clearIndex(    (    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   HyperDatabaseÅ   s"   		
	
													(   s   oss   marshals   times   errnos	   pipermails   Mailmans   LockFiles	   CACHESIZEs   cPickles   pickles   ImportErrors	   DumbBTrees   Databases   HyperDatabase(   s   cPickles	   DumbBTrees   errnos   HyperDatabases   times	   CACHESIZEs   pickles	   pipermails   LockFiles   oss   marshal(    (    s.   /var/mailman/Mailman/Archiver/HyperDatabase.pys   ?   s   							
˜