@@ -490,6 +490,7 @@ cdef class ObjectIdBuilder(_ArrayBuilderBase):
490490 cdef shared_ptr[CFixedSizeBinaryBuilder] unwrap(self ):
491491 return self .builder
492492
493+
493494cdef class Int32Builder(_ArrayBuilderBase):
494495 cdef:
495496 shared_ptr[CInt32Builder] builder
@@ -721,8 +722,6 @@ cdef object get_field_builder(object field, object tzinfo):
721722 field_builder = Decimal128Builder()
722723 elif getattr (field_type, ' _type_marker' ) == _BsonArrowTypes.binary:
723724 field_builder = BinaryBuilder(field_type.subtype)
724- elif getattr (field_type, ' _type_marker' ) == _BsonArrowTypes.code:
725- field_builder = CodeBuilder()
726725 else :
727726 field_builder = StringBuilder()
728727 return field_builder
@@ -733,7 +732,6 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
733732 shared_ptr[CStructBuilder] builder
734733 object dtype
735734 object context
736- object builder_map
737735
738736 def __cinit__ (self , StructType dtype , tzinfo = None , MemoryPool memory_pool = None ):
739737 cdef StringBuilder field_builder
@@ -746,11 +744,11 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
746744
747745 self .context = context = PyMongoArrowContext(None , {})
748746 context.tzinfo = tzinfo
749- self . builder_map = context.builder_map
747+ builder_map = context.builder_map
750748
751749 for field in dtype:
752750 field_builder = < StringBuilder> get_field_builder(field, tzinfo)
753- self . builder_map[field.name.encode(' utf-8' )] = field_builder
751+ builder_map[field.name.encode(' utf-8' )] = field_builder
754752 c_field_builders.push_back(< shared_ptr[CArrayBuilder]> field_builder.builder)
755753
756754 self .builder.reset(new CStructBuilder(pyarrow_unwrap_data_type(dtype), pool, c_field_builders))
@@ -783,30 +781,7 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
783781 cdef shared_ptr[CArray] out
784782 with nogil:
785783 self .builder.get().Finish(& out)
786-
787- struct_array = pyarrow_wrap_array(out)
788- for struct_def in struct_array:
789- new_types = []
790- new_names = list (struct_def.keys())
791- for fname, ftype in struct_def.items():
792- builder_instance = self .builder_map[fname.encode(' utf-8' )]
793- if isinstance (builder_instance, ObjectIdBuilder): # ObjectIdType
794- new_ftype = ObjectIdType()
795- new_types.append(new_ftype)
796- elif isinstance (builder_instance, Decimal128Builder): # Decimal128Type
797- new_ftype = Decimal128Type_()
798- new_types.append(new_ftype)
799- elif isinstance (builder_instance, BinaryBuilder): # BinaryType
800- new_ftype = BinaryType(self .dtype.field(fname).type.subtype)
801- new_types.append(new_ftype)
802- elif isinstance (builder_instance, CodeBuilder): # CodeType
803- new_ftype = CodeType()
804- new_types.append(new_ftype)
805- else :
806- new_types.append(ftype.type)
807-
808- new_dtype = struct (zip (new_names, new_types))
809- return struct_array.cast(new_dtype)
784+ return pyarrow_wrap_array(out)
810785
811786 cdef shared_ptr[CStructBuilder] unwrap(self ):
812787 return self .builder
0 commit comments