diff options
Diffstat (limited to 'src/ee/ds')
-rw-r--r-- | src/ee/ds/__init__.py | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/ee/ds/__init__.py b/src/ee/ds/__init__.py index f71a7c6..14bbb91 100644 --- a/src/ee/ds/__init__.py +++ b/src/ee/ds/__init__.py @@ -144,7 +144,7 @@ class DataSet(object): self._assert_not_frozen() if not create: - raise Exception("No such type: {}:{}".format(object_type, key)) + raise Exception("No such object: {}:{}".format(object_type, key)) o = Object(self, ot, key) objects[key] = o @@ -179,11 +179,15 @@ class DataSet(object): def get_or_create_object(self, object_type: str, key: str) -> Object: return self._check_object(object_type, key, True) - def create_object(self, object_type: str, key: str) -> Object: + def create_object(self, object_type: str, key: str, replace=False) -> Object: self._assert_not_frozen() if self.has_object(object_type, key): - raise Exception("Object already exist: {}:{}".format(object_type, key)) + if not replace: + raise Exception("Object already exist: {}:{}".format(object_type, key)) + + ot, objects = self._check_object_type(object_type, False) + del self._objects_by_type[ot][key] return self._check_object(object_type, key, True) @@ -410,11 +414,14 @@ class LazyRwDataSet(object): cookie = self._dsm.cookie_for_ds(self._name) if cookie.exists(): - if not self._clean: - raise IOError("DataSet already exists: {}, cookie={}".format(self._name, cookie)) - self._dsm.remove(self._name) + if self._clean: + self._dsm.remove(self._name) + ds = DataSet() + else: + ds = self._dsm.load(self._name) + else: + ds = DataSet() - ds = DataSet() self._ds = ds return ds |