home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.7)
-
- import os
- import shlex
- __all__ = [
- 'netrc',
- 'NetrcParseError']
-
- class NetrcParseError(Exception):
-
- def __init__(self, msg, filename = None, lineno = None):
- self.filename = filename
- self.lineno = lineno
- self.msg = msg
- Exception.__init__(self, msg)
-
-
- def __str__(self):
- return '%s (%s, line %s)' % (self.msg, self.filename, self.lineno)
-
-
-
- class netrc:
-
- def __init__(self, file = None):
- if file is None:
-
- try:
- file = os.path.join(os.environ['HOME'], '.netrc')
- except KeyError:
- raise IOError('Could not find .netrc: $HOME is not set')
-
-
- self.hosts = { }
- self.macros = { }
- with open(file) as fp:
- self._parse(file, fp)
-
-
- def _parse(self, file, fp):
- lexer = shlex.shlex(fp)
- lexer.wordchars += '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
- while not tt:
- break
- if tt == 'machine':
- entryname = lexer.get_token()
- elif tt == 'default':
- entryname = 'default'
- elif tt == 'macdef':
- entryname = lexer.get_token()
- self.macros[entryname] = []
- lexer.whitespace = ' \t'
- while None:
- line = lexer.instream.readline()
- if not line or line == '\n':
- lexer.whitespace = ' \t\r\n'
- break
- continue
- continue
- raise NetrcParseError('bad toplevel token %r' % tt, file, lexer.lineno)
- login = ''
- account = None
- password = None
- self.hosts[entryname] = { }
- while None:
- tt = lexer.get_token()
- if tt == '' and tt == 'machine' and tt == 'default' or tt == 'macdef':
- if password:
- self.hosts[entryname] = (login, account, password)
- lexer.push_token(tt)
- break
- else:
- raise NetrcParseError('malformed %s entry %s terminated by %s' % (toplevel, entryname, repr(tt)), file, lexer.lineno)
- if tt == 'login' or tt == 'user':
- login = lexer.get_token()
- continue
- if tt == 'account':
- account = lexer.get_token()
- continue
- if tt == 'password':
- password = lexer.get_token()
- continue
- raise NetrcParseError('bad follower token %r' % tt, file, lexer.lineno)
- continue
- continue
- return None
-
-
- def authenticators(self, host):
- if host in self.hosts:
- return self.hosts[host]
- if None in self.hosts:
- return self.hosts['default']
- return None
-
-
- def __repr__(self):
- rep = ''
- for host in self.hosts.keys():
- attrs = self.hosts[host]
- rep = rep + 'machine ' + host + '\n\tlogin ' + repr(attrs[0]) + '\n'
- if attrs[1]:
- rep = rep + 'account ' + repr(attrs[1])
- rep = rep + '\tpassword ' + repr(attrs[2]) + '\n'
-
- for macro in self.macros.keys():
- rep = rep + 'macdef ' + macro + '\n'
- for line in self.macros[macro]:
- rep = rep + line
-
- rep = rep + '\n'
-
- return rep
-
-
- if __name__ == '__main__':
- print netrc()
-