40 lines
984 B
Python
40 lines
984 B
Python
|
|
from __future__ import annotations
|
|
|
|
if False: # MYPY
|
|
from typing import Any, Dict, List, Union, Optional, Iterator # NOQA
|
|
|
|
|
|
merge_attrib = '_yaml_merge'
|
|
|
|
|
|
class MergeValue:
|
|
attrib = merge_attrib
|
|
|
|
def __init__(self) -> None:
|
|
self.value: List[Any] = []
|
|
self.sequence = None
|
|
self.merge_pos: Optional[int] = None # position of merge in the mapping
|
|
|
|
def __getitem__(self, index: Any) -> Any:
|
|
return self.value[index]
|
|
|
|
def __setitem__(self, index: Any, val: Any) -> None:
|
|
self.value[index] = val
|
|
|
|
def __repr__(self) -> Any:
|
|
return f'MergeValue({self.value!r})'
|
|
|
|
def __len__(self) -> Any:
|
|
return len(self.value)
|
|
|
|
def append(self, elem: Any) -> Any:
|
|
self.value.append(elem)
|
|
|
|
def extend(self, elements: Any) -> None:
|
|
self.value.extend(elements)
|
|
|
|
def set_sequence(self, seq: Any) -> None:
|
|
# print('mergevalue.set_sequence node', node.anchor)
|
|
self.sequence = seq
|