initial commit
This commit is contained in:
		
							
								
								
									
										111
									
								
								convertions-env/lib/python3.11/site-packages/yaml/serializer.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								convertions-env/lib/python3.11/site-packages/yaml/serializer.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | ||||
|  | ||||
| __all__ = ['Serializer', 'SerializerError'] | ||||
|  | ||||
| from .error import YAMLError | ||||
| from .events import * | ||||
| from .nodes import * | ||||
|  | ||||
| class SerializerError(YAMLError): | ||||
|     pass | ||||
|  | ||||
| class Serializer: | ||||
|  | ||||
|     ANCHOR_TEMPLATE = 'id%03d' | ||||
|  | ||||
|     def __init__(self, encoding=None, | ||||
|             explicit_start=None, explicit_end=None, version=None, tags=None): | ||||
|         self.use_encoding = encoding | ||||
|         self.use_explicit_start = explicit_start | ||||
|         self.use_explicit_end = explicit_end | ||||
|         self.use_version = version | ||||
|         self.use_tags = tags | ||||
|         self.serialized_nodes = {} | ||||
|         self.anchors = {} | ||||
|         self.last_anchor_id = 0 | ||||
|         self.closed = None | ||||
|  | ||||
|     def open(self): | ||||
|         if self.closed is None: | ||||
|             self.emit(StreamStartEvent(encoding=self.use_encoding)) | ||||
|             self.closed = False | ||||
|         elif self.closed: | ||||
|             raise SerializerError("serializer is closed") | ||||
|         else: | ||||
|             raise SerializerError("serializer is already opened") | ||||
|  | ||||
|     def close(self): | ||||
|         if self.closed is None: | ||||
|             raise SerializerError("serializer is not opened") | ||||
|         elif not self.closed: | ||||
|             self.emit(StreamEndEvent()) | ||||
|             self.closed = True | ||||
|  | ||||
|     #def __del__(self): | ||||
|     #    self.close() | ||||
|  | ||||
|     def serialize(self, node): | ||||
|         if self.closed is None: | ||||
|             raise SerializerError("serializer is not opened") | ||||
|         elif self.closed: | ||||
|             raise SerializerError("serializer is closed") | ||||
|         self.emit(DocumentStartEvent(explicit=self.use_explicit_start, | ||||
|             version=self.use_version, tags=self.use_tags)) | ||||
|         self.anchor_node(node) | ||||
|         self.serialize_node(node, None, None) | ||||
|         self.emit(DocumentEndEvent(explicit=self.use_explicit_end)) | ||||
|         self.serialized_nodes = {} | ||||
|         self.anchors = {} | ||||
|         self.last_anchor_id = 0 | ||||
|  | ||||
|     def anchor_node(self, node): | ||||
|         if node in self.anchors: | ||||
|             if self.anchors[node] is None: | ||||
|                 self.anchors[node] = self.generate_anchor(node) | ||||
|         else: | ||||
|             self.anchors[node] = None | ||||
|             if isinstance(node, SequenceNode): | ||||
|                 for item in node.value: | ||||
|                     self.anchor_node(item) | ||||
|             elif isinstance(node, MappingNode): | ||||
|                 for key, value in node.value: | ||||
|                     self.anchor_node(key) | ||||
|                     self.anchor_node(value) | ||||
|  | ||||
|     def generate_anchor(self, node): | ||||
|         self.last_anchor_id += 1 | ||||
|         return self.ANCHOR_TEMPLATE % self.last_anchor_id | ||||
|  | ||||
|     def serialize_node(self, node, parent, index): | ||||
|         alias = self.anchors[node] | ||||
|         if node in self.serialized_nodes: | ||||
|             self.emit(AliasEvent(alias)) | ||||
|         else: | ||||
|             self.serialized_nodes[node] = True | ||||
|             self.descend_resolver(parent, index) | ||||
|             if isinstance(node, ScalarNode): | ||||
|                 detected_tag = self.resolve(ScalarNode, node.value, (True, False)) | ||||
|                 default_tag = self.resolve(ScalarNode, node.value, (False, True)) | ||||
|                 implicit = (node.tag == detected_tag), (node.tag == default_tag) | ||||
|                 self.emit(ScalarEvent(alias, node.tag, implicit, node.value, | ||||
|                     style=node.style)) | ||||
|             elif isinstance(node, SequenceNode): | ||||
|                 implicit = (node.tag | ||||
|                             == self.resolve(SequenceNode, node.value, True)) | ||||
|                 self.emit(SequenceStartEvent(alias, node.tag, implicit, | ||||
|                     flow_style=node.flow_style)) | ||||
|                 index = 0 | ||||
|                 for item in node.value: | ||||
|                     self.serialize_node(item, node, index) | ||||
|                     index += 1 | ||||
|                 self.emit(SequenceEndEvent()) | ||||
|             elif isinstance(node, MappingNode): | ||||
|                 implicit = (node.tag | ||||
|                             == self.resolve(MappingNode, node.value, True)) | ||||
|                 self.emit(MappingStartEvent(alias, node.tag, implicit, | ||||
|                     flow_style=node.flow_style)) | ||||
|                 for key, value in node.value: | ||||
|                     self.serialize_node(key, node, None) | ||||
|                     self.serialize_node(value, node, key) | ||||
|                 self.emit(MappingEndEvent()) | ||||
|             self.ascend_resolver() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 klein panic
					klein panic