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

Function parse_mime_version

Lib/email/_header_value_parser.py:2182–2248  ·  view source on GitHub ↗

mime-version = [CFWS] 1*digit [CFWS] "." [CFWS] 1*digit [CFWS]

(value)

Source from the content-addressed store, hash-verified

2180#
2181
2182def parse_mime_version(value):
2183 """ mime-version = [CFWS] 1*digit [CFWS] "." [CFWS] 1*digit [CFWS]
2184
2185 """
2186 # The [CFWS] is implicit in the RFC 2045 BNF.
2187 # XXX: This routine is a bit verbose, should factor out a get_int method.
2188 mime_version = MIMEVersion()
2189 if not value:
2190 mime_version.defects.append(errors.HeaderMissingRequiredValue(
2191 "Missing MIME version number (eg: 1.0)"))
2192 return mime_version
2193 if value[0] in CFWS_LEADER:
2194 token, value = get_cfws(value)
2195 mime_version.append(token)
2196 if not value:
2197 mime_version.defects.append(errors.HeaderMissingRequiredValue(
2198 "Expected MIME version number but found only CFWS"))
2199 digits = ''
2200 while value and value[0] != '.' and value[0] not in CFWS_LEADER:
2201 digits += value[0]
2202 value = value[1:]
2203 if not digits.isdigit():
2204 mime_version.defects.append(errors.InvalidHeaderDefect(
2205 "Expected MIME major version number but found {!r}".format(digits)))
2206 mime_version.append(ValueTerminal(digits, 'xtext'))
2207 else:
2208 mime_version.major = int(digits)
2209 mime_version.append(ValueTerminal(digits, 'digits'))
2210 if value and value[0] in CFWS_LEADER:
2211 token, value = get_cfws(value)
2212 mime_version.append(token)
2213 if not value or value[0] != '.':
2214 if mime_version.major is not None:
2215 mime_version.defects.append(errors.InvalidHeaderDefect(
2216 "Incomplete MIME version; found only major number"))
2217 if value:
2218 mime_version.append(ValueTerminal(value, 'xtext'))
2219 return mime_version
2220 mime_version.append(ValueTerminal('.', 'version-separator'))
2221 value = value[1:]
2222 if value and value[0] in CFWS_LEADER:
2223 token, value = get_cfws(value)
2224 mime_version.append(token)
2225 if not value:
2226 if mime_version.major is not None:
2227 mime_version.defects.append(errors.InvalidHeaderDefect(
2228 "Incomplete MIME version; found only major number"))
2229 return mime_version
2230 digits = ''
2231 while value and value[0] not in CFWS_LEADER:
2232 digits += value[0]
2233 value = value[1:]
2234 if not digits.isdigit():
2235 mime_version.defects.append(errors.InvalidHeaderDefect(
2236 "Expected MIME minor version number but found {!r}".format(digits)))
2237 mime_version.append(ValueTerminal(digits, 'xtext'))
2238 else:
2239 mime_version.minor = int(digits)

Callers

nothing calls this directly

Calls 6

MIMEVersionClass · 0.85
get_cfwsFunction · 0.85
ValueTerminalClass · 0.85
appendMethod · 0.45
isdigitMethod · 0.45
formatMethod · 0.45

Tested by

no test coverage detected