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

Function get_local_part

Lib/email/_header_value_parser.py:1481–1518  ·  view source on GitHub ↗

local-part = dot-atom / quoted-string / obs-local-part

(value)

Source from the content-addressed store, hash-verified

1479 return phrase, value
1480
1481def get_local_part(value):
1482 """ local-part = dot-atom / quoted-string / obs-local-part
1483
1484 """
1485 local_part = LocalPart()
1486 leader = None
1487 if value and value[0] in CFWS_LEADER:
1488 leader, value = get_cfws(value)
1489 if not value:
1490 raise errors.HeaderParseError(
1491 "expected local-part but found '{}'".format(value))
1492 try:
1493 token, value = get_dot_atom(value)
1494 except errors.HeaderParseError:
1495 try:
1496 token, value = get_word(value)
1497 except errors.HeaderParseError:
1498 if value[0] != '\\' and value[0] in PHRASE_ENDS:
1499 raise
1500 token = TokenList()
1501 if leader is not None:
1502 token[:0] = [leader]
1503 local_part.append(token)
1504 if value and (value[0]=='\\' or value[0] not in PHRASE_ENDS):
1505 obs_local_part, value = get_obs_local_part(str(local_part) + value)
1506 if obs_local_part.token_type == 'invalid-obs-local-part':
1507 local_part.defects.append(errors.InvalidHeaderDefect(
1508 "local-part is not dot-atom, quoted-string, or obs-local-part"))
1509 else:
1510 local_part.defects.append(errors.ObsoleteHeaderDefect(
1511 "local-part is not a dot-atom (contains CFWS)"))
1512 local_part[0] = obs_local_part
1513 try:
1514 local_part.value.encode('ascii')
1515 except UnicodeEncodeError:
1516 local_part.defects.append(errors.NonASCIILocalPartDefect(
1517 "local-part contains non-ASCII characters)"))
1518 return local_part, value
1519
1520def get_obs_local_part(value):
1521 """ obs-local-part = word *("." word)

Callers 1

get_addr_specFunction · 0.85

Calls 10

LocalPartClass · 0.85
get_cfwsFunction · 0.85
get_dot_atomFunction · 0.85
get_wordFunction · 0.85
TokenListClass · 0.85
get_obs_local_partFunction · 0.85
strFunction · 0.85
formatMethod · 0.45
appendMethod · 0.45
encodeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…