|
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 |
@@ -830,6 +830,58 @@ def create_image_task( |
830 | 830 |
|
831 | 831 | return self.api.post_request(endpoint, payload=payload) |
832 | 832 |
|
| 833 | + def create_integrated_image_task( |
| 834 | + self, |
| 835 | + project: str, |
| 836 | + storage_type: Literal["gcp"], |
| 837 | + file_path: str, |
| 838 | + status: str = None, |
| 839 | + external_status: str = None, |
| 840 | + annotations: list = None, |
| 841 | + tags: list = None, |
| 842 | + **kwargs, |
| 843 | + ) -> str: |
| 844 | + """ |
| 845 | + Create a single integrated image task. |
| 846 | +
|
| 847 | + project is slug of your project (Required). |
| 848 | + storage type is the type of storage where your file resides (Required). e.g.) gcp |
| 849 | + file_path is a path to data in your setting storage bucket. Supported extensions are png, jpg, jpeg (Required). |
| 850 | + status can be 'registered', 'completed', 'skipped', 'reviewed', 'sent_back', |
| 851 | + 'approved', 'declined' (Optional). |
| 852 | + external_status can be 'registered', 'completed', 'skipped', 'reviewed', |
| 853 | + 'sent_back', 'approved', 'declined', 'customer_declined' (Optional). |
| 854 | + annotations is a list of annotation to be set in advance (Optional). |
| 855 | + tags is a list of tag to be set in advance (Optional). |
| 856 | + assignee is slug of assigned user (Optional). |
| 857 | + reviewer is slug of review user (Optional). |
| 858 | + approver is slug of approve user (Optional). |
| 859 | + external_assignee is slug of external assigned user (Optional). |
| 860 | + external_reviewer is slug of external review user (Optional). |
| 861 | + external_approver is slug of external approve user (Optional). |
| 862 | + """ |
| 863 | + endpoint = "tasks/integrated-image" |
| 864 | + if not utils.is_image_supported_ext(file_path): |
| 865 | + raise FastLabelInvalidException( |
| 866 | + "Supported extensions are png, jpg, jpeg.", 422 |
| 867 | + ) |
| 868 | + |
| 869 | + payload = {"project": project, "filePath": file_path, "storageType": storage_type} |
| 870 | + if status: |
| 871 | + payload["status"] = status |
| 872 | + if external_status: |
| 873 | + payload["externalStatus"] = external_status |
| 874 | + if annotations: |
| 875 | + for annotation in annotations: |
| 876 | + annotation["content"] = file_path |
| 877 | + payload["annotations"] = annotations |
| 878 | + if tags: |
| 879 | + payload["tags"] = tags |
| 880 | + |
| 881 | + self.__fill_assign_users(payload, **kwargs) |
| 882 | + |
| 883 | + return self.api.post_request(endpoint, payload=payload) |
| 884 | + |
833 | 885 | def create_image_classification_task( |
834 | 886 | self, |
835 | 887 | project: str, |
|
0 commit comments