|
1 | 1 | from copy import copy, deepcopy
|
2 | 2 | from enum import Enum
|
3 |
| -from typing import Any, Dict, List, Optional, Union |
| 3 | +from typing import Any, Dict, List, Tuple, Optional, Union |
4 | 4 |
|
5 | 5 | from .source import Source
|
6 | 6 | from .token_kind import TokenKind
|
|
69 | 69 | "UnionTypeExtensionNode",
|
70 | 70 | "EnumTypeExtensionNode",
|
71 | 71 | "InputObjectTypeExtensionNode",
|
| 72 | + "QUERY_DOCUMENT_KEYS", |
72 | 73 | ]
|
73 | 74 |
|
74 | 75 |
|
@@ -219,6 +220,78 @@ class OperationType(Enum):
|
219 | 220 | SUBSCRIPTION = "subscription"
|
220 | 221 |
|
221 | 222 |
|
| 223 | +# Default map from node kinds to their node attributes (internal) |
| 224 | +QUERY_DOCUMENT_KEYS: Dict[str, Tuple[str, ...]] = { |
| 225 | + "name": (), |
| 226 | + "document": ("definitions",), |
| 227 | + "operation_definition": ( |
| 228 | + "name", |
| 229 | + "variable_definitions", |
| 230 | + "directives", |
| 231 | + "selection_set", |
| 232 | + ), |
| 233 | + "variable_definition": ("variable", "type", "default_value", "directives"), |
| 234 | + "variable": ("name",), |
| 235 | + "selection_set": ("selections",), |
| 236 | + "field": ("alias", "name", "arguments", "directives", "selection_set"), |
| 237 | + "argument": ("name", "value"), |
| 238 | + "fragment_spread": ("name", "directives"), |
| 239 | + "inline_fragment": ("type_condition", "directives", "selection_set"), |
| 240 | + "fragment_definition": ( |
| 241 | + # Note: fragment variable definitions are deprecated and will be removed in v3.3 |
| 242 | + "name", |
| 243 | + "variable_definitions", |
| 244 | + "type_condition", |
| 245 | + "directives", |
| 246 | + "selection_set", |
| 247 | + ), |
| 248 | + "list_value": ("values",), |
| 249 | + "object_value": ("fields",), |
| 250 | + "object_field": ("name", "value"), |
| 251 | + "directive": ("name", "arguments"), |
| 252 | + "named_type": ("name",), |
| 253 | + "list_type": ("type",), |
| 254 | + "non_null_type": ("type",), |
| 255 | + "schema_definition": ("description", "directives", "operation_types"), |
| 256 | + "operation_type_definition": ("type",), |
| 257 | + "scalar_type_definition": ("description", "name", "directives"), |
| 258 | + "object_type_definition": ( |
| 259 | + "description", |
| 260 | + "name", |
| 261 | + "interfaces", |
| 262 | + "directives", |
| 263 | + "fields", |
| 264 | + ), |
| 265 | + "field_definition": ("description", "name", "arguments", "type", "directives"), |
| 266 | + "input_value_definition": ( |
| 267 | + "description", |
| 268 | + "name", |
| 269 | + "type", |
| 270 | + "default_value", |
| 271 | + "directives", |
| 272 | + ), |
| 273 | + "interface_type_definition": ( |
| 274 | + "description", |
| 275 | + "name", |
| 276 | + "interfaces", |
| 277 | + "directives", |
| 278 | + "fields", |
| 279 | + ), |
| 280 | + "union_type_definition": ("description", "name", "directives", "types"), |
| 281 | + "enum_type_definition": ("description", "name", "directives", "values"), |
| 282 | + "enum_value_definition": ("description", "name", "directives"), |
| 283 | + "input_object_type_definition": ("description", "name", "directives", "fields"), |
| 284 | + "directive_definition": ("description", "name", "arguments", "locations"), |
| 285 | + "schema_extension": ("directives", "operation_types"), |
| 286 | + "scalar_type_extension": ("name", "directives"), |
| 287 | + "object_type_extension": ("name", "interfaces", "directives", "fields"), |
| 288 | + "interface_type_extension": ("name", "interfaces", "directives", "fields"), |
| 289 | + "union_type_extension": ("name", "directives", "types"), |
| 290 | + "enum_type_extension": ("name", "directives", "values"), |
| 291 | + "input_object_type_extension": ("name", "directives", "fields"), |
| 292 | +} |
| 293 | + |
| 294 | + |
222 | 295 | # Base AST Node
|
223 | 296 |
|
224 | 297 |
|
|
0 commit comments