MCPcopy Index your code
hub / github.com/RustPython/RustPython / get_obs_local_part

Function get_obs_local_part

Lib/email/_header_value_parser.py:1503–1553  ·  view source on GitHub ↗

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

(value)

Source from the content-addressed store, hash-verified

1501 return local_part, value
1502
1503def get_obs_local_part(value):
1504 """ obs-local-part = word *("." word)
1505 """
1506 obs_local_part = ObsLocalPart()
1507 last_non_ws_was_dot = False
1508 while value and (value[0]=='\\' or value[0] not in PHRASE_ENDS):
1509 if value[0] == '.':
1510 if last_non_ws_was_dot:
1511 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1512 "invalid repeated '.'"))
1513 obs_local_part.append(DOT)
1514 last_non_ws_was_dot = True
1515 value = value[1:]
1516 continue
1517 elif value[0]=='\\':
1518 obs_local_part.append(ValueTerminal(value[0],
1519 'misplaced-special'))
1520 value = value[1:]
1521 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1522 "'\\' character outside of quoted-string/ccontent"))
1523 last_non_ws_was_dot = False
1524 continue
1525 if obs_local_part and obs_local_part[-1].token_type != 'dot':
1526 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1527 "missing '.' between words"))
1528 try:
1529 token, value = get_word(value)
1530 last_non_ws_was_dot = False
1531 except errors.HeaderParseError:
1532 if value[0] not in CFWS_LEADER:
1533 raise
1534 token, value = get_cfws(value)
1535 obs_local_part.append(token)
1536 if not obs_local_part:
1537 raise errors.HeaderParseError(
1538 "expected obs-local-part but found '{}'".format(value))
1539 if (obs_local_part[0].token_type == 'dot' or
1540 obs_local_part[0].token_type=='cfws' and
1541 len(obs_local_part) > 1 and
1542 obs_local_part[1].token_type=='dot'):
1543 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1544 "Invalid leading '.' in local part"))
1545 if (obs_local_part[-1].token_type == 'dot' or
1546 obs_local_part[-1].token_type=='cfws' and
1547 len(obs_local_part) > 1 and
1548 obs_local_part[-2].token_type=='dot'):
1549 obs_local_part.defects.append(errors.InvalidHeaderDefect(
1550 "Invalid trailing '.' in local part"))
1551 if obs_local_part.defects:
1552 obs_local_part.token_type = 'invalid-obs-local-part'
1553 return obs_local_part, value
1554
1555def get_dtext(value):
1556 r""" dtext = <printable ascii except \ [ ]> / obs-dtext

Callers 2

get_local_partFunction · 0.85
get_msg_idFunction · 0.85

Calls 7

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

Tested by

no test coverage detected