Skip to content

Commit 3f5ccd7

Browse files
Fix init bug - this was preventing to_tensorflow() from working
init_file_ids asumes the id was already set but for now refresh_from_dict pattern means the id is set after init so refactor `init_files()` and call it after... We will need to work on this more Luckily at least now it's refactored to `convert_json_to_sdk_object()` so we have it only in one place
1 parent 2b4dbdd commit 3f5ccd7

File tree

2 files changed

+26
-31
lines changed

2 files changed

+26
-31
lines changed

sdk/diffgram/core/core.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def __init__(
2828
debug = False,
2929
staging = False,
3030
host = None,
31-
set_default_directory = True,
31+
init_default_directory = True,
3232
refresh_local_label_dict = True
3333

3434
):
@@ -71,7 +71,7 @@ def __init__(
7171
self.name_to_file_id = None
7272

7373

74-
if set_default_directory is True:
74+
if init_default_directory is True:
7575
self.set_default_directory()
7676
print("Default directory set:", self.directory_id)
7777

@@ -83,7 +83,7 @@ def __init__(
8383

8484
self.label_schema_list = self.get_label_schema_list()
8585

86-
self.directory_list = []
86+
self.directory_list = None
8787

8888

8989
def get_member_list(self):
@@ -302,14 +302,14 @@ def set_default_directory(self,
302302
-> Sets the headers of self.session
303303
304304
"""
305-
306305
if directory_id:
307306
self.directory_id = directory_id
308307
if directory:
309308
self.directory_id = directory.id
310309
self.default_directory = directory
311-
312-
self.directory_list = self.directory.get_directory_list()
310+
311+
if not self.directory_list:
312+
self.directory_list = self.directory.get_directory_list()
313313

314314
self.session.headers.update(
315315
{'directory_id': str(self.directory_id)})

sdk/diffgram/core/directory.py

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ def __init__(self,
1818
self.file_list_metadata = {}
1919
self.nickname = None
2020
if file_id_list_sliced is None and init_file_ids:
21-
self.file_id_list = self.all_file_ids()
21+
self.init_files()
2222
elif not init_file_ids:
2323
self.file_id_list = []
2424
elif file_id_list_sliced is not None:
2525
self.file_id_list = file_id_list_sliced
2626
super(Directory, self).__init__(self.client, self.file_id_list, validate_ids)
2727

2828

29+
30+
def init_files(self):
31+
self.file_id_list = self.all_file_ids()
32+
2933
def get_directory_list(self):
3034
"""
3135
Get a list of available directories for a project
@@ -68,16 +72,15 @@ def convert_json_to_sdk_object(self, directory_list_json):
6872
init_file_ids = False,
6973
validate_ids = False
7074
)
71-
refresh_from_dict(new_directory, directory_json)
72-
directory_list.append(new_directory)
75+
refresh_from_dict(new_directory, directory_json)
7376

74-
return directory_list
77+
# note timing issue, this needs to happen after id is refreshed
78+
new_directory.init_files()
7579

80+
directory_list.append(new_directory)
7681

77-
def set_default():
82+
return directory_list
7883

79-
if not self.client.directory_list:
80-
self.client.directory_list = self.get_directory_list()
8184

8285

8386
def all_files(self):
@@ -89,7 +92,10 @@ def all_files(self):
8992
page_num = 1
9093
result = []
9194
while page_num is not None:
92-
diffgram_files = self.list_files(limit = 1000, page_num = page_num, file_view_mode = 'base')
95+
diffgram_files = self.list_files(
96+
limit = 1000,
97+
page_num = page_num,
98+
file_view_mode = 'base')
9399
page_num = self.file_list_metadata['next_page']
94100
result = result + diffgram_files
95101
return result
@@ -98,7 +104,12 @@ def all_file_ids(self, query = None):
98104
page_num = 1
99105
result = []
100106

101-
diffgram_ids = self.list_files(limit = 5000, page_num = page_num, file_view_mode = 'ids_only', query = query)
107+
diffgram_ids = self.list_files(
108+
limit = 5000,
109+
page_num = page_num,
110+
file_view_mode = 'ids_only',
111+
query = query)
112+
102113
if diffgram_ids is False:
103114
raise Exception('Error Fetching Files: Please check you are providing a valid query.')
104115
result = result + diffgram_ids
@@ -223,22 +234,6 @@ def list_files(
223234
file_view_mode: str = 'annotation',
224235
query: str = None):
225236
"""
226-
Get a list of files in directory (from Diffgram service).
227-
228-
Assumes we are using the default directory.
229-
this can be changed ie by: project.set_directory_by_name(dir_name)
230-
231-
We don't have a strong Directory concept in the SDK yet
232-
So for now assume that we need to
233-
call project.set_directory_by_name(dir_name) first
234-
if we want to change the directory
235-
236-
237-
WIP Feb 3, 2020
238-
A lot of "hard coded" options here.
239-
Want to think a bit more about what we want to
240-
expose options here and what good contexts are.
241-
242237
"""
243238
if self.id:
244239
logging.info("Using Dataset ID " + str(self.id))

0 commit comments

Comments
 (0)