Просмотр исходного кода

Item: assert type also in property getter

also: fixed Item.xattrs to be StableDict (not just a dict, as the
msgpack unpacker gives us)
Thomas Waldmann 3 лет назад
Родитель
Сommit
9d684120a2
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      src/borg/item.pyx

+ 6 - 1
src/borg/item.pyx

@@ -207,6 +207,8 @@ class PropDict:
                 raise AttributeError(attr_error_msg) from None
                 raise AttributeError(attr_error_msg) from None
             if decode is not None:
             if decode is not None:
                 value = decode(value)
                 value = decode(value)
+            if not isinstance(value, value_type):
+                raise TypeError(type_error_msg)
             return value
             return value
 
 
         def _set(self, value):
         def _set(self, value):
@@ -392,7 +394,10 @@ class Item(PropDict):
                 v = fix_timestamp(v)
                 v = fix_timestamp(v)
             if k in ('acl_access', 'acl_default', 'acl_extended', 'acl_nfs4'):
             if k in ('acl_access', 'acl_default', 'acl_extended', 'acl_nfs4'):
                 v = fix_bytes_value(d, k)
                 v = fix_bytes_value(d, k)
-            # TODO: xattrs
+            if k == 'xattrs':
+                if not isinstance(v, StableDict):
+                    v = StableDict(v)
+                # TODO: xattrs key/value types
             self._dict[k] = v
             self._dict[k] = v