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

Function get_obs_local_part

Lib/email/_header_value_parser.py:1520–1570  ·  view source on GitHub ↗

obs-local-part = word *("." word)

(value)

Source from the content-addressed store, hash-verified

1518 return local_part, value
1519
1520def get_obs_local_part(value):
1521 """ obs-local-part = word *("." word)
1522 """
1523 obs_local_part = ObsLocalPart()
1524 last_non_ws_was_dot = False
1525 while value and (value[0]=='\\' or value[0] not in PHRASE_ENDS):
1526 if value[0] == '.':
1527 if last_non_ws_was_dot:
1528 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1529 "invalid repeated '.'"))
1530 obs_local_part.append(DOT)
1531 last_non_ws_was_dot = True
1532 value = value[1:]
1533 continue
1534 elif value[0]=='\\':
1535 obs_local_part.append(ValueTerminal(value[0],
1536 'misplaced-special'))
1537 value = value[1:]
1538 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1539 "'\\' character outside of quoted-string/ccontent"))
1540 last_non_ws_was_dot = False
1541 continue
1542 if obs_local_part and obs_local_part[-1].token_type != 'dot':
1543 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1544 "missing '.' between words"))
1545 try:
1546 token, value = get_word(value)
1547 last_non_ws_was_dot = False
1548 except errors.HeaderParseError:
1549 if value[0] not in CFWS_LEADER:
1550 raise
1551 token, value = get_cfws(value)
1552 obs_local_part.append(token)
1553 if not obs_local_part:
1554 raise errors.HeaderParseError(
1555 "expected obs-local-part but found '{}'".format(value))
1556 if (obs_local_part[0].token_type == 'dot' or
1557 obs_local_part[0].token_type=='cfws' and
1558 len(obs_local_part) > 1 and
1559 obs_local_part[1].token_type=='dot'):
1560 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1561 "Invalid leading '.' in local part"))
1562 if (obs_local_part[-1].token_type == 'dot' or
1563 obs_local_part[-1].token_type=='cfws' and
1564 len(obs_local_part) > 1 and
1565 obs_local_part[-2].token_type=='dot'):
1566 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1567 "Invalid trailing '.' in local part"))
1568 if obs_local_part.defects:
1569 obs_local_part.token_type = 'invalid-obs-local-part'
1570 return obs_local_part, value
1571
1572def get_dtext(value):
1573 r""" dtext = <printable ascii except \ [ ]> / obs-dtext

Callers 2

get_local_partFunction · 0.85
get_msg_idFunction · 0.85

Calls 6

ObsLocalPartClass · 0.85
ValueTerminalClass · 0.85
get_wordFunction · 0.85
get_cfwsFunction · 0.85
appendMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…