MCPcopy Index your code
hub / github.com/python/mypy / read_pattern

Function read_pattern

mypy/nativeparse.py:1087–1186  ·  view source on GitHub ↗
(state: State, data: ReadBuffer)

Source from the content-addressed store, hash-verified

1085
1086
1087def read_pattern(state: State, data: ReadBuffer) -> Pattern:
1088 tag = read_tag(data)
1089 if tag == nodes.AS_PATTERN:
1090 has_pattern = read_bool(data)
1091 if has_pattern:
1092 pattern = read_pattern(state, data)
1093 else:
1094 pattern = None
1095 has_name = read_bool(data)
1096 if has_name:
1097 name_str = read_str(data)
1098 name = NameExpr(name_str)
1099 read_loc(data, name)
1100 else:
1101 name = None
1102 as_pattern = AsPattern(pattern, name)
1103 read_loc(data, as_pattern)
1104 expect_end_tag(data)
1105 return as_pattern
1106 elif tag == nodes.OR_PATTERN:
1107 n = read_int(data)
1108 patterns = [read_pattern(state, data) for _ in range(n)]
1109 or_pattern = OrPattern(patterns)
1110 read_loc(data, or_pattern)
1111 expect_end_tag(data)
1112 return or_pattern
1113 elif tag == nodes.VALUE_PATTERN:
1114 expr = read_expression(state, data)
1115 value_pattern = ValuePattern(expr)
1116 read_loc(data, value_pattern)
1117 expect_end_tag(data)
1118 return value_pattern
1119 elif tag == nodes.SINGLETON_PATTERN:
1120 singleton_tag = read_tag(data)
1121 if singleton_tag == LITERAL_NONE:
1122 value = None
1123 else:
1124 # It's a boolean
1125 value = singleton_tag == 1 # TAG_LITERAL_TRUE
1126 singleton_pattern = SingletonPattern(value)
1127 read_loc(data, singleton_pattern)
1128 expect_end_tag(data)
1129 return singleton_pattern
1130 elif tag == nodes.SEQUENCE_PATTERN:
1131 n = read_int(data)
1132 patterns = [read_pattern(state, data) for _ in range(n)]
1133 sequence_pattern = SequencePattern(patterns)
1134 read_loc(data, sequence_pattern)
1135 expect_end_tag(data)
1136 return sequence_pattern
1137 elif tag == nodes.STARRED_PATTERN:
1138 has_name = read_bool(data)
1139 if has_name:
1140 name_str = read_str(data)
1141 name = NameExpr(name_str)
1142 read_loc(data, name)
1143 else:
1144 name = None

Callers 1

read_statementFunction · 0.85

Calls 15

read_strFunction · 0.90
NameExprClass · 0.90
AsPatternClass · 0.90
read_intFunction · 0.90
OrPatternClass · 0.90
ValuePatternClass · 0.90
SingletonPatternClass · 0.90
SequencePatternClass · 0.90
StarredPatternClass · 0.90
MappingPatternClass · 0.90
ClassPatternClass · 0.90
read_locFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…