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

Function parse_mime_version

Lib/email/_header_value_parser.py:2225–2291  ·  view source on GitHub ↗

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

(value)

Source from the content-addressed store, hash-verified

2223#
2224
2225def parse_mime_version(value):
2226 """ mime-version = [CFWS] 1*digit [CFWS] "." [CFWS] 1*digit [CFWS]
2227
2228 """
2229 # The [CFWS] is implicit in the RFC 2045 BNF.
2230 # XXX: This routine is a bit verbose, should factor out a get_int method.
2231 mime_version = MIMEVersion()
2232 if not value:
2233 mime_version.defects.append(errors.HeaderMissingRequiredValue(
2234 "Missing MIME version number (eg: 1.0)"))
2235 return mime_version
2236 if value[0] in CFWS_LEADER:
2237 token, value = get_cfws(value)
2238 mime_version.append(token)
2239 if not value:
2240 mime_version.defects.append(errors.HeaderMissingRequiredValue(
2241 "Expected MIME version number but found only CFWS"))
2242 digits = ''
2243 while value and value[0] != '.' and value[0] not in CFWS_LEADER:
2244 digits += value[0]
2245 value = value[1:]
2246 if not digits.isdigit():
2247 mime_version.defects.append(errors.InvalidHeaderDefect(
2248 "Expected MIME major version number but found {!r}".format(digits)))
2249 mime_version.append(ValueTerminal(digits, 'xtext'))
2250 else:
2251 mime_version.major = int(digits)
2252 mime_version.append(ValueTerminal(digits, 'digits'))
2253 if value and value[0] in CFWS_LEADER:
2254 token, value = get_cfws(value)
2255 mime_version.append(token)
2256 if not value or value[0] != '.':
2257 if mime_version.major is not None:
2258 mime_version.defects.append(errors.InvalidHeaderDefect(
2259 "Incomplete MIME version; found only major number"))
2260 if value:
2261 mime_version.append(ValueTerminal(value, 'xtext'))
2262 return mime_version
2263 mime_version.append(ValueTerminal('.', 'version-separator'))
2264 value = value[1:]
2265 if value and value[0] in CFWS_LEADER:
2266 token, value = get_cfws(value)
2267 mime_version.append(token)
2268 if not value:
2269 if mime_version.major is not None:
2270 mime_version.defects.append(errors.InvalidHeaderDefect(
2271 "Incomplete MIME version; found only major number"))
2272 return mime_version
2273 digits = ''
2274 while value and value[0] not in CFWS_LEADER:
2275 digits += value[0]
2276 value = value[1:]
2277 if not digits.isdigit():
2278 mime_version.defects.append(errors.InvalidHeaderDefect(
2279 "Expected MIME minor version number but found {!r}".format(digits)))
2280 mime_version.append(ValueTerminal(digits, 'xtext'))
2281 else:
2282 mime_version.minor = int(digits)

Callers

nothing calls this directly

Calls 6

MIMEVersionClass · 0.85
get_cfwsFunction · 0.85
ValueTerminalClass · 0.85
isdigitMethod · 0.80
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…