aboutsummaryrefslogtreecommitdiff
path: root/src/ee/ds/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/ds/__init__.py')
-rw-r--r--src/ee/ds/__init__.py21
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