Skip to content

Commit b91cbf1

Browse files
authored
Algo-XXX proide a getDir() path for Data Directories (#110)
* initial functional getDir commit * removed debug print statement * added basic test * updated syntax
1 parent 3c53068 commit b91cbf1

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

Algorithmia/datadirectory.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,15 @@ def dir(self, name):
7373
def dirs(self):
7474
return self._get_directory_iterator(DataObjectType.directory)
7575

76+
def getDir(self):
77+
directory = tempfile.mkdtemp()
78+
for file in self.files():
79+
correct_filename = file.getName()
80+
correct_file_path = os.path.join(directory, correct_filename)
81+
local_file = file.getFile(as_path=True)
82+
os.rename(local_file, correct_file_path)
83+
return directory
84+
7685
def list(self):
7786
return self._get_directory_iterator()
7887

Algorithmia/datafile.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def get(self):
3333
return self.client.getHelper(self.url)
3434

3535
# Get file from the data api
36-
def getFile(self):
36+
def getFile(self, as_path=False):
3737
exists, error = self.existsWithError()
3838
if not exists:
3939
raise DataApiError('unable to get file {} - {}'.format(self.path, error))
@@ -45,7 +45,10 @@ def getFile(self):
4545
break
4646
f.write(block)
4747
f.flush()
48-
return open(f.name)
48+
if as_path:
49+
return f.name
50+
else:
51+
return open(f.name)
4952

5053
def getName(self):
5154
_, name = getParentAndBase(self.path)

Test/datadirectory_test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,33 @@ def list_files_small(self, collectionName):
9393

9494
dd.delete(True)
9595

96+
def get_files(self, collectionName):
97+
dd = self.client.dir(collectionName)
98+
if dd.exists():
99+
dd.delete(True)
100+
101+
dd.create()
102+
103+
f1 = dd.file('a')
104+
f1.put('data')
105+
106+
f2 = dd.file('b')
107+
f2.put('data')
108+
109+
local_path = dd.getDir()
110+
self.assertTrue(os.path.isfile(os.path.join(local_path, "a")))
111+
self.assertTrue(os.path.isfile(os.path.join(local_path, "b")))
112+
113+
96114
def test_list_files_small_without_trailing_slash(self):
97115
self.list_files_small('data://.my/test_list_files_small')
98116

99117
def test_list_files_small_with_trailing_slash(self):
100118
self.list_files_small('data://.my/test_list_files_small/')
101119

120+
def test_get_directory(self):
121+
self.get_files("data://.my/test_list_files_small")
122+
102123
def test_list_folders(self):
103124
dd = DataDirectory(self.client, 'data://.my/')
104125

0 commit comments

Comments
 (0)