diff --git a/odml/property.py b/odml/property.py
index 4526045..e708422 100644
--- a/odml/property.py
+++ b/odml/property.py
@@ -34,19 +34,39 @@ def odml_tuple_import(t_count, new_value):
     except NameError:
         unicode = str
 
-    if len(new_value) != 1 and not isinstance(new_value[0], unicode):
-        return new_value
+    if not isinstance(new_value, (list, tuple)) and \
+            not isinstance(new_value[0], (list, tuple)):
+        new_value = [new_value]
+
+    return_value = []
+
+    for n_val in new_value:
+        if isinstance(n_val, (list, tuple)):
+            if len(n_val) == t_count:
+                n_val_str = "("
+                for tuple_val in n_val:
+                    n_val_str += str(tuple_val) + "; "
+                return_value += [n_val_str[:-2] + ")"]
+        else:
+            #non-unicode handling needed for python2
+            if len(n_val) != 1 and not isinstance(n_val[0], unicode):
+                n_val = n_val.encode('utf-8')
+            cln = n_val.strip()
+            br_check = cln.count("(") == cln.count(")")
+            sep_check = t_count == 1 or cln.count("(") == (cln.count(";") / (t_count - 1))
 
-    cln = new_value[0].strip()
-    l_check = cln.startswith("[") and cln.endswith("]")
-    br_check = cln.count("(") == cln.count(")")
-    com_check = cln.count("(") == (cln.count(",") + 1)
-    sep_check = t_count == 1 or cln.count("(") == (cln.count(";") / (t_count - 1))
+            if len(new_value) == 1 and cln.startswith("["):
+                l_check = cln.startswith("[") and cln.endswith("]")
+                com_check = cln.count("(") == (cln.count(",") + 1)
+                if l_check and br_check and com_check and sep_check:
+                    return_value = cln[1:-1].split(",")
+            elif br_check and sep_check:
+                return_value += [cln]
 
-    if l_check and br_check and com_check and sep_check:
-        new_value = cln[1:-1].split(",")
+    if not return_value:
+        return_value = new_value
 
-    return new_value
+    return return_value
 
 
 @allow_inherit_docstring
@@ -774,6 +794,11 @@ class BaseProperty(base.BaseObject):
             return
 
         new_value = self._convert_value_input(obj)
+
+        if self._dtype.endswith("-tuple"):
+            t_count = int(self._dtype.split("-")[0])
+            new_value = odml_tuple_import(t_count, new_value)
+
         if len(new_value) > 0 and strict and \
                 dtypes.infer_dtype(new_value[0]) != self.dtype:
 
@@ -811,6 +836,10 @@ class BaseProperty(base.BaseObject):
         if len(new_value) > 1:
             raise ValueError("odml.property.append: Use extend to add a list of values!")
 
+        if self._dtype.endswith("-tuple"):
+            t_count = int(self._dtype.split("-")[0])
+            new_value = odml_tuple_import(t_count, new_value)
+
         if len(new_value) > 0 and strict and \
                 dtypes.infer_dtype(new_value[0]) != self.dtype:
 

List-Style Tuple Integration
As the editor sends tuples in a list and this might be useful for some users, processing of tuples given in such a format would be helpful.
diff --git a/test/test_property.py b/test/test_property.py
index 1a3cc92..8a38daf 100644
--- a/test/test_property.py
+++ b/test/test_property.py
@@ -124,6 +124,16 @@ class TestProperty(unittest.TestCase):
         with self.assertRaises(ValueError):
             Property(name="intprop", dtype=DType.int, value=[2, "Hello!", 4])
 
+        prop6 = Property('myprop', values=["(8; 9; 10)", "(11; 12; 13)"], dtype="3-tuple")
+        self.assertEqual(len(prop6.values), 2)
+
+        prop7 = Property('myprop', values=[["0", "1", "2"], [3, 4, 5]], dtype="3-tuple")
+        self.assertEqual(len(prop7.values), 2)
+
+        prop8 = Property('myprop', values=["(8; 9; 10)", ["0", "1", "2"], [3, 4, 5]], dtype="3-tuple")
+        self.assertEqual(len(prop8.values), 3)
+
+
     def test_value_append(self):
         # Test append w/o Property value or dtype
         prop = Property(name="append")
