MCPcopy Index your code
hub / github.com/apache/fory / visit_array

Method visit_array

python/pyfory/struct.py:880–909  ·  view source on GitHub ↗
(self, field_name, elem_type, carrier, types_path=None)

Source from the content-addressed store, hash-verified

878 self.type_resolver = type_resolver
879
880 def visit_array(self, field_name, elem_type, carrier, types_path=None):
881 type_id = _array_type_id(elem_type, carrier)
882 from pyfory.serializer import (
883 ForyArrayFieldSerializer,
884 Numpy1DArraySerializer,
885 PyArraySerializer,
886 fory_array_wrapper_type,
887 typecode_dict,
888 typeid_code,
889 )
890
891 if carrier == "array":
892 wrapper_type = fory_array_wrapper_type(type_id)
893 return ForyArrayFieldSerializer(self.type_resolver, wrapper_type, type_id, field_name)
894 if carrier == "pyarray":
895 typecode = typeid_code.get(type_id)
896 if typecode is None:
897 raise TypeError(f"pyfory.PyArray does not support array type id {type_id}")
898 _itemsize, ftype, _type_id = typecode_dict[typecode]
899 return PyArraySerializer(self.type_resolver, ftype, type_id)
900 if carrier == "ndarray":
901 for dtype, (_itemsize, _format, ftype, dtype_type_id) in Numpy1DArraySerializer.dtypes_dict.items():
902 if dtype_type_id == type_id:
903 if ENABLE_FORY_CYTHON_SERIALIZATION:
904 from pyfory.serialization import Numpy1DArraySerializer as Numpy1DArrayRuntimeSerializer
905
906 return Numpy1DArrayRuntimeSerializer(self.type_resolver, ftype, dtype)
907 return Numpy1DArraySerializer(self.type_resolver, ftype, dtype)
908 raise TypeError(f"pyfory.NDArray does not support array type id {type_id}")
909 raise TypeError(f"Unknown array carrier {carrier!r}")
910
911 def visit_list(self, field_name, elem_type, types_path=None):
912 from pyfory.serializer import ListSerializer # Local import

Callers

nothing calls this directly

Calls 7

fory_array_wrapper_typeFunction · 0.90
PyArraySerializerClass · 0.90
_array_type_idFunction · 0.85
itemsMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected