home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Calibre / calibre-0.8.18.msi / file_262 / netrc.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-09-09  |  3.2 KB  |  119 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.7)
  3.  
  4. import os
  5. import shlex
  6. __all__ = [
  7.     'netrc',
  8.     'NetrcParseError']
  9.  
  10. class NetrcParseError(Exception):
  11.     
  12.     def __init__(self, msg, filename = None, lineno = None):
  13.         self.filename = filename
  14.         self.lineno = lineno
  15.         self.msg = msg
  16.         Exception.__init__(self, msg)
  17.  
  18.     
  19.     def __str__(self):
  20.         return '%s (%s, line %s)' % (self.msg, self.filename, self.lineno)
  21.  
  22.  
  23.  
  24. class netrc:
  25.     
  26.     def __init__(self, file = None):
  27.         if file is None:
  28.             
  29.             try:
  30.                 file = os.path.join(os.environ['HOME'], '.netrc')
  31.             except KeyError:
  32.                 raise IOError('Could not find .netrc: $HOME is not set')
  33.             
  34.  
  35.         self.hosts = { }
  36.         self.macros = { }
  37.         with open(file) as fp:
  38.             self._parse(file, fp)
  39.  
  40.     
  41.     def _parse(self, file, fp):
  42.         lexer = shlex.shlex(fp)
  43.         lexer.wordchars += '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
  44.         while not tt:
  45.             break
  46.         if tt == 'machine':
  47.             entryname = lexer.get_token()
  48.         elif tt == 'default':
  49.             entryname = 'default'
  50.         elif tt == 'macdef':
  51.             entryname = lexer.get_token()
  52.             self.macros[entryname] = []
  53.             lexer.whitespace = ' \t'
  54.             while None:
  55.                 line = lexer.instream.readline()
  56.                 if not line or line == '\n':
  57.                     lexer.whitespace = ' \t\r\n'
  58.                     break
  59.                 continue
  60.                 continue
  61.         raise NetrcParseError('bad toplevel token %r' % tt, file, lexer.lineno)
  62.         login = ''
  63.         account = None
  64.         password = None
  65.         self.hosts[entryname] = { }
  66.         while None:
  67.             tt = lexer.get_token()
  68.             if tt == '' and tt == 'machine' and tt == 'default' or tt == 'macdef':
  69.                 if password:
  70.                     self.hosts[entryname] = (login, account, password)
  71.                     lexer.push_token(tt)
  72.                     break
  73.                 else:
  74.                     raise NetrcParseError('malformed %s entry %s terminated by %s' % (toplevel, entryname, repr(tt)), file, lexer.lineno)
  75.             if tt == 'login' or tt == 'user':
  76.                 login = lexer.get_token()
  77.                 continue
  78.             if tt == 'account':
  79.                 account = lexer.get_token()
  80.                 continue
  81.             if tt == 'password':
  82.                 password = lexer.get_token()
  83.                 continue
  84.             raise NetrcParseError('bad follower token %r' % tt, file, lexer.lineno)
  85.             continue
  86.             continue
  87.             return None
  88.  
  89.     
  90.     def authenticators(self, host):
  91.         if host in self.hosts:
  92.             return self.hosts[host]
  93.         if None in self.hosts:
  94.             return self.hosts['default']
  95.         return None
  96.  
  97.     
  98.     def __repr__(self):
  99.         rep = ''
  100.         for host in self.hosts.keys():
  101.             attrs = self.hosts[host]
  102.             rep = rep + 'machine ' + host + '\n\tlogin ' + repr(attrs[0]) + '\n'
  103.             if attrs[1]:
  104.                 rep = rep + 'account ' + repr(attrs[1])
  105.             rep = rep + '\tpassword ' + repr(attrs[2]) + '\n'
  106.         
  107.         for macro in self.macros.keys():
  108.             rep = rep + 'macdef ' + macro + '\n'
  109.             for line in self.macros[macro]:
  110.                 rep = rep + line
  111.             
  112.             rep = rep + '\n'
  113.         
  114.         return rep
  115.  
  116.  
  117. if __name__ == '__main__':
  118.     print netrc()
  119.