@@ -231,6 +241,9 @@ class TestProperty(unittest.TestCase):
         prop9.append("(7; 8; 9)")
         self.assertEqual(len(prop9), 2)
         self.assertRaises(ValueError, prop9.append, "(10; 11)")
+        prop9.append([[2, 3, 4]])
+        self.assertEqual(len(prop9), 3)
+        self.assertRaises(ValueError, prop9.append, [[10, 11]])
 
     def test_value_extend(self):
         prop = Property(name="extend")
@@ -332,10 +345,13 @@ class TestProperty(unittest.TestCase):
         self.assertRaises(ValueError, prop3.extend, 1.3)
         self.assertRaises(ValueError, prop3.extend, True)
 
-        prop = Property(name="tuple-test", dtype="3-tuple", values="(1; 2; 3)")
-        prop.extend(["(7; 8; 9)", "(10; 11; 12)"])
-        self.assertEqual(len(prop), 3)
-        self.assertRaises(ValueError, prop.extend, "(10; 11)")
+        prop4 = Property(name="tuple-test", dtype="3-tuple", values="(1; 2; 3)")
+        prop4.extend(["(7; 8; 9)", "(10; 11; 12)"])
+        self.assertEqual(len(prop4), 3)
+        self.assertRaises(ValueError, prop4.extend, "(10; 11)")
+        prop4.extend([[2, 3, 4], [5, 6, 7]])
+        self.assertEqual(len(prop4), 5)
+        self.assertRaises(ValueError, prop4.extend, [[10, 11]])
 
     def test_get_set_value(self):
         values = [1, 2, 3, 4, 5]

pip install -e .
parse_log_pytest
pytest
pytest
apt-get update apt-get install -y gcc libxml2-dev libxslt1-dev lib32z1-dev
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
docopt==0.6.2
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
isodate==0.7.2
lxml==5.3.1
-e git+https://github.com/G-Node/python-odml.git@441432bbf7368fa2a2ccac0348ce8b221266d2d2#egg=odML
packaging @ file:///croot/packaging_1734472117206/work
pathlib==1.0.1
pluggy @ file:///croot/pluggy_1733169602837/work
pyparsing==3.2.3
pytest @ file:///croot/pytest_1738938843180/work
PyYAML==6.0.2
rdflib==7.1.4
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work

name: python-odml
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - docopt==0.6.2
      - isodate==0.7.2
      - lxml==5.3.1
      - pathlib==1.0.1
      - pyparsing==3.2.3
      - pyyaml==6.0.2
      - rdflib==7.1.4
prefix: /opt/conda/envs/python-odml

test/test_property.py::TestProperty::test_value test/test_property.py::TestProperty::test_value_append test/test_property.py::TestProperty::test_value_extend
test/test_property.py::TestProperty::test_bool_conversion test/test_property.py::TestProperty::test_clone test/test_property.py::TestProperty::test_comparison test/test_property.py::TestProperty::test_dtype test/test_property.py::TestProperty::test_export_leaf test/test_property.py::TestProperty::test_get_merged_equivalent test/test_property.py::TestProperty::test_get_path test/test_property.py::TestProperty::test_get_set_value test/test_property.py::TestProperty::test_id test/test_property.py::TestProperty::test_merge test/test_property.py::TestProperty::test_merge_check test/test_property.py::TestProperty::test_name test/test_property.py::TestProperty::test_new_id test/test_property.py::TestProperty::test_parent test/test_property.py::TestProperty::test_set_values_cardinality test/test_property.py::TestProperty::test_simple_attributes test/test_property.py::TestProperty::test_str_to_int_convert test/test_property.py::TestProperty::test_values_cardinality
odml/property.py
odml/property.py