@@ -490,6 +490,7 @@ cdef class ObjectIdBuilder(_ArrayBuilderBase):
490
490
cdef shared_ptr[CFixedSizeBinaryBuilder] unwrap(self ):
491
491
return self .builder
492
492
493
+
493
494
cdef class Int32Builder(_ArrayBuilderBase):
494
495
cdef:
495
496
shared_ptr[CInt32Builder] builder
@@ -721,8 +722,6 @@ cdef object get_field_builder(object field, object tzinfo):
721
722
field_builder = Decimal128Builder()
722
723
elif getattr (field_type, ' _type_marker' ) == _BsonArrowTypes.binary:
723
724
field_builder = BinaryBuilder(field_type.subtype)
724
- elif getattr (field_type, ' _type_marker' ) == _BsonArrowTypes.code:
725
- field_builder = CodeBuilder()
726
725
else :
727
726
field_builder = StringBuilder()
728
727
return field_builder
@@ -733,7 +732,6 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
733
732
shared_ptr[CStructBuilder] builder
734
733
object dtype
735
734
object context
736
- object builder_map
737
735
738
736
def __cinit__ (self , StructType dtype , tzinfo = None , MemoryPool memory_pool = None ):
739
737
cdef StringBuilder field_builder
@@ -746,11 +744,11 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
746
744
747
745
self .context = context = PyMongoArrowContext(None , {})
748
746
context.tzinfo = tzinfo
749
- self . builder_map = context.builder_map
747
+ builder_map = context.builder_map
750
748
751
749
for field in dtype:
752
750
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
754
752
c_field_builders.push_back(< shared_ptr[CArrayBuilder]> field_builder.builder)
755
753
756
754
self .builder.reset(new CStructBuilder(pyarrow_unwrap_data_type(dtype), pool, c_field_builders))
@@ -783,30 +781,7 @@ cdef class DocumentBuilder(_ArrayBuilderBase):
783
781
cdef shared_ptr[CArray] out
784
782
with nogil:
785
783
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)
810
785
811
786
cdef shared_ptr[CStructBuilder] unwrap(self ):
812
787
return self .builder
0 commit comments