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

Method getaddress

Lib/email/_parseaddr.py:274–331  ·  view source on GitHub ↗

Parse the next address.

(self)

Source from the content-addressed store, hash-verified

272 return result
273
274 def getaddress(self):
275 """Parse the next address."""
276 self.commentlist = []
277 self.gotonext()
278
279 oldpos = self.pos
280 oldcl = self.commentlist
281 plist = self.getphraselist()
282
283 self.gotonext()
284 returnlist = []
285
286 if self.pos >= len(self.field):
287 # Bad email address technically, no domain.
288 if plist:
289 returnlist = [(SPACE.join(self.commentlist), plist[0])]
290
291 elif self.field[self.pos] in '.@':
292 # email address is just an addrspec
293 # this isn't very efficient since we start over
294 self.pos = oldpos
295 self.commentlist = oldcl
296 addrspec = self.getaddrspec()
297 returnlist = [(SPACE.join(self.commentlist), addrspec)]
298
299 elif self.field[self.pos] == ':':
300 # address is a group
301 returnlist = []
302
303 fieldlen = len(self.field)
304 self.pos += 1
305 while self.pos < len(self.field):
306 self.gotonext()
307 if self.pos < fieldlen and self.field[self.pos] == ';':
308 self.pos += 1
309 break
310 returnlist = returnlist + self.getaddress()
311
312 elif self.field[self.pos] == '<':
313 # Address is a phrase then a route addr
314 routeaddr = self.getrouteaddr()
315
316 if self.commentlist:
317 returnlist = [(SPACE.join(plist) + ' (' +
318 ' '.join(self.commentlist) + ')', routeaddr)]
319 else:
320 returnlist = [(SPACE.join(plist), routeaddr)]
321
322 else:
323 if plist:
324 returnlist = [(SPACE.join(self.commentlist), plist[0])]
325 elif self.field[self.pos] in self.specials:
326 self.pos += 1
327
328 self.gotonext()
329 if self.pos < len(self.field) and self.field[self.pos] == ',':
330 self.pos += 1
331 return returnlist

Callers 1

getaddrlistMethod · 0.95

Calls 5

gotonextMethod · 0.95
getphraselistMethod · 0.95
getaddrspecMethod · 0.95
getrouteaddrMethod · 0.95
joinMethod · 0.45

Tested by

no test coverage detected