src/black/mode.py
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | """Data structures configuring Black behavior.
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Mostly around Python language feature support per version and Black configuration
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | chosen by the user.
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | """
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from dataclasses import dataclass, field
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from enum import Enum, auto
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from hashlib import sha256
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from operator import attrgetter
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from typing import Dict, Final, Set
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from warnings import warn
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | from black.const import DEFAULT_LINE_LENGTH
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | class TargetVersion(Enum):
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY33 = 3
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY34 = 4
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY35 = 5
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY36 = 6
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY37 = 7
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY38 = 8
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY39 = 9
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY310 = 10
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY311 = 11
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PY312 = 12
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | class Feature(Enum):
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | F_STRINGS = 2
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | NUMERIC_UNDERSCORES = 3
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | TRAILING_COMMA_IN_CALL = 4
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | TRAILING_COMMA_IN_DEF = 5
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | # The following two feature-flags are mutually exclusive, and exactly one should be
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | # set for every version of python.
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | ASYNC_IDENTIFIERS = 6
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | ASYNC_KEYWORDS = 7
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | ASSIGNMENT_EXPRESSIONS = 8
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | POS_ONLY_ARGUMENTS = 9
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | RELAXED_DECORATORS = 10
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PATTERN_MATCHING = 11
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | UNPACKING_ON_FLOW = 12
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | ANN_ASSIGN_EXTENDED_RHS = 13
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | EXCEPT_STAR = 14
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | VARIADIC_GENERICS = 15
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | DEBUG_F_STRINGS = 16
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | PARENTHESIZED_CONTEXT_MANAGERS = 17
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | TYPE_PARAMS = 18
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | FORCE_OPTIONAL_PARENTHESES = 50
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | # __future__ flags
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | FUTURE_ANNOTATIONS = 51
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | FUTURE_FLAG_TO_FEATURE: Final = {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | "annotations": Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | }
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | VERSION_TO_FEATURES: Dict[TargetVersion, Set[Feature]] = {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY33: {Feature.ASYNC_IDENTIFIERS},
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY34: {Feature.ASYNC_IDENTIFIERS},
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY35: {Feature.TRAILING_COMMA_IN_CALL, Feature.ASYNC_IDENTIFIERS},
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY36: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_IDENTIFIERS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY37: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY38: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.DEBUG_F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASSIGNMENT_EXPRESSIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.POS_ONLY_ARGUMENTS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.UNPACKING_ON_FLOW,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ANN_ASSIGN_EXTENDED_RHS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY39: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.DEBUG_F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASSIGNMENT_EXPRESSIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.RELAXED_DECORATORS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.POS_ONLY_ARGUMENTS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.UNPACKING_ON_FLOW,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ANN_ASSIGN_EXTENDED_RHS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PARENTHESIZED_CONTEXT_MANAGERS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY310: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.DEBUG_F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASSIGNMENT_EXPRESSIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.RELAXED_DECORATORS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.POS_ONLY_ARGUMENTS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.UNPACKING_ON_FLOW,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ANN_ASSIGN_EXTENDED_RHS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PARENTHESIZED_CONTEXT_MANAGERS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PATTERN_MATCHING,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY311: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.DEBUG_F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASSIGNMENT_EXPRESSIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.RELAXED_DECORATORS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.POS_ONLY_ARGUMENTS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.UNPACKING_ON_FLOW,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ANN_ASSIGN_EXTENDED_RHS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PARENTHESIZED_CONTEXT_MANAGERS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PATTERN_MATCHING,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.EXCEPT_STAR,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.VARIADIC_GENERICS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | TargetVersion.PY312: {
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.DEBUG_F_STRINGS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.NUMERIC_UNDERSCORES,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_CALL,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TRAILING_COMMA_IN_DEF,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASYNC_KEYWORDS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.FUTURE_ANNOTATIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ASSIGNMENT_EXPRESSIONS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.RELAXED_DECORATORS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.POS_ONLY_ARGUMENTS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.UNPACKING_ON_FLOW,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.ANN_ASSIGN_EXTENDED_RHS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PARENTHESIZED_CONTEXT_MANAGERS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.PATTERN_MATCHING,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.EXCEPT_STAR,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.VARIADIC_GENERICS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | Feature.TYPE_PARAMS,
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | },
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | }
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
0002 0002 0002 0000 0000 0000 0000 -- 02 001 002 001 002 003 003 0004.75 0002.38 0000.50 | def supports_feature(target_versions: Set[TargetVersion], feature: Feature) -> bool:
0002 0002 0002 0000 0000 0000 0000 -- 02 001 002 001 002 003 003 0004.75 0002.38 0000.50 | return all(feature in VERSION_TO_FEATURES[version] for version in target_versions)
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | class Preview(Enum):
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | """Individual preview style features."""
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | add_trailing_comma_consistently = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | blank_line_after_nested_stub_class = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | blank_line_between_nested_and_def_stub_file = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | hex_codes_in_unicode_sequences = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | improved_async_statements_handling = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | multiline_string_handling = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | no_blank_line_before_class_docstring = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | prefer_splitting_right_hand_side_of_assignments = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | # NOTE: string_processing requires wrap_long_dict_values_in_parens
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | # for https://github.com/psf/black/issues/3117 to be fixed.
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | string_processing = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | parenthesize_conditional_expressions = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | parenthesize_long_type_hints = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | respect_magic_trailing_comma_in_return_type = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | skip_magic_trailing_comma_in_subscript = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | wrap_long_dict_values_in_parens = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | wrap_multiple_context_managers_in_parens = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | dummy_implementations = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | walrus_subscript = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | module_docstring_newlines = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | accept_raw_docstrings = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | fix_power_op_line_length = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | hug_parens_with_braces_and_square_brackets = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | allow_empty_first_line_in_block = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | single_line_format_skip_with_multiple_comments = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | long_case_block_line_splitting = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | allow_form_feeds = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | unify_docstring_detection = auto()
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | respect_east_asian_width = auto()
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | class Deprecated(UserWarning):
---- ---- ---- ---- ---- ---- ---- 01 -- --- --- --- --- --- --- ------- ------- ------- | """Visible deprecation warning."""
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- |
---- ---- ---- ---- ---- ---- ---- -- -- --- --- --- --- --- --- ------- ------- ------- | @dataclass
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | class Mode:
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | target_versions: Set[TargetVersion] = field(default_factory=set)
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | line_length: int = DEFAULT_LINE_LENGTH
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | string_normalization: bool = True
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | is_pyi: bool = False
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | is_ipynb: bool = False
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | skip_source_first_line: bool = False
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | magic_trailing_comma: bool = True
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | experimental_string_processing: bool = False
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | python_cell_magics: Set[str] = field(default_factory=set)
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- | preview: bool = False
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- |
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | def __post_init__(self) -> None:
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | if self.experimental_string_processing:
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | warn(
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | "`experimental string processing` has been included in `preview`"
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | " and deprecated. Use `preview` instead.",
0007 0003 0007 0000 0000 0000 0000 04 02 000 000 000 000 000 000 0000.00 0000.00 0000.00 | Deprecated,
0007 0003 0007 0000 0000 0000 0000 04 -- 000 000 000 000 000 000 0000.00 0000.00 0000.00 | )
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- |
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | def __contains__(self, feature: Preview) -> bool:
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | """
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | Provide `Preview.FEATURE in Mode` syntax that mirrors the ``preview`` flag.
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 |
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | The argument is not checked and features are not differentiated.
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | They only exist to make development easier by clarifying intent.
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | """
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | if feature is Preview.string_processing:
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | return self.preview or self.experimental_string_processing
0010 0005 0004 0000 0005 0001 0000 04 03 002 004 002 004 006 006 0015.51 0015.51 0001.00 | return self.preview
---- ---- ---- ---- ---- ---- ---- 04 -- --- --- --- --- --- --- ------- ------- ------- |
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | def get_cache_key(self) -> str:
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | if self.target_versions:
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | version_str = ",".join(
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(version.value)
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | for version in sorted(self.target_versions, key=attrgetter("value"))
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | )
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | else:
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | version_str = "-"
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | parts = [
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | version_str,
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(self.line_length),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.string_normalization)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.is_pyi)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.is_ipynb)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.skip_source_first_line)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.magic_trailing_comma)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.experimental_string_processing)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | str(int(self.preview)),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | sha256((",".join(sorted(self.python_cell_magics))).encode()).hexdigest(),
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | ]
0021 0007 0021 0000 0000 0000 0000 04 03 000 000 000 000 000 000 0000.00 0000.00 0000.00 | return ".".join(parts)