|
4 | 4 | import os |
5 | 5 | import re |
6 | 6 | from concurrent.futures import ThreadPoolExecutor |
7 | | -from typing import List |
| 7 | +from typing import List, Literal |
8 | 8 |
|
9 | 9 | import cv2 |
10 | 10 | import numpy as np |
@@ -902,6 +902,58 @@ def create_image_task( |
902 | 902 |
|
903 | 903 | return self.api.post_request(endpoint, payload=payload) |
904 | 904 |
|
| 905 | + def create_integrated_image_task( |
| 906 | + self, |
| 907 | + project: str, |
| 908 | + storage_type: Literal["gcp"], |
| 909 | + file_path: str, |
| 910 | + status: str = None, |
| 911 | + external_status: str = None, |
| 912 | + annotations: list = None, |
| 913 | + tags: list = None, |
| 914 | + **kwargs, |
| 915 | + ) -> str: |
| 916 | + """ |
| 917 | + Create a single integrated image task. |
| 918 | +
|
| 919 | + project is slug of your project (Required). |
| 920 | + storage type is the type of storage where your file resides (Required). e.g.) gcp |
| 921 | + file_path is a path to data in your setting storage bucket. Supported extensions are png, jpg, jpeg (Required). |
| 922 | + status can be 'registered', 'completed', 'skipped', 'reviewed', 'sent_back', |
| 923 | + 'approved', 'declined' (Optional). |
| 924 | + external_status can be 'registered', 'completed', 'skipped', 'reviewed', |
| 925 | + 'sent_back', 'approved', 'declined', 'customer_declined' (Optional). |
| 926 | + annotations is a list of annotation to be set in advance (Optional). |
| 927 | + tags is a list of tag to be set in advance (Optional). |
| 928 | + assignee is slug of assigned user (Optional). |
| 929 | + reviewer is slug of review user (Optional). |
| 930 | + approver is slug of approve user (Optional). |
| 931 | + external_assignee is slug of external assigned user (Optional). |
| 932 | + external_reviewer is slug of external review user (Optional). |
| 933 | + external_approver is slug of external approve user (Optional). |
| 934 | + """ |
| 935 | + endpoint = "tasks/integrated-image" |
| 936 | + if not utils.is_image_supported_ext(file_path): |
| 937 | + raise FastLabelInvalidException( |
| 938 | + "Supported extensions are png, jpg, jpeg.", 422 |
| 939 | + ) |
| 940 | + |
| 941 | + payload = {"project": project, "filePath": file_path, "storageType": storage_type} |
| 942 | + if status: |
| 943 | + payload["status"] = status |
| 944 | + if external_status: |
| 945 | + payload["externalStatus"] = external_status |
| 946 | + if annotations: |
| 947 | + for annotation in annotations: |
| 948 | + annotation["content"] = file_path |
| 949 | + payload["annotations"] = annotations |
| 950 | + if tags: |
| 951 | + payload["tags"] = tags |
| 952 | + |
| 953 | + self.__fill_assign_users(payload, **kwargs) |
| 954 | + |
| 955 | + return self.api.post_request(endpoint, payload=payload) |
| 956 | + |
905 | 957 | def create_image_classification_task( |
906 | 958 | self, |
907 | 959 | project: str, |
|
0 commit comments