| 956 | |
| 957 | |
| 958 | class GraphSON2Serializer(_BaseGraphSONSerializer): |
| 959 | TYPE_KEY = "@type" |
| 960 | VALUE_KEY = "@value" |
| 961 | |
| 962 | _serializers = GraphSON1Serializer.get_type_definitions() |
| 963 | |
| 964 | def serialize(self, value, writer=None): |
| 965 | """ |
| 966 | Serialize a type to GraphSON2. |
| 967 | |
| 968 | e.g {'@type': 'gx:Duration', '@value': 'P2DT4H'} |
| 969 | |
| 970 | :param value: The python object to serialize. |
| 971 | """ |
| 972 | serializer = self.get_serializer(value) |
| 973 | if not serializer: |
| 974 | raise ValueError("Unable to find a serializer for value of type: ".format(type(value))) |
| 975 | |
| 976 | val = serializer.serialize(value, writer or self) |
| 977 | if serializer is TypeWrapperTypeIO: |
| 978 | graphson_base_type = value.type_io.graphson_base_type |
| 979 | graphson_type = value.type_io.graphson_type |
| 980 | else: |
| 981 | graphson_base_type = serializer.graphson_base_type |
| 982 | graphson_type = serializer.graphson_type |
| 983 | |
| 984 | if graphson_base_type is None: |
| 985 | out = val |
| 986 | else: |
| 987 | out = {self.TYPE_KEY: graphson_type} |
| 988 | if val is not None: |
| 989 | out[self.VALUE_KEY] = val |
| 990 | |
| 991 | return out |
| 992 | |
| 993 | |
| 994 | GraphSON2Serializer.register(int, IntegerTypeIO) |
no test coverage detected