MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _parse

Method _parse

tools/python-3.11.9-amd64/Lib/netrc.py:80–142  ·  view source on GitHub ↗
(self, file, fp, default_netrc)

Source from the content-addressed store, hash-verified

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

Callers 1

__init__Method · 0.95

Calls 8

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

Tested by

no test coverage detected