‡Æ
¯Có9c       sÒ    d  Z    d Z  d Z  d k l Z  d k l Z  d k Z d k Z d k	 Z	 d k
 Z
   d k Z d k Z ! d e i j o ! e i i d ƒ n # d k l Z $ d k l Z & d k Z ' d	 k l Z l Z l Z ( d
 k l Z ) d k Z + d k Z , d k l Z l Z l Z l Z / y 0 d k Z 1 e Z Wn 2 3 d k Z n X6 d „  Z U d e i  i  f d „  ƒ  YZ  ~d e i! f d „  ƒ  YZ" …d e i# f d „  ƒ  YZ$ d S(   s   Pyrite Application Subclass
s7   $Id: Application.py,v 1.6 1999/12/16 10:00:32 rob Exp $s.   Copyright 1999 Rob Tillotson <robt@debian.org>(   s	   ClassType(   s   randintNs   user(   s   Plugin(   s	   Directory(   s   Registrys   Optionss
   AppContext(   s   misc(   s   protect_names   unprotect_names   Databases   _c    sb   6 7 t  i i |  ƒ o5 8 t  i i |  ƒ o 9 t t d ƒ |  ‚ n n ; t  i |  ƒ d  S(   Ns!   %s exists, but is not a directory(   s   oss   paths   existss   ds   isdirs   RuntimeErrors   _s   mkdir(   s   dsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   _mkdir6 s   s   Applicationc    	  s  U d  Z  W X d Z Y d Z Z d Z \ e i d d e d ƒ e ^ f  d g ƒ e i d d e d ƒ e ` f  d g ƒ e i d	 d e d
 ƒ e f  d	 g ƒ g Z d d „  Z	 s d „  Z
 Û d „  Z d „  Z d „  Z d d „ Z &d e d ƒ d „ Z )d „  Z 0e e d „ Z :d d e d „ Z Od „  Z Vd e d „ Z ·d „  Z Ôd „  Z ãd „  Z ðd „  Z ød „  Z ûd  „  Z 	d! „  Z e d" „ Z e e d# „ Z  d% e d$ „ Z $d% d& „ Z  (d% e d' „ Z! td( „  Z" zd) „  Z# RS(*   s   A Pyrite application.
    s   PyriteApplications   DefaultApplications   Pyrites   old-pdbi    s   use old prc/pdb access codes   old-dlps   use old DLP access codes   debugs   enable debugging codec    s“   d e t  i i i |  ƒ g t |  _ h t |  _ i t |  _ j t |  _ k t |  _	 l t |  _
 m t |  _ o h  |  _ q |  i i d d ƒ d  S(   Ni    s   Pyrite(   s   Sulfurs   Applications   __init__s   selfs   Nones   ports   default_users   default_uids   users   uids   sync_ids   remotes   states   plugin_module_paths   insert(   s   selfsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   __init__d s   c    s’  s t |  i } ‚ t i i d ƒ o ƒ t i d |  _ nÀ„ t i i d ƒ o … t i d |  _ n“ˆ | i d ƒ oÂ ‰ | i d ƒ |  _ Š t |  i ƒ t g  ƒ j oŠ ‹ |  i oT Œ |  i	 t
 d ƒ d ƒ  |  i	 t
 d ƒ |  i d d ƒ Ž |  i d |  _ n&  |  i	 t
 d ƒ d ƒ ‘ t |  _ n n¾ “ | i d	 d
 ƒ } ” t | ƒ t g  ƒ j oG • | o – | d |  _ n& ˜ |  i	 t
 d ƒ d ƒ ™ t |  _ nF œ d | j o) œ t i t i | d ƒ d ƒ |  _ n  | |  _ Ÿ |  i o)   |  i	 t
 d ƒ d ƒ ¡ d |  _ n £ t i i d ƒ o ¤ t i d |  _ n% ¦ t i i | i d d
 ƒ ƒ |  _ § |  i o5 ¨ |  i	 t
 d ƒ d ƒ © t i i d ƒ |  _ n ª t |  i ƒ « t i i |  i d ƒ } ¬ t | ƒ ® y1 ¯ t i t t i i | d ƒ d ƒ ƒ |  _ Wn ° ± h  |  _ n X´ t i i d ƒ o µ t i d |  _ n( · | i d |  i i d t ƒ ƒ |  _ ¸ t i i d ƒ o ¹ t i d |  _ n( » | i d |  i i d t ƒ ƒ |  _ ¾ |  i o ¿ |  i	 t
 d ƒ d ƒ n Á |  i o |  i o |  i |  i ƒ o Â |  i |  i |  i ƒ n È |  i i d ƒ p( |  i i d ƒ p |  i d t i j o> Ë d k  l! } Ì | d d  ƒ d! >| d d  ƒ B|  i d <n Î |  i i d d ƒ |  _" Ñ |  i i d" ƒ od Ò h  } Ó xQ |  i d" i$ ƒ  d Ó r7 } Ö | o | |  i& j o × |  i& i' | ƒ n q9Wn Ù |  i( |  i ƒ d  S(#   Ns
   PYRITEPORTs	   PILOTPORTs   defaults::default-ports3   defaults::default-port option should not be a list.s   warnings   using %s as the default port.i    s(   defaults::default-port is an empty list.s   defaults::ports    s    defaults::port is an empty list.s   ,s2   no port specified in config file, using /dev/pilots
   /dev/pilots
   PYRITEPATHs   defaults::data-directorys)   no data directory specified, using ~/Palms   ~/Palms   Pyrites   states   rs
   PYRITEUSERs   defaults::users   users	   PYRITEUIDs   defaults::uids   uids   no default user specifieds   syncids   pyrite_version(   s   randintiÿÿ  i   s   products()   s   selfs   registrys   rs   oss   environs   has_keys   ports   gets   types   errors   _s   Nones   ps   strings   strips   splits   data_directorys   paths
   expandusers   _mkdirs   joins   pydirs   pickles   loads   opens   states   default_users   default_uids   user_existss   user_adds   Pyrites   versions   whrandoms   randints   sync_ids   prds   valuess   pkgs   plugin_module_paths   appends   change_user(   s   selfs   rs   ps   pydirs   randints   prds   pkgsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   preruns sx   $
 )$1''+B.	 	c    s  Û Ü |  i |  i d <Ý |  i |  i d <Þ |  i |  i d <ß t i |  i d <à |  i o„ á t |  i ƒ â t t	 i
 i |  i d ƒ ƒ ã y> ä t i |  i t t	 i
 i |  i d å d ƒ å d ƒ ƒ Wn æ ç n Xn é |  i ƒ  o é |  i ƒ  n d  S(   Ns   users   uids   syncids   pyrite_versions   Pyrites   states   w(   s   selfs   users   states   uids   sync_ids   Pyrites   versions   data_directorys   _mkdirs   oss   paths   joins   pickles   dumps   opens	   connecteds
   disconnect(   s   selfsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   postrunÛ s   $	  c    s   t  d ƒ |  i GHd  S(   NsF   Waiting for connection on %s (start the HotSync(R) application now)...(   s   _s   selfs   port(   s   selfs   as   kwsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys
   preconnects   c    sÑ   |  i t d ƒ ƒ | i } |  i t d ƒ | d ƒ |  i t d ƒ t i | d ƒ ƒ |  i t d ƒ t i | d ƒ ƒ |  i t d ƒ | d	 | d
 | d f ƒ |  i ƒ  d  S(   Ns   Identifying user...s   User Name: %ss   names   Last Sync: %ss   lastSyncDates   Last Successful Sync: %ss   successfulSyncDates$   UID: %s  VID: %s  LastSyncPC: 0x%08xs   userIDs   viewerIDs
   lastSyncPC(	   s   selfs   logs   _s   stores	   user_infos   uinfos   times   ctimes   connect_user(   s   selfs   stores   as   kws   uinfosN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   postconnects   ''/c    s—   |  i d ƒ o |  i d d ƒ } n !|  i d d ƒ } "| |  i d |  i |  i ƒ |  _ #| o #|  i i	 ƒ  n $|  i Sd S(   s   Instantiate a remote store.s   old-dlps   Stores   OldDLPs   DLPi    N(
   s   selfs
   get_options
   get_plugins   ps   ports
   preconnects   postconnects   remotes	   immediates   connect(   s   selfs	   immediates   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   connects   $
 c    s   &'|  i i | | ƒ d  S(   N(   s   selfs   remotes
   disconnects
   successfuls   log(   s   selfs
   successfuls   logsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys
   disconnect&s   i   s   Sync completed.c    s'   )*|  i t j	 o |  i i ƒ  Sd  S(   N(   s   selfs   remotes   Nones	   connected(   s   selfsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys	   connected)s   c    sš   01| t j o 1|  i  } n 2|  i  o 3t t d ƒ ‚ n 4| o& 5t i i |  i	 t
 | ƒ | ƒ Sn  7t i i |  i	 t
 | ƒ ƒ Sd  S(   Ns   uid is zero(   s   uids   Nones   selfs   RuntimeErrors   _s   names   oss   paths   joins   data_directorys   str(   s   selfs   names   uidsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys	   user_path0s    
&c    sá   :@A| t j o A|  i  } n B| o Ct t d ƒ ‚ n Dt i i |  i t	 | ƒ | ƒ } E| o Et | ƒ n F|  i d ƒ o G|  i d d ƒ } n I|  i d d ƒ } J| | ƒ } K| Sd S(   s¿   Access a specific user data directory.

	Returns an appropriate Directory Store object.
	If the 'make' parameter is true (the default), and the
	directory doesn't exist, it will be created.
	s   uid is zeros   old-pdbs   Stores   OldDirectorys	   DirectoryN(   s   uids   Nones   selfs   RuntimeErrors   _s   oss   paths   joins   data_directorys   strs   dirs   makes   _mkdirs
   get_options
   get_plugins   ps   s(   s   selfs   dirs   makes   uids   paths   ps   ssN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   user_directory:s    $
 s   backupc    sP   OQRt  i i |  i t |  i ƒ ƒ } St | d „ Tt  i	 | ƒ ƒ Sd S(   s0   List all available top-level user directories.
	c    s"   St  i i t  i i | |  ƒ ƒ S(   N(   s   oss   paths   isdirs   joins   x(   s   xs   pathsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   <lambda>Ss    N(
   s   oss   paths   joins   selfs   data_directorys   strs   uids   ps   filters   listdir(   s   selfs   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   user_directoriesOs   $c    s0  Vcdt  i  | ƒ \ } } } } }	 }
 e| d j oGft i	 | ƒ } gt i i | ƒ \ } } h| o | d d j o h| d } n i| o i|  i
 } n j| o jd } n ld | j o ld } n
 md } ny ot | ƒ } Wn pq|  i | ƒ } n Xr| o st t d ƒ | ‚ n t|  i | | | ƒ } ut | i | | | f | ƒ Sn¬v| d d	 g j p | d
 j o | o
 | d j oV x|  i d d ƒ } y| | ƒ } z| i ƒ  } {t | i | | | f | ƒ Sn}| d
 j o }| } n |  i  d ƒ o €|  i d d ƒ } n ‚|  i d d ƒ } ƒ| | ƒ } „| i ƒ  } ‡| ox ˆt i i | ƒ \ } } ‰|  i  d ƒ o ‰|  i d d ƒ } n Š|  i d d ƒ } ‹| | ƒ } Œ| } n t | i | | | f | ƒ Sd S(   s(  Open an arbitrary database.
	This function can take either a filename or a URL as its argument.
	The following URL types are acceptable:
	    http -- database is fetched and opened read-only
	    ftp  -- database is fetched and opened read-only
	    file -- equivalent to filename if on 'localhost', otherwise
	            tries ftp
	    user -- open a database in a user directory:
	      user://username/directory/databasename

	If attempting to open by filename fails, this function then tries
	to open by *database name* in the current directory.
	s   useri    s   /i   s   backups   ws   user '%s' not founds   https   ftps   files	   localhosts   Stores   URLs   old-pdbs   OldFiles   Files   OldDirectorys	   DirectoryN(!   s   urlparses   names   schemes   locs   paths   params   querys   frags   urllibs   unquotes   users   oss   splits   ns   selfs   modes   makes   ints   us   user_lookups   RuntimeErrors   _s   user_directorys   ss   applys   opens   dbclasss   kws
   get_plugins   ps   lists   ls
   get_option(   s   selfs   names   modes   dbclasss   kws   schemes   locs   paths   params   querys   frags   users   ns   makes   us   ss   ps   lsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   openVsT   $    	#7#  s   rsc    s  ·¸|  i i d } ¹|  i i d } ºd } ¼| o | o! ½|  i t d ƒ ƒ ¾d  Sn À| oM Át d d ƒ d >t d d ƒ B} Â|  i t d ƒ | d ƒ Ãd	 } n Å|  i	 | ƒ o  Æ|  i
 | | ƒ Ç| } n| É|  i | ƒ } Ë| | j oY Ì|  i t d
 ƒ d ƒ Í|  i t d ƒ | | f ƒ Î| } Ï| |  i i d <n Ñ|  i | ƒ d  S(   Ns   names   userIDi    s3   Pyrite does not support unidentified palmtops (yet)iÿÿ  i   s0   Palm user ID is zero.  Assigning a new one (%d).s   warningi   s*   Palm user name does not match.  Restoring.s   '%s' / '%s'(   s   selfs   remotes	   user_infos   users   uids   rewrites   errors   _s   randints   user_existss   user_adds   uns	   user_names   change_user(   s   selfs   users   uids   rewrites   unsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   connect_user·s(   	# 	c    s  ÔÕ|  i i ƒ  d j o Õ|  i i ƒ  n Ö| o ×d  Sn Ø|  i | ƒ o Ùt t d ƒ | ‚ n Ú| |  _ Û|  i | ƒ |  _	 Ý|  i i
 t i i |  i t | ƒ d d ƒ Þd ƒ àx/ |  i i ƒ  d àr } á| i |  i ƒ qá Wd  S(   Ns   PALMUSERs   user #%d is unknowns   Pyrites	   palm.confi    (   s   selfs   registrys   labels   pops   uids   user_existss   RuntimeErrors   _s	   user_names   users   loads   oss   paths   joins   data_directorys   strs   pluginss   valuess   ps	   configure(   s   selfs   uids   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   change_userÔs    -
 	c    sâ   ãät  i i |  i t | ƒ ƒ } æt | ƒ çt t  i i | d ƒ ƒ èt t  i i | d ƒ ƒ ét t  i i | d ƒ ƒ ë| o& ì|  i
 t d ƒ d ƒ íd } n ît t  i i | d ƒ d ƒ i | ƒ d  S(	   Ns   backups   installs   Pyrites$   This palmtop has an empty user name.s   warnings    s   NAMEs   w(   s   oss   paths   joins   selfs   data_directorys   strs   uids   uds   _mkdirs   users   errors   _s   opens   write(   s   selfs   uids   users   udsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   user_addãs   !c    s~   ðñy` òt  t i i |  i t | ƒ d ƒ ƒ i ƒ  } ó| d d j o ó| d  Sn ô| SWn õöd Sn Xd  S(   Ns   NAMEi   s   
s    (
   s   opens   oss   paths   joins   selfs   data_directorys   strs   uids   readlines   s(   s   selfs   uids   ssN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys	   user_nameðs   0 c    s2   øùt  i i t  i i |  i t | ƒ ƒ ƒ Sd  S(   N(   s   oss   paths   isdirs   joins   selfs   data_directorys   strs   uid(   s   selfs   uidsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   user_existsøs   c    sÀ   ûüg  } ýt i ƒ  } þt i |  i ƒ ÿxd t t i i	 t i
 d ƒ ƒ d ÿr? }  y# t | ƒ } | i | ƒ Wn qR n XqR Wt i | ƒ | i ƒ  | Sd  S(   Ns   .i    (   s   ls   oss   getcwds   _ds   chdirs   selfs   data_directorys   filters   paths   isdirs   listdirs   dirs   ints   ids   appends   sort(   s   selfs   ls   _ds   dirs   idsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys	   user_listûs   	$ 	c    sQ   	
x= |  i ƒ  d 
r* } |  i | ƒ | j o | Sn q Wd Sd  S(   Ni    (   s   selfs	   user_lists   is	   user_names   name(   s   selfs   names   isN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   user_lookup	s
    	 c    s_   t  i i |  i |  i ƒ } t | ƒ | o t  i i | | ƒ } n | Sd  S(   N(   s   oss   paths   joins   selfs   data_directorys
   app_prefixs   ps   _mkdir(   s   selfs   paths   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   app_paths
   
 c    s©   | t j o |  i  } n | o t t d ƒ ‚ n t i i |  i t	 | ƒ |  i
 ƒ } t | ƒ | o t i i | | ƒ } n | Sd  S(   Ns   uid is zero(   s   uids   Nones   selfs   RuntimeErrors   _s   oss   paths   joins   data_directorys   strs
   app_prefixs   ps   _mkdir(   s   selfs   paths   uids   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   app_user_paths    '
 c    s,    !|  i | | ƒ } "t | | ƒ Sd  S(   N(   s   selfs	   user_paths   names   uids   ps   opens   mode(   s   selfs   names   modes   uids   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys	   user_open s   s   rc    s)   $%|  i | ƒ } &t | | ƒ Sd  S(   N(   s   selfs   app_paths   names   ps   opens   mode(   s   selfs   names   modes   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   app_open$s   c    s,   ()|  i | | ƒ } *t | | ƒ Sd  S(   N(   s   selfs   app_user_paths   names   uids   ps   opens   mode(   s   selfs   names   modes   uids   psN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   app_user_open(s   c    sf   tu| d j o& v|  i t d ƒ d ƒ wd } n xt t i i i |  | | f | | ƒ Sd  S(   Ns   AppsO   using deprecated name for application modules; should be 'Connector', not 'App's   warnings	   Connector(   s
   collections   selfs   errors   _s   applys   Sulfurs   Applications
   get_plugins   names   as   kw(   s   selfs
   collections   names   as   kwsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys
   get_plugints   c    s)   z{t  |  ƒ } |t | | | ƒ d  S(   N(   s   PyriteCLIAppContexts   selfs   ctxs   applys   as   kw(   s   selfs   as   kws   ctxsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   __call__zs   ($   s   __doc__s   types   names
   app_prefixs   Optionss   Booleans   _s   Nones   optionss   __init__s   preruns   postruns
   preconnects   postconnects   connects
   disconnects	   connecteds	   user_paths   user_directorys   user_directoriess   Databases   opens   connect_users   change_users   user_adds	   user_names   user_existss	   user_lists   user_lookups   app_paths   app_user_paths	   user_opens   app_opens   app_user_opens
   get_plugins   __call__(    sN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   ApplicationU sB   				'9h1

a	Ls   PyriteStatec      s   ~d „  Z  RS(   Nc    sU   €t  i i |  | ƒ | i i d d ƒ ‚| i i t i i	 d ƒ d ƒ d  S(   Ns   /etc/palm.confs   SYSTEMs   ~/.palm.confs   USER(
   s
   AppContexts   PickleStates   starts   selfs   contexts   registrys   loads   oss   paths
   expanduser(   s   selfs   contextsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   starts   (   s   start(    sN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   PyriteState~s   s   PyriteCLIAppContextc      s   …†d Z  ‡d „  Z RS(   Ns   Pyritec    s6   ‡ˆt  t i i |  f | | ƒ ‰t ƒ  |  _ d  S(   N(	   s   applys
   AppContexts   CLIAppContexts   __init__s   selfs   as   kws   PyriteStates   state_manager(   s   selfs   as   kwsN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   __init__‡s    (   s   app_types   __init__(    sN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   PyriteCLIAppContext…s   	(%   s   __doc__s   __version__s   __copyright__s   typess	   ClassTypes   whrandoms   randints   oss   operators   strings   times   urlparses   urllibs   uses_netlocs   appends   Pyrites   Plugins   Pyrite.Stores	   Directorys   Sulfurs   Registrys   Optionss
   AppContexts   miscs   Sulfur.Applications   protect_names   unprotect_names   Databases   _s   cPickles   pickles   _mkdirs   Applications   PickleStates   PyriteStates   CLIAppContexts   PyriteCLIAppContext(    sN   /afs/sipb.mit.edu/project/pilot-locker/share/python/Application/Application.pys   ? s6   		' "ÿ ÿ +