superb-ai-onprem 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of superb-ai-onprem might be problematic. Click here for more details.

Files changed (72) hide show
  1. spb_onprem/__init__.py +74 -0
  2. spb_onprem/_version.py +21 -0
  3. spb_onprem/base_model.py +6 -0
  4. spb_onprem/base_service.py +164 -0
  5. spb_onprem/base_types.py +11 -0
  6. spb_onprem/contents/__init__.py +6 -0
  7. spb_onprem/contents/entities/__init__.py +8 -0
  8. spb_onprem/contents/entities/base_content.py +13 -0
  9. spb_onprem/contents/entities/content.py +17 -0
  10. spb_onprem/contents/queries.py +39 -0
  11. spb_onprem/contents/service.py +132 -0
  12. spb_onprem/data/__init__.py +6 -0
  13. spb_onprem/data/entities/__init__.py +15 -0
  14. spb_onprem/data/entities/annotation.py +25 -0
  15. spb_onprem/data/entities/data.py +28 -0
  16. spb_onprem/data/entities/data_meta.py +31 -0
  17. spb_onprem/data/entities/prediction.py +13 -0
  18. spb_onprem/data/entities/scene.py +14 -0
  19. spb_onprem/data/enums/__init__.py +10 -0
  20. spb_onprem/data/enums/data_meta_type.py +15 -0
  21. spb_onprem/data/enums/data_type.py +9 -0
  22. spb_onprem/data/enums/scene_type.py +10 -0
  23. spb_onprem/data/params/__init__.py +59 -0
  24. spb_onprem/data/params/create_data.py +68 -0
  25. spb_onprem/data/params/data.py +24 -0
  26. spb_onprem/data/params/data_list.py +96 -0
  27. spb_onprem/data/params/delete_annotation_version.py +20 -0
  28. spb_onprem/data/params/delete_data.py +17 -0
  29. spb_onprem/data/params/delete_prediction.py +22 -0
  30. spb_onprem/data/params/delete_scene.py +22 -0
  31. spb_onprem/data/params/insert_annotation_version.py +29 -0
  32. spb_onprem/data/params/insert_data_to_slice.py +22 -0
  33. spb_onprem/data/params/insert_prediction.py +25 -0
  34. spb_onprem/data/params/insert_scene.py +32 -0
  35. spb_onprem/data/params/remove_data_from_slice.py +22 -0
  36. spb_onprem/data/params/remove_data_meta.py +64 -0
  37. spb_onprem/data/params/update_annotation.py +30 -0
  38. spb_onprem/data/params/update_data.py +72 -0
  39. spb_onprem/data/params/update_scene.py +37 -0
  40. spb_onprem/data/params/upsert_data_meta.py +48 -0
  41. spb_onprem/data/queries.py +360 -0
  42. spb_onprem/data/service.py +524 -0
  43. spb_onprem/datasets/__init__.py +6 -0
  44. spb_onprem/datasets/entities/__init__.py +6 -0
  45. spb_onprem/datasets/entities/dataset.py +14 -0
  46. spb_onprem/datasets/params/__init__.py +11 -0
  47. spb_onprem/datasets/params/create_dataset.py +32 -0
  48. spb_onprem/datasets/params/dataset.py +26 -0
  49. spb_onprem/datasets/params/datasets.py +53 -0
  50. spb_onprem/datasets/params/update_dataset.py +39 -0
  51. spb_onprem/datasets/queries.py +79 -0
  52. spb_onprem/datasets/service.py +132 -0
  53. spb_onprem/exceptions.py +40 -0
  54. spb_onprem/slices/__init__.py +6 -0
  55. spb_onprem/slices/entities/__init__.py +5 -0
  56. spb_onprem/slices/entities/slice.py +17 -0
  57. spb_onprem/slices/params/__init__.py +23 -0
  58. spb_onprem/slices/params/create_slice.py +36 -0
  59. spb_onprem/slices/params/delete_slice.py +0 -0
  60. spb_onprem/slices/params/slice.py +42 -0
  61. spb_onprem/slices/params/slices.py +62 -0
  62. spb_onprem/slices/params/update_slice.py +45 -0
  63. spb_onprem/slices/queries.py +121 -0
  64. spb_onprem/slices/service.py +173 -0
  65. spb_onprem/users/__init__.py +0 -0
  66. spb_onprem/users/entities/__init__.py +5 -0
  67. spb_onprem/users/entities/auth.py +86 -0
  68. superb_ai_onprem-0.1.0.dist-info/METADATA +246 -0
  69. superb_ai_onprem-0.1.0.dist-info/RECORD +72 -0
  70. superb_ai_onprem-0.1.0.dist-info/WHEEL +5 -0
  71. superb_ai_onprem-0.1.0.dist-info/licenses/LICENSE +21 -0
  72. superb_ai_onprem-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,39 @@
