Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit fa2a4fd

Browse files
authoredJul 20, 2022
Merge pull request #37 from diffgram/tags
Tags
2 parents cea95b2 + d19b9a4 commit fa2a4fd

File tree

4 files changed

+37
-73
lines changed

4 files changed

+37
-73
lines changed
 

‎sdk/diffgram/core/core.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,23 @@ def set_default_directory(self,
335335
self.session.headers.update(
336336
{'directory_id': str(self.directory_id)})
337337

338+
339+
340+
def new_schema(self,
341+
name: str):
342+
343+
endpoint = "/api/v1/project/" + self.project_string_id + \
344+
"/labels-schema/new"
345+
346+
request_json_body = {'name': name}
347+
348+
response = self.session.post(self.host + endpoint,
349+
json = request_json_body)
350+
351+
self.handle_errors(response)
352+
return response.json()
353+
354+
338355
# TODO review not using this pattern anymore
339356

340357
setattr(Project, "get_label_file_dict", get_label_file_dict)

‎sdk/diffgram/core/directory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ def convert_json_to_sdk_object(self, directory_list_json):
7070
)
7171
refresh_from_dict(new_directory, directory_json)
7272

73+
new_directory.id = new_directory.directory_id
74+
7375
# note timing issue, this needs to happen after id is refreshed
7476
new_directory.init_files()
7577
new_directory.start_iterator(

‎sdk/diffgram/file/file_constructor.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def file_from_response(
3939
def from_local(
4040
self,
4141
path: str,
42+
directory_id: int = None,
4243
instance_list: list = None,
4344
frame_packet_map: dict = None,
4445
assume_new_instances_machine_made: bool = True,
@@ -54,35 +55,35 @@ def from_local(
5455

5556
files = {'file': (os.path.basename(path), open(path, 'rb'), 'application/octet-stream')}
5657

57-
headers = {
58-
'immediate_mode': 'True',
59-
}
58+
json_payload = {}
59+
60+
if directory_id is None:
61+
directory_id = self.client.directory_id
6062

61-
payload = {}
63+
json_payload['directory_id'] = directory_id
6264

6365
if instance_list:
64-
payload['instance_list'] = self.__validate_and_format_instance_list(
66+
json_payload['instance_list'] = self.__validate_and_format_instance_list(
6567
instance_list = instance_list,
6668
assume_new_instances_machine_made = assume_new_instances_machine_made,
6769
convert_names_to_label_files = convert_names_to_label_files
6870
)
6971

7072
if frame_packet_map:
71-
payload['frame_packet_map'] = self.__validate_and_format_frame_packet_map(
73+
json_payload['frame_packet_map'] = self.__validate_and_format_frame_packet_map(
7274
frame_packet_map = frame_packet_map,
7375
assume_new_instances_machine_made = assume_new_instances_machine_made,
7476
convert_names_to_label_files = convert_names_to_label_files
7577
)
7678

77-
files['json'] = (None, json.dumps(payload), 'application/json')
79+
files['json'] = (None, json.dumps(json_payload), 'application/json')
7880

7981
endpoint = "/api/walrus/v1/project/" + self.client.project_string_id \
8082
+ "/input/from_local"
8183

8284
response = self.client.session.post(
8385
self.client.host + endpoint,
84-
files = files,
85-
headers = headers)
86+
files = files)
8687

8788
self.client.handle_errors(response)
8889

‎sdk/diffgram/job/job.py

Lines changed: 8 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,11 @@ def serialize(self):
131131
'review_by_human_freqeuncy': self.review_by_human_freqeuncy,
132132
'label_mode': self.label_mode,
133133
'passes_per_file': self.passes_per_file,
134-
'file_count': self.file_count,
135134
'attached_directories_dict': self.attached_directories_dict,
136135
'launch_datetime': self.launch_datetime,
137136
'label_file_list': label_file_list,
138-
'member_list_ids': self.member_list_ids
137+
'member_list_ids': self.member_list_ids,
138+
'tag_list': self.tag_list
139139
}
140140

141141
def new(self,
@@ -150,15 +150,13 @@ def new(self,
150150
review_by_human_freqeuncy=None,
151151
label_mode=None,
152152
passes_per_file=None,
153-
file_list=None,
154153
guide=None,
155154
launch_datetime=None,
156-
file_count=None,
157-
label_file_list=None,
158155
sync_directories=[],
159156
single_copy_directories=[],
160157
members_list_ids = [],
161158
auto_launch=True,
159+
tag_list = [],
162160
):
163161
"""
164162
@@ -178,6 +176,10 @@ def new(self,
178176
raise ValueError('Please provide at least one member_id in members_list_ids.')
179177
job = Job(client=self.client)
180178

179+
if label_schema_id is None:
180+
if self.client.label_schema_list:
181+
label_schema_id = self.client.label_schema_list[0].get('id')
182+
181183
job.name = name
182184
job.instance_type = instance_type
183185
job.share = share
@@ -189,10 +191,10 @@ def new(self,
189191
job.label_mode = label_mode
190192
job.passes_per_file = passes_per_file
191193
job.launch_datetime = launch_datetime
192-
job.label_file_list = label_file_list
193194
job.label_schema_id = label_schema_id
194195
job.attached_directories = []
195196
job.member_list_ids = members_list_ids
197+
job.tag_list = tag_list
196198

197199
if len(sync_directories) == 0 and len(single_copy_directories) == 0:
198200
raise ValueError(
@@ -206,12 +208,6 @@ def new(self,
206208

207209
job.attached_directories_dict = {'attached_directories_list': self.attached_directories}
208210

209-
if not file_count:
210-
if file_list:
211-
file_count = len(file_list)
212-
213-
job.file_count = file_count
214-
215211
endpoint = "/api/v1/project/{}/job/new".format(self.client.project_string_id)
216212

217213
response = self.client.session.post(
@@ -226,12 +222,6 @@ def new(self,
226222
# TODO review better way to update fields
227223
job.id = data["job"]["id"]
228224

229-
if file_list:
230-
# Careful we want to call job here not self
231-
# Since job will have a different id
232-
# self is constructor
233-
job.file_update(file_list=file_list)
234-
235225
if guide:
236226
job.guide_update(guide=guide)
237227

@@ -248,53 +238,7 @@ def new(self,
248238

249239
return job
250240

251-
def file_update(
252-
self,
253-
file_list,
254-
add_or_remove="add"
255-
):
256-
"""
257-
258-
Arguments
259-
self,
260-
file_list, list of files,
261-
add_or_remove, either "add" or "remove"
262-
263-
Expects
264-
265-
Returns
266-
267-
Assumptions
268-
269-
The API will use the project default if None is supplied
270-
but if we are not in the default we must supply valid
271-
directory_id
272-
273-
Otherwise when it checks permissions it will error
274-
ie {"file_link":"File link not in incoming directory"}
275-
276-
"""
277-
278-
endpoint = "/api/v1/project/" + self.client.project_string_id + \
279-
"/job/file/attach"
280-
281-
file_list = [file.serialize() for file in file_list]
282-
283-
update_dict = {
284-
'directory_id': self.client.directory_id,
285-
'file_list_selected': file_list,
286-
'job_id': self.id,
287-
'add_or_remove': add_or_remove}
288-
289-
response = self.client.session.post(self.client.host + endpoint,
290-
json=update_dict)
291-
292-
self.client.handle_errors(response)
293-
294-
data = response.json()
295241

296-
if data["log"]["success"] == True:
297-
print("File update success")
298242

299243
def launch(
300244
self

0 commit comments

Comments
 (0)
Please sign in to comment.