Skip to content

Commit 4d598c8

Browse files
committed
[property] Change DType Confirmation
Changing dtype confirmation, adding exceptions for dtypes possessing string type values to allow appending with new values. Fixing issue #318.
1 parent 45d2b98 commit 4d598c8

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

odml/property.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -617,9 +617,12 @@ def append(self, obj, strict=True):
617617
if len(new_value) > 1:
618618
raise ValueError("odml.property.append: Use extend to add a list of values!")
619619

620+
special_dtypes = ["url", "person", "text"]
620621
if len(new_value) > 0 and strict and dtypes.infer_dtype(new_value[0]) != self.dtype:
621-
raise ValueError("odml.Property.append: "
622-
"passed value data type does not match dtype!")
622+
623+
if not (dtypes.infer_dtype(new_value[0]) == "string" and self.dtype in special_dtypes):
624+
raise ValueError("odml.Property.append: "
625+
"passed value data type does not match dtype!")
623626

624627
if not self._validate_values(new_value):
625628
raise ValueError("odml.Property.append: passed value(s) cannot be converted "

test/test_property.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,27 @@ def test_value_append(self):
187187
self.assertEqual(p6.value, [0])
188188
self.assertEqual(p6.values, [0])
189189

190+
p7 = Property(name="prop", value=["A Abraham", "B Barnes", "C Clark"], dtype=DType.person)
191+
p7.append("D Dickins")
192+
self.assertEqual(len(p7), 4)
193+
self.assertRaises(ValueError, p7.append, 1)
194+
self.assertRaises(ValueError, p7.append, 1.3)
195+
self.assertRaises(ValueError, p7.append, True)
196+
197+
p8 = Property(name="prop", value=["https://en.wikipedia.org/wiki/Earth"], dtype=DType.url)
198+
p8.append("https://en.wikipedia.org/wiki/Mars")
199+
self.assertEqual(len(p8), 2)
200+
self.assertRaises(ValueError, p8.append, 1)
201+
self.assertRaises(ValueError, p8.append, 1.3)
202+
self.assertRaises(ValueError, p8.append, True)
203+
204+
p9 = Property(name="prop", value=["Earth is No. 3."], dtype=DType.text)
205+
p9.append("Mars is No. 4.")
206+
self.assertEqual(len(p9), 2)
207+
self.assertRaises(ValueError, p9.append, 1)
208+
self.assertRaises(ValueError, p9.append, 1.3)
209+
self.assertRaises(ValueError, p9.append, True)
210+
190211
def test_value_extend(self):
191212
prop = Property(name="extend")
192213

0 commit comments

Comments
 (0)