Skip to content

Commit 225d6d4

Browse files
committed
Merge remote-tracking branch 'origin/agis/expose-overwite-save-profile' into agis/upd-2.30.0-0.36.0
2 parents 53cfc26 + 3012003 commit 225d6d4

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

tiledb/libtiledb/profile.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void init_profile(py::module& m) {
3939

4040
.def("_get_param", &tiledb::Profile::get_param, py::arg("param"))
4141

42-
.def("_save", &tiledb::Profile::save)
42+
.def("_save", &tiledb::Profile::save, py::arg("overwrite"))
4343

4444
.def_static(
4545
"_load",

tiledb/profile.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,13 @@ def get(self, param: str, raise_keyerror: bool = True):
7474

7575
return val
7676

77-
def save(self):
77+
def save(self, overwrite: bool = False):
7878
"""Saves the profile to storage.
7979
80+
:param overwrite: Whether to overwrite an existing profile. Defaults to False.
8081
:raises tiledb.TileDBError:
8182
"""
82-
self._save()
83+
self._save(overwrite)
8384

8485
@classmethod
8586
def load(cls, name: str = None, dir: str = None) -> "Profile":

tiledb/tests/test_profile.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,37 @@ def test_profile_save_load_remove(self):
101101
# remove the profile
102102
tiledb.Profile.remove("profile2_name", self.path("profile2_dir"))
103103

104+
def test_profile_save_overwrite(self):
105+
token1 = "testing_the_token_1"
106+
token2 = "testing_the_token_2"
107+
profile_name = "overwrite_test_profile"
108+
profile_dir = self.path("overwrite_test_dir")
109+
110+
# Create and save a profile with token1
111+
profile1 = tiledb.Profile(profile_name, profile_dir)
112+
profile1["rest.token"] = token1
113+
profile1.save()
114+
115+
# Load it back to verify it was saved
116+
loaded_profile1 = tiledb.Profile.load(profile_name, profile_dir)
117+
assert loaded_profile1["rest.token"] == token1
118+
119+
# Create a new profile with the same name and try to save without overwrite
120+
profile2 = tiledb.Profile(profile_name, profile_dir)
121+
profile2["rest.token"] = token2
122+
with pytest.raises(tiledb.TileDBError):
123+
profile2.save(overwrite=False)
124+
125+
# Now save with overwrite=True
126+
profile2.save(overwrite=True)
127+
128+
# Load it back to verify it was overwritten
129+
loaded_profile2 = tiledb.Profile.load(profile_name, profile_dir)
130+
assert loaded_profile2["rest.token"] == token2
131+
132+
# Clean up
133+
tiledb.Profile.remove(profile_name, profile_dir)
134+
104135

105136
class ConfigWithProfileTest(ProfileTestCase):
106137
def test_config_with_profile(self):

0 commit comments

Comments
 (0)