-
>c       s}   d  k  Td k l Z d k l Z d k l Z d k l Z d k	 Z
 d k Z d f  d     YZ d e e f d	     YZ d S(
   (   s   *(   s
   threadutil(   s   InstanceLimitedThread(   s   UIBase(   s
   IMAPFolderNs   MappingFolderMixInc      s   t  Z d   Z d   Z d   Z d 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(   Nc    s;   t    |  _ |  i   \ |  _ |  _ |  i i d |  _ d  S(   Ni   (	   s   Locks   selfs   maplocks	   _loadmapss   diskr2ls   diskl2rs	   __class__s	   __bases__s   _mb(   s   self(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   _initmapping s    c    s&   t  i i |  i i   |  i    Sd  S(   N(   s   oss   paths   joins   selfs
   repositorys	   getmapdirs   getfolderbasename(   s   self(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   _getmapfilename  s    c 
   s   |  i i   z |  i   } t i i |  o h  h  f Sn t | d  } h  } h  } xx d op | i   } t |  o Pn | i   } | i d  \ }	 } t |	  } t |  } | | | <| | | <q\ W| | f SWd  |  i i   Xd  S(   Ns   rti   s   :(   s   selfs   maplocks   acquires   _getmapfilenames   mapfilenames   oss   paths   existss   opens   files   r2ls   l2rs   readlines   lines   lens   strips   splits   str1s   str2s   longs   locs   rems   release(
   s   selfs   locs   r2ls   str2s   l2rs   files   rems   lines   mapfilenames   str1(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys	   _loadmaps$ s,     
 i   c    s   |  i   } | o |  i i   n zl t | d d  } x4 |  i i	   D]# \ } } | i d | | f  qJ W| i   t i | d |  Wd  | o |  i i   n Xd  S(   Ns   .tmps   wts   %d:%d
(   s   selfs   _getmapfilenames   mapfilenames   dolocks   maplocks   acquires   opens   files   diskl2rs	   iteritemss   keys   values   writes   closes   oss   renames   release(   s   selfs   dolocks   files   keys   mapfilenames   value(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys	   _savemaps; s      
  c    s-   g  i  } | D] } | | |  q ~ Sd  S(   N(   s   appends   _[1]s   itemss   xs   mapping(   s   selfs   mappings   itemss   _[1]s   x(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   _uidlistG s     c    s+  |  i i |   |  i i |   } |  i i   z xM |  i i   D]< } | i
 |  o% |  i | } |  i | =|  i | =n qB W|  i d d  d } |  i i   |  _ |  i i   |  _ xV | i   D]H } |  i i
 |  o. | } | d 8} | |  i | <| |  i | <n q WWd  |  i i   Xd  S(   Ns   dolocki    ii   (   s   selfs   _mbs   cachemessagelists   getmessagelists   reallists   maplocks   acquires   diskl2rs   keyss   luids   has_keys   ruids   diskr2ls	   _savemapss   nextnegs   copys   r2ls   l2rs   release(   s   selfs   ruids   nextnegs   reallists   luid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   cachemessagelistJ s.     
 
 c    s   h  } |  i i |   } |  i i   zz xo | i   D]a \ } } y |  i
 | } Wn t j
 o
 q5 n X| i   } |  i
 | d | d <| | | <q5 W| SWd |  i i   Xd S(   se   Gets the current message list.
        You must call cachemessagelist() before calling this function!s   uidN(   s   retvals   selfs   _mbs   getmessagelists	   localhashs   maplocks   acquires   itemss   keys   values   l2rs   KeyErrors   copys   release(   s   selfs	   localhashs   keys   retvals   value(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   getmessagelisti s"       c    s   |  i i |  |  i |  Sd S(   s-   Returns the content of the specified message.N(   s   selfs   _mbs
   getmessages   r2ls   uid(   s   selfs   uid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys
   getmessage s     c    s   | d j  o | Sn | |  i j o |  i | |  | Sn |  i i |  d | |  } | d j  o t	 d  n |  i
 i   zH | |  i | <| |  i | <| |  i | <| |  i | <|  i d d  Wd |  i
 i   Xd S(   s  Writes a new message, with the specified uid.
        If the uid is < 0, the backend should assign a new uid and return it.

        If the backend cannot assign a new uid, it returns the uid passed in
        WITHOUT saving the message.

        If the backend CAN assign a new uid, but cannot find out what this UID
        is (as is the case with many IMAP servers), it returns 0 but DOES save
        the message.
        
        IMAP backend should be the only one that can assign a new uid.

        If the uid is > 0, the backend should set the uid to this, if it can.
        If it cannot set the uid to that, it will save it anyway.
        It will return the uid assigned in any case.
        i    ii   s&   Backend could not find uid for messages   dolockN(   s   uids   selfs   r2ls   savemessageflagss   flagss   _mbs   savemessages   contents   newluids
   ValueErrors   maplocks   acquires   diskl2rs   diskr2ls   l2rs	   _savemapss   release(   s   selfs   uids   contents   flagss   newluid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   savemessage s$      c    s   |  i i |  |  i |  Sd  S(   N(   s   selfs   _mbs   getmessageflagss   r2ls   uid(   s   selfs   uid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   getmessageflags s    c    s!   |  i i |  |  i | |  d  S(   N(   s   selfs   _mbs   savemessageflagss   r2ls   uids   flags(   s   selfs   uids   flags(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   savemessageflags s    c    s!   |  i i |  |  i | |  d  S(   N(   s   selfs   _mbs   addmessageflagss   r2ls   uids   flags(   s   selfs   uids   flags(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   addmessageflags s    c    s)   |  i i |  |  i |  i |  |  d  S(   N(   s   selfs   _mbs   addmessagesflagss   _uidlists   r2ls   uidlists   flags(   s   selfs   uidlists   flags(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   addmessagesflags s    c    s   |  i i   z d } xZ | D]R } |  i | } |  i | =|  i | =| d j o |  i	 | =|  i
 | =d } n q W| o |  i d d  n Wd  |  i i   Xd  S(   Ni    i   s   dolock(   s   selfs   maplocks   acquires	   needssaves   uidlists   ruids   r2ls   luids   l2rs   diskr2ls   diskl2rs	   _savemapss   release(   s   selfs   uidlists   ruids	   needssaves   luid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   _mapped_delete s      



 c    s!   |  i i |  |  i | |  d  S(   N(   s   selfs   _mbs   deletemessageflagss   r2ls   uids   flags(   s   selfs   uids   flags(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   deletemessageflags s    c    s)   |  i i |  |  i |  i |  |  d  S(   N(   s   selfs   _mbs   deletemessagesflagss   _uidlists   r2ls   uidlists   flags(   s   selfs   uidlists   flags(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   deletemessagesflags s    c    s.   |  i i |  |  i |  |  i | g  d  S(   N(   s   selfs   _mbs   deletemessages   r2ls   uids   _mapped_delete(   s   selfs   uid(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   deletemessage s    c    s3   |  i i |  |  i |  i |   |  i |  d  S(   N(   s   selfs   _mbs   deletemessagess   _uidlists   r2ls   uidlists   _mapped_delete(   s   selfs   uidlist(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   deletemessages s    "(   s   __name__s
   __module__s   _initmappings   _getmapfilenames	   _loadmapss	   _savemapss   _uidlists   cachemessagelists   getmessagelists
   getmessages   savemessages   getmessageflagss   savemessageflagss   addmessageflagss   addmessagesflagss   _mapped_deletes   deletemessageflagss   deletemessagesflagss   deletemessages   deletemessages(    (    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   MappingFolderMixIn s$   								$								s   MappedIMAPFolderc      s   t  Z d   Z RS(   Nc    s(   t  t i |  f | |  |  i   d  S(   N(   s   applys
   IMAPFolders   __init__s   selfs   argss   kwargss   _initmapping(   s   selfs   argss   kwargs(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   __init__ s    (   s   __name__s
   __module__s   __init__(    (    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   MappedIMAPFolder s   (   s	   threadings   offlineimaps
   threadutils   offlineimap.threadutils   InstanceLimitedThreads   offlineimap.uis   UIBases   IMAPs
   IMAPFolders   os.paths   oss   res   MappingFolderMixIns   MappedIMAPFolder(   s   res   UIBases   MappedIMAPFolders   InstanceLimitedThreads   MappingFolderMixIns   oss
   threadutils
   IMAPFolder(    (    sB   /usr/pkg/lib/python2p2/site-packages/offlineimap/folder/UIDMaps.pys   ? s   