MCPcopy
hub / github.com/psf/black / parse_mode

Function parse_mode

src/blackd/__init__.py:246–294  ·  view source on GitHub ↗
(headers: MultiMapping[str])

Source from the content-addressed store, hash-verified

244
245
246def parse_mode(headers: MultiMapping[str]) -> black.Mode:
247 try:
248 line_length = int(headers.get(LINE_LENGTH_HEADER, black.DEFAULT_LINE_LENGTH))
249 except ValueError:
250 raise HeaderError("Invalid line length header value") from None
251
252 if PYTHON_VARIANT_HEADER in headers:
253 value = headers[PYTHON_VARIANT_HEADER]
254 try:
255 pyi, versions = parse_python_variant_header(value)
256 except InvalidVariantHeader as e:
257 raise HeaderError(
258 f"Invalid value for {PYTHON_VARIANT_HEADER}: {e.args[0]}",
259 ) from None
260 else:
261 pyi = False
262 versions = set()
263
264 skip_string_normalization = bool(
265 headers.get(SKIP_STRING_NORMALIZATION_HEADER, False)
266 )
267 skip_magic_trailing_comma = bool(headers.get(SKIP_MAGIC_TRAILING_COMMA, False))
268 skip_source_first_line = bool(headers.get(SKIP_SOURCE_FIRST_LINE, False))
269
270 preview = bool(headers.get(PREVIEW, False))
271 unstable = bool(headers.get(UNSTABLE, False))
272 enable_features: set[black.Preview] = set()
273 enable_unstable_features = headers.get(ENABLE_UNSTABLE_FEATURE, "").split(",")
274 for piece in enable_unstable_features:
275 piece = piece.strip()
276 if piece:
277 try:
278 enable_features.add(black.Preview[piece])
279 except KeyError:
280 raise HeaderError(
281 f"Invalid value for {ENABLE_UNSTABLE_FEATURE}: {piece}",
282 ) from None
283
284 return black.FileMode(
285 target_versions=versions,
286 is_pyi=pyi,
287 line_length=line_length,
288 skip_source_first_line=skip_source_first_line,
289 string_normalization=not skip_string_normalization,
290 magic_trailing_comma=not skip_magic_trailing_comma,
291 preview=preview,
292 unstable=unstable,
293 enabled_features=enable_features,
294 )
295
296
297def parse_python_variant_header(value: str) -> tuple[bool, set[black.TargetVersion]]:

Callers 1

handleFunction · 0.70

Calls 2

HeaderErrorClass · 0.85

Tested by

no test coverage detected