1
+ from typing import Union
2
+
3
+ from spb_onprem.base_types import Undefined, UndefinedType
4
+ from spb_onprem.exceptions import BadParameterError
5
+
6
+
7
+ def update_dataset_params(
8
+ dataset_id: str,
9
+ name: Union[
10
+ str,
11
+ UndefinedType,
12
+ ] = Undefined,
13
+ description: Union[
14
+ str,
15
+ UndefinedType,
16
+ ] = Undefined,
17
+ ):
18
+ """Update parameters for dataset modification.
19
+
20
+ Args:
21
+ id: ID of the dataset to update
22
+ name: Optional new name for the dataset
23
+ description: Optional new description for the dataset
24
+
25
+ Returns:
26
+ dict: Parameters for dataset update
27
+ """
28
+ if dataset_id is None:
29
+ raise BadParameterError("Dataset ID is required")
30
+
31
+ params = {
32
+ "id": dataset_id,
33
+ }
34
+
35
+ if name is not Undefined:
36
+ params["name"] = name
37
+ if description is not Undefined:
38
+ params["description"] = description
39
+ return params
@@ -0,0 +1,79 @@
1
+ from spb_onprem.datasets.params import (
2
+ dataset_params,
3
+ datasets_params,
4
+ create_dataset_params,
5
+ update_dataset_params,
6
+ )
7
+
8
+ class Schemas:
9
+ DATASET = '''
10
+ id
11
+ name
12
+ description
13
+ createdAt
14
+ createdBy
15
+ updatedAt
16
+ updatedBy
17
+ '''
18
+
19
+
20
+ class Queries():
21
+ DATASET = {
22
+ "name": "dataset",
23
+ "query": f'''
24
+ query Dataset(
25
+ $name: String,
26
+ $datasetId: ID
27
+ ) {{
28
+ dataset(
29
+ name: $name,
30
+ datasetId: $datasetId
31
+ ) {{
32
+ {Schemas.DATASET}
33
+ }}
34
+ }}
35
+ ''',
36
+ "variables": dataset_params,
37
+ }
38
+
39
+ DATASETS = {
40
+ "name": "datasets",
41
+ "query": f'''
42
+ query Datasets(
43
+ $name: String,
44
+ $datasetId: ID
45
+ ) {{
46
+ datasets(
47
+ name: $name,
48
+ id: $datasetId
49
+ ) {{
50
+ {Schemas.DATASET}
51
+ }}
52
+ }}
53
+ ''',
54
+ "variables": datasets_params,
55
+ }
56
+
57
+ CREATE_DATASET = {
58
+ "name": "createDataset",
59
+ "query": f'''
60
+ mutation CreateDataset($name: String!, $description: String) {{
61
+ createDataset(name: $name, description: $description) {{
62
+ {Schemas.DATASET}
63
+ }}
64
+ }}
65
+ ''',
66
+ "variables": create_dataset_params,
67
+ }
68
+
69
+ UPDATE_DATASET = {
70
+ "name": "updateDataset",
71
+ "query": f'''
72
+ mutation UpdateDataset($updateDatasetId: ID!, $name: String, $description: String) {{
73
+ updateDataset(id: $updateDatasetId, name: $name, description: $description) {{
74
+ {Schemas.DATASET}
75
+ }}
76
+ }}
77
+ ''',
78
+ "variables": update_dataset_params,
79
+ }
@@ -0,0 +1,132 @@
1
+ from typing import Optional, Union
2
+ from spb_onprem.base_service import BaseService
3
+ from spb_onprem.exceptions import BadParameterError
4
+ from spb_onprem.base_types import Undefined, UndefinedType
5
+ from .queries import Queries
6
+ from .entities import Dataset
7
+ from .params.datasets import DatasetsFilter
8
+
9
+
10
+ class DatasetService(BaseService):
11
+ """
12
+ Service class for handling dataset-related operations.
13
+ """
14
+
15
+ def get_datasets(
16
+ self,
17
+ datasets_filter: Optional[DatasetsFilter] = None,
18
+ cursor: Optional[str] = None,
19
+ length: Optional[int] = 10
20
+ ):
21
+ """
22
+ Get a list of datasets based on the provided filter and pagination parameters.
23
+
24
+ Args:
25
+ datasets_filter (Union[DatasetsFilter, UndefinedType]): Filter criteria for datasets
26
+ cursor (Optional[str]): Cursor for pagination
27
+ length (Optional[int]): Number of items per page (default: 10)
28
+
29
+ Returns:
30
+ List[Dataset]: A list of Dataset objects
31
+ """
32
+ if length > 50:
33
+ raise BadParameterError("The maximum length is 50.")
34
+
35
+ response = self.request_gql(
36
+ Queries.DATASETS,
37
+ Queries.DATASETS["variables"](
38
+ datasets_filter=datasets_filter,
39
+ cursor=cursor,
40
+ length=length
41
+ )
42
+ )
43
+ datasets = [Dataset.model_validate(dataset) for dataset in response["datasets"]]
44
+ return (
45
+ datasets,
46
+ response.get("next", None),
47
+ response.get("totalCount", False)
48
+ )
49
+
50
+ def get_dataset(
51
+ self,
52
+ dataset_id: Optional[str] = None,
53
+ name: Optional[str] = None,
54
+ ):
55
+ """
56
+ Retrieve a dataset by its ID or name.
57
+
58
+ Args:
59
+ dataset_id (Optional[str]): The ID of the dataset to retrieve.
60
+ name (Optional[str]): The name of the dataset to retrieve.
61
+
62
+ Returns:
63
+ Dataset: The retrieved dataset object.
64
+ """
65
+ response = self.request_gql(
66
+ Queries.DATASET,
67
+ Queries.DATASET["variables"](
68
+ dataset_id=dataset_id,
69
+ name=name
70
+ ),
71
+ )
72
+ return Dataset.model_validate(response)
73
+
74
+ def create_dataset(
75
+ self,
76
+ name: str,
77
+ description: Union[
78
+ str,
79
+ UndefinedType,
80
+ ] = Undefined,
81
+ ):
82
+ """
83
+ Create a new dataset.
84
+
85
+ Args:
86
+ name (str): The name of the dataset to create.
87
+ description (Optional[str]): The description of the dataset to create.
88
+
89
+ Returns:
90
+ Dataset: The created dataset object.
91
+ """
92
+ response = self.request_gql(
93
+ Queries.CREATE_DATASET,
94
+ Queries.CREATE_DATASET["variables"](
95
+ name=name,
96
+ description=description,
97
+ ),
98
+ )
99
+ return Dataset.model_validate(response)
100
+
101
+ def update_dataset(
102
+ self,
103
+ dataset_id: str,
104
+ name: Union[
105
+ str,
106
+ UndefinedType,
107
+ ] = Undefined,
108
+ description: Union[
109
+ str,
110
+ UndefinedType,
111
+ ] = Undefined,
112
+ ):
113
+ """
114
+ Update a dataset.
115
+
116
+ Args:
117
+ dataset_id (str): The ID of the dataset to update.
118
+ name (Optional[str]): The name of the dataset to update.
119
+ description (Optional[str]): The description of the dataset to update.
120
+
121
+ Returns:
122
+ Dataset: The updated dataset object.
123
+ """
124
+ response = self.request_gql(
125
+ Queries.UPDATE_DATASET,
126
+ Queries.UPDATE_DATASET["variables"](
127
+ dataset_id=dataset_id,
128
+ name=name,
129
+ description=description,
130
+ ),
131
+ )
132
+ return Dataset.model_validate(response)
@@ -0,0 +1,40 @@
1
+
2
+
3
+ class BaseSDKError(Exception):
4
+ pass
5
+
6
+
7
+ class SDKConfigError(BaseSDKError):
8
+ pass
9
+
10
+
11
+ class BadParameterError(BaseSDKError):
12
+ pass
13
+
14
+
15
+ class NotFoundError(BaseSDKError):
16
+ pass
17
+
18
+
19
+ class RequestError(BaseSDKError):
20
+ pass
21
+
22
+
23
+ class BadRequestError(RequestError):
24
+ pass
25
+
26
+
27
+ class BadRequestParameterError(BadRequestError):
28
+ pass
29
+
30
+
31
+ class ResponseError(BaseSDKError):
32
+ pass
33
+
34
+
35
+ class BadResponseError(ResponseError):
36
+ pass
37
+
38
+
39
+ class UnknownError(BaseSDKError):
40
+ pass
@@ -0,0 +1,6 @@
1
+ from .service import SliceService
2
+
3
+
4
+ __all__ = (
5
+ "SliceService",
6
+ )
@@ -0,0 +1,5 @@
1
+ from .slice import Slice
2
+
3
+ __all__ = (
4
+ "Slice",
5
+ )
@@ -0,0 +1,17 @@
1
+ from typing import Optional
2
+ from spb_onprem.base_model import CustomBaseModel, Field
3
+
4
+
5
+ class Slice(CustomBaseModel):
6
+ """
7
+ THE SLICE.
8
+ """
9
+ id: Optional[str] = None
10
+ dataset_id: Optional[str] = Field(None, alias="datasetId")
11
+ name: Optional[str] = None
12
+ description: Optional[str] = None
13
+ is_pinned: Optional[bool] = Field(None, alias="isPinned")
14
+ created_at: Optional[str] = Field(None, alias="createdAt")
15
+ created_by: Optional[str] = Field(None, alias="createdBy")
16
+ updated_at: Optional[str] = Field(None, alias="updatedAt")
17
+ updated_by: Optional[str] = Field(None, alias="updatedBy")
@@ -0,0 +1,23 @@
1
+ from .slices import (
2
+ SlicesFilter,
3
+ SlicesFilterOptions,
4
+ slices_params,
5
+ )
6
+ from .slice import (
7
+ slice_params,
8
+ )
9
+ from .create_slice import (
10
+ create_slice_params,
11
+ )
12
+ from .update_slice import (
13
+ update_slice_params,
14
+ )
15
+
16
+ __all__ = (
17
+ "SlicesFilter",
18
+ "SlicesFilterOptions",
19
+ "slices_params",
20
+ "slice_params",
21
+ "create_slice_params",
22
+ "update_slice_params",
23
+ )
@@ -0,0 +1,36 @@
1
+ from typing import Union
2
+
3
+ from spb_onprem.base_types import Undefined, UndefinedType
4
+ from spb_onprem.exceptions import BadParameterError
5
+
6
+ def create_slice_params(
7
+ dataset_id: str,
8
+ slice_name: str,
9
+ slice_description: Union[
10
+ UndefinedType,
11
+ str
12
+ ] = Undefined,
13
+ ):
14
+ """Create parameters for slice creation.
15
+
16
+ Args:
17
+ dataset_id (str): The ID of the dataset to create the slice for.
18
+ slice_name (str): The name of the slice to create.
19
+ slice_description (Optional[str]): The description of the slice to create.
20
+
21
+ Returns:
22
+ dict: Parameters for slice creation
23
+ """
24
+
25
+ if dataset_id is None:
26
+ raise BadParameterError("Dataset ID is required")
27
+ if slice_name is None:
28
+ raise BadParameterError("Slice name is required")
29
+
30
+ params = {
31
+ "dataset_id": dataset_id,
32
+ "name": slice_name,
33
+ }
34
+ if slice_description is not Undefined:
35
+ params["description"] = slice_description
36
+ return params
File without changes
@@ -0,0 +1,42 @@
1
+ from typing import Union
2
+
3
+ from spb_onprem.base_types import Undefined, UndefinedType
4
+ from spb_onprem.exceptions import BadParameterError
5
+
6
+ def slice_params(
7
+ dataset_id: str,
8
+ slice_id: Union[
9
+ UndefinedType,
10
+ str
11
+ ] = Undefined,
12
+ name: Union[
13
+ UndefinedType,
14
+ str
15
+ ] = Undefined,
16
+ ):
17
+ """Get parameters for slice lookup.
18
+
19
+ Args:
20
+ dataset_id (str): The ID of the dataset to lookup the slice for.
21
+ slice_id (Optional[str]): The ID of the slice to lookup.
22
+ name (Optional[str]): The name of the slice to lookup.
23
+
24
+ Returns:
25
+ dict: Parameters for slice lookup
26
+ """
27
+
28
+ if dataset_id is None:
29
+ raise BadParameterError("Dataset ID is required")
30
+
31
+ params = {
32
+ "dataset_id": dataset_id,
33
+ }
34
+
35
+ if slice_id is not Undefined:
36
+ params["id"] = slice_id
37
+ elif name is not Undefined:
38
+ params["name"] = name
39
+ else:
40
+ raise BadParameterError("Either slice_id or name must be provided.")
41
+
42
+ return params
@@ -0,0 +1,62 @@
1
+ from typing import (
2
+ Union,
3
+ Optional,
4
+ List
5
+ )
6
+ from spb_onprem.base_model import CustomBaseModel, Field
7
+ from spb_onprem.base_types import Undefined, UndefinedType
8
+ from spb_onprem.exceptions import BadParameterError
9
+
10
+ class SlicesFilterOptions(CustomBaseModel):
11
+ """Options for filtering slices.
12
+
13
+ Attributes:
14
+ name_contains: Filter slices by name containing this string
15
+ id_in: Filter slices by list of IDs
16
+ """
17
+ name_contains: Optional[str] = Field(None, alias="nameContains")
18
+ id_in: Optional[List[str]] = Field(None, alias="idIn")
19
+
20
+
21
+ class SlicesFilter(CustomBaseModel):
22
+ """Filter criteria for slice queries.
23
+
24
+ Attributes:
25
+ must_filter: Conditions that must be met
26
+ not_filter: Conditions that must not be met
27
+ """
28
+ must_filter: Optional[SlicesFilterOptions] = Field(None, alias="must")
29
+ not_filter: Optional[SlicesFilterOptions] = Field(None, alias="not")
30
+
31
+
32
+ def slices_params(
33
+ dataset_id: str,
34
+ slices_filter: Union[
35
+ UndefinedType,
36
+ SlicesFilter
37
+ ],
38
+ cursor: Optional[str] = None,
39
+ length: Optional[int] = 10
40
+ ):
41
+ """Get the params for the slices query.
42
+
43
+ Args:
44
+ dataset_id (str): the dataset id to get the slices for.
45
+ slices_filter (Union[ UndefinedType, SlicesFilter ]): the filter for the slices.
46
+ cursor (Optional[str], optional): The next cursor to get the next page of slices. Defaults to None.
47
+ length (Optional[int], optional): The number of slices to get. Defaults to 10.
48
+ """
49
+
50
+ if dataset_id is None:
51
+ raise BadParameterError("Dataset ID is required")
52
+ params = {
53
+ "dataset_id": dataset_id,
54
+ "cursor": cursor,
55
+ "length": length,
56
+ }
57
+ if slices_filter is not Undefined:
58
+ params["filter"] = slices_filter.model_dump(
59
+ by_alias=True, exclude_unset=True
60
+ )
61
+
62
+ return params
@@ -0,0 +1,45 @@
1
+ from typing import Union
2
+
3
+ from spb_onprem.base_types import UndefinedType, Undefined
4
+ from spb_onprem.exceptions import BadParameterError
5
+
6
+
7
+ def update_slice_params(
8
+ dataset_id: str,
9
+ slice_id: str,
10
+ slice_name: Union[
11
+ UndefinedType,
12
+ str
13
+ ] = Undefined,
14
+ slice_description: Union[
15
+ UndefinedType,
16
+ str
17
+ ] = Undefined
18
+ ):
19
+ """Update slice parameters.
20
+
21
+ Args:
22
+ dataset_id (str): The ID of the dataset to update the slice for.
23
+ slice_id (str): The ID of the slice to update.
24
+ slice_name (Optional[str]): The name of the slice to update.
25
+ slice_description (Optional[str]): The description of the slice to update.
26
+
27
+ Returns:
28
+ dict: Parameters for slice update
29
+ """
30
+ if dataset_id is None:
31
+ raise BadParameterError("Dataset ID is required")
32
+ if slice_id is None:
33
+ raise BadParameterError("Slice ID is required")
34
+
35
+ variables = {
36
+ "dataset_id": dataset_id,
37
+ "id": slice_id,
38
+ }
39
+
40
+ if slice_name is not Undefined:
41
+ variables["name"] = slice_name
42
+ if slice_description is not Undefined:
43
+ variables["description"] = slice_description
44
+
45
+ return variables
@@ -0,0 +1,121 @@
1
+ from spb_onprem.slices.params import (
2
+ slices_params,
3
+ slice_params,
4
+ create_slice_params,
5
+ update_slice_params,
6
+ )
7
+
8
+
9
+ class Schemas:
10
+ """Schemas for slices queries
11
+ """
12
+ SLICE_PAGE= '''
13
+ slices {
14
+ id
15
+ name
16
+ }
17
+ next
18
+ totalCount
19
+ '''
20
+
21
+ SLICE = '''
22
+ id
23
+ datasetId
24
+ name
25
+ description
26
+ isPinned
27
+ createdAt
28
+ createdBy
29
+ updatedAt
30
+ updatedBy
31
+ '''
32
+
33
+
34
+ class Queries:
35
+ '''
36
+ Queries for slices
37
+ '''
38
+
39
+ GET_SLICES = {
40
+ "name": "slices",
41
+ "query": f'''
42
+ query slices(
43
+ $dataset_id: String!,
44
+ $filter: SliceFilter,
45
+ $cursor: String,
46
+ $length: Int
47
+ ) {{
48
+ slices(
49
+ datasetId: $dataset_id,
50
+ filter: $filter,
51
+ cursor: $cursor,
52
+ length: $length
53
+ ) {{
54
+ {Schemas.SLICE_PAGE}
55
+ }}
56
+ }}
57
+ ''',
58
+ "variables": slices_params,
59
+ }
60
+
61
+ GET_SLICE = {
62
+ "name": "slice",
63
+ "query": f'''
64
+ query slice(
65
+ $dataset_id: String!,
66
+ $id: ID
67
+ $name: String
68
+ ) {{
69
+ slice(
70
+ datasetId: $dataset_id,
71
+ id: $id
72
+ name: $name
73
+ ) {{
74
+ {Schemas.SLICE}
75
+ }}
76
+ }}
77
+ ''',
78
+ "variables": slice_params,
79
+ }
80
+
81
+ CREATE_SLICE = {
82
+ "name": "createSlice",
83
+ "query": f'''
84
+ mutation createSlice(
85
+ $dataset_id: String!,
86
+ $name: String!,
87
+ $description: String
88
+ ) {{
89
+ createSlice(
90
+ datasetId: $dataset_id,
91
+ name: $name,
92
+ description: $description
93
+ ) {{
94
+ {Schemas.SLICE}
95
+ }}
96
+ }}
97
+ ''',
98
+ "variables": create_slice_params,
99
+ }
100
+
101
+ UPDATE_SLICE = {
102
+ "name": "updateSlice",
103
+ "query": f'''
104
+ mutation updateSlice(
105
+ $dataset_id: String!,
106
+ $id: ID!,
107
+ $name: String,
108
+ $description: String
109
+ ) {{
110
+ updateSlice(
111
+ datasetId: $dataset_id,
112
+ id: $id,
113
+ name: $name,
114
+ description: $description
115
+ ) {{
116
+ {Schemas.SLICE}
117
+ }}
118
+ }}
119
+ ''',
120
+ "variables": update_slice_params,
121
+ }