MCPcopy Index your code
hub / github.com/python/cpython / _parse

Method _parse

Lib/netrc.py:93–161  ·  view source on GitHub ↗
(self, file, fp, default_netrc)

Source from the content-addressed store, hash-verified

91 self._parse(file, fp, default_netrc)
92
93 def _parse(self, file, fp, default_netrc):
94 lexer = _netrclex(fp)
95 while 1:
96 # Look for a machine, default, or macdef top-level keyword
97 saved_lineno = lexer.lineno
98 tt = lexer.get_token()
99 if not tt:
100 break
101 elif tt[0] == '#':
102 if lexer.lineno == saved_lineno and len(tt) == 1:
103 lexer.instream.readline()
104 continue
105 elif tt == 'machine':
106 entryname = lexer.get_token()
107 elif tt == 'default':
108 entryname = 'default'
109 elif tt == 'macdef':
110 entryname = lexer.get_token()
111 self.macros[entryname] = []
112 while 1:
113 line = lexer.instream.readline()
114 if not line:
115 raise NetrcParseError(
116 "Macro definition missing null line terminator.",
117 file, lexer.lineno)
118 if line == '\n':
119 # a macro definition finished with consecutive new-line
120 # characters. The first \n is encountered by the
121 # readline() method and this is the second \n.
122 break
123 self.macros[entryname].append(line)
124 continue
125 else:
126 raise NetrcParseError(
127 "bad toplevel token %r" % tt, file, lexer.lineno)
128
129 if not entryname:
130 raise NetrcParseError("missing %r name" % tt, file, lexer.lineno)
131
132 # We're looking at start of an entry for a named machine or default.
133 login = account = password = ''
134 self.hosts[entryname] = {}
135 while 1:
136 prev_lineno = lexer.lineno
137 tt = lexer.get_token()
138 if tt.startswith('#'):
139 if lexer.lineno == prev_lineno:
140 lexer.instream.readline()
141 continue
142 if tt in {'', 'machine', 'default', 'macdef'}:
143 self.hosts[entryname] = (login, account, password)
144 lexer.push_token(tt)
145 break
146 elif tt == 'login' or tt == 'user':
147 login = lexer.get_token()
148 elif tt == 'account':
149 account = lexer.get_token()
150 elif tt == 'password':

Callers 1

__init__Method · 0.95

Calls 10

_security_checkMethod · 0.95
_netrclexClass · 0.85
NetrcParseErrorClass · 0.85
_can_security_checkFunction · 0.85
get_tokenMethod · 0.45
readlineMethod · 0.45
appendMethod · 0.45
startswithMethod · 0.45
push_tokenMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected