Skip to content

Commit e09ee2c

Browse files
committed
Address review
1 parent 25643a4 commit e09ee2c

File tree

3 files changed

+165
-49
lines changed

3 files changed

+165
-49
lines changed

bindings/python/pymongoarrow/lib.pyx

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ cdef const bson_t* bson_reader_read_safe(bson_reader_t* stream_reader) except? N
5656
raise InvalidBSON("Could not read BSON document stream")
5757
return doc
5858

59-
cdef str _get_human_readable_bson_type_t(bson_type_t type_t):
59+
cdef str _bson_type_name(uint8_t type_t):
6060
if type_t == BSON_TYPE_EOD:
6161
result = "EOD"
6262
elif type_t == BSON_TYPE_UTF8:
@@ -101,6 +101,10 @@ cdef str _get_human_readable_bson_type_t(bson_type_t type_t):
101101
result = "maxkey"
102102
elif type_t == BSON_TYPE_MINKEY:
103103
result = "minkey"
104+
elif type_t == ARROW_TYPE_DATE32:
105+
result = "date32"
106+
elif type_t == ARROW_TYPE_DATE64:
107+
result = "date64"
104108
else:
105109
result = f"Unknown type: {str(type_t)}"
106110
return result
@@ -229,7 +233,7 @@ cdef class BuilderManager:
229233
# Get the builder.
230234
builder = <_ArrayBuilderBase>self.builder_map.get(full_key, None)
231235
if builder is None and not self.has_schema:
232-
builder = self.get_builder(full_key, value_t, doc_iter, False)
236+
builder = self.get_builder(full_key, value_t, doc_iter, True)
233237
if builder is None:
234238
continue
235239

@@ -419,7 +423,7 @@ cdef class StringBuilder(_ArrayBuilderBase):
419423
value = bson_iter_utf8(doc_iter, &str_len)
420424
return self.builder.get().Append(value, str_len)
421425
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
422-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
426+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
423427
else:
424428
return self.builder.get().AppendNull()
425429

@@ -441,7 +445,7 @@ cdef class CodeBuilder(StringBuilder):
441445
bson_str = bson_iter_code(doc_iter, &str_len)
442446
return self.builder.get().Append(bson_str, str_len)
443447
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
444-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
448+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
445449
else:
446450
return self.builder.get().AppendNull()
447451

@@ -466,7 +470,7 @@ cdef class ObjectIdBuilder(_ArrayBuilderBase):
466470
if value_t == BSON_TYPE_OID:
467471
return self.builder.get().Append(bson_iter_oid(doc_iter).bytes)
468472
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
469-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
473+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
470474
else:
471475
return self.builder.get().AppendNull()
472476

@@ -507,7 +511,7 @@ cdef class Int32Builder(_ArrayBuilderBase):
507511
raise OverflowError("Overflowed Int32 value")
508512
return self.builder.get().Append(ivalue)
509513
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
510-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
514+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
511515
else:
512516
return self.builder.get().AppendNull()
513517

@@ -538,7 +542,7 @@ cdef class Int64Builder(_ArrayBuilderBase):
538542
return self.builder.get().AppendNull()
539543
return self.builder.get().Append(bson_iter_as_int64(doc_iter))
540544
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
541-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
545+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
542546
else:
543547
return self.builder.get().AppendNull()
544548

@@ -562,7 +566,7 @@ cdef class DoubleBuilder(_ArrayBuilderBase):
562566
value_t == BSON_TYPE_INT64):
563567
return self.builder.get().Append(bson_iter_as_double(doc_iter))
564568
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
565-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
569+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
566570
else:
567571
return self.builder.get().AppendNull()
568572

@@ -596,7 +600,7 @@ cdef class DatetimeBuilder(_ArrayBuilderBase):
596600
if value_t == BSON_TYPE_DATE_TIME:
597601
return self.builder.get().Append(bson_iter_date_time(doc_iter))
598602
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
599-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
603+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
600604
else:
601605
return self.builder.get().AppendNull()
602606

@@ -618,7 +622,7 @@ cdef class Date64Builder(_ArrayBuilderBase):
618622
if value_t == BSON_TYPE_DATE_TIME:
619623
return self.builder.get().Append(bson_iter_date_time(doc_iter))
620624
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
621-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `date64`")
625+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(<uint8_t>self.type_marker)}`")
622626
else:
623627
return self.builder.get().AppendNull()
624628

@@ -651,7 +655,7 @@ cdef class Date32Builder(_ArrayBuilderBase):
651655
seconds_val = value // 86400000
652656
return self.builder.get().Append(seconds_val)
653657
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
654-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `date32`")
658+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(<uint8_t>self.type_marker)}`")
655659
else:
656660
return self.builder.get().AppendNull()
657661

@@ -690,7 +694,7 @@ cdef class BoolBuilder(_ArrayBuilderBase):
690694
if value_t == BSON_TYPE_BOOL:
691695
return self.builder.get().Append(bson_iter_bool(doc_iter))
692696
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
693-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
697+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
694698
else:
695699
return self.builder.get().AppendNull()
696700

@@ -718,15 +722,15 @@ cdef class Decimal128Builder(_ArrayBuilderBase):
718722

719723
if self.supported == 0:
720724
# We do not support big-endian systems.
721-
raise TypeError(f"Big-endian systems are not supported for `{_get_human_readable_bson_type_t(self.type_marker)}`")
725+
raise TypeError(f"Big-endian systems are not supported for `{_bson_type_name(self.type_marker)}`")
722726

723727
if value_t == BSON_TYPE_DECIMAL128:
724728
bson_iter_decimal128(doc_iter, &dec128)
725729
memcpy(dec128_buf, &dec128.low, 8);
726730
memcpy(dec128_buf + 8, &dec128.high, 8)
727731
return self.builder.get().Append(dec128_buf)
728732
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
729-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
733+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
730734
else:
731735
return self.builder.get().AppendNull()
732736

@@ -768,7 +772,7 @@ cdef class BinaryBuilder(_ArrayBuilderBase):
768772
return self.builder.get().AppendNull()
769773
return self.builder.get().Append(val_buf, val_buf_len)
770774
if not self.allow_invalid and value_t != BSON_TYPE_NULL:
771-
raise TypeError(f"Got unexpected type `{_get_human_readable_bson_type_t(value_t)}` instead of expected type `{_get_human_readable_bson_type_t(self.type_marker)}`")
775+
raise TypeError(f"Got unexpected type `{_bson_type_name(<uint8_t>value_t)}` instead of expected type `{_bson_type_name(self.type_marker)}`")
772776
else:
773777
return self.builder.get().AppendNull()
774778

bindings/python/test/test_bson.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def test_simple(self):
191191
]
192192
as_dict = {"data": [True, False, None, None, False, True]}
193193
with self.assertRaisesRegex(
194-
TypeError, "Got unexpected type `int32` instead of expected type `bool`"
194+
TypeError, "Got unexpected type `int32` instead of expected type `boolean`"
195195
):
196196
self._run_test(docs, as_dict)
197197

@@ -273,7 +273,7 @@ def test_simple(self):
273273
]
274274
}
275275
with self.assertRaisesRegex(
276-
TypeError, "Got unexpected type `int32` instead of expected type `bool`"
276+
TypeError, "Got unexpected type `int32` instead of expected type `boolean`"
277277
):
278278
self._run_test(docs, as_dict)
279279

@@ -324,6 +324,6 @@ def test_nested(self):
324324
]
325325
}
326326
with self.assertRaisesRegex(
327-
TypeError, "Got unexpected type `int32` instead of expected type `bool`"
327+
TypeError, "Got unexpected type `int32` instead of expected type `boolean`"
328328
):
329329
self._run_test(docs, as_dict)

0 commit comments

Comments
 (0)