Skip to content

Commit c3af04d

Browse files
✨ add support for crop utility
1 parent 93f3058 commit c3af04d

16 files changed

Lines changed: 197 additions & 6 deletions

mindee/input/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from mindee.input.local_response import LocalResponse
22
from mindee.input.base_parameters import BaseParameters
33
from mindee.input.inference_parameters import InferenceParameters
4-
from mindee.v2.product.split.split_parameters import SplitParameters
54
from mindee.input.page_options import PageOptions
65
from mindee.input.polling_options import PollingOptions
76
from mindee.input.sources.base_64_input import Base64Input
@@ -26,6 +25,5 @@
2625
"PathInput",
2726
"PollingOptions",
2827
"UrlInputSource",
29-
"SplitParameters",
3028
"WorkflowOptions",
3129
]

mindee/v2/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
from mindee.v2.product.crop.crop_parameters import CropParameters
2+
from mindee.v2.product.crop.crop_response import CropResponse
13
from mindee.v2.product.split.split_parameters import SplitParameters
24
from mindee.v2.product.split.split_response import SplitResponse
35

46
__all__ = [
7+
"CropParameters",
8+
"CropResponse",
59
"SplitResponse",
610
"SplitParameters",
711
]

mindee/v2/product/crop/__init__.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from mindee.v2.product.crop.crop_box import CropBox
2+
from mindee.v2.product.crop.crop_inference import CropInference
3+
from mindee.v2.product.crop.crop_parameters import CropParameters
4+
from mindee.v2.product.crop.crop_response import CropResponse
5+
from mindee.v2.product.crop.crop_result import CropResult
6+
7+
__all__ = [
8+
"CropBox",
9+
"CropInference",
10+
"CropParameters",
11+
"CropResponse",
12+
"CropResult",
13+
]

mindee/v2/product/crop/crop_box.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from mindee.parsing.common.string_dict import StringDict
2+
from mindee.parsing.v2.field.field_location import FieldLocation
3+
4+
5+
class CropBox:
6+
"""Crop inference result."""
7+
8+
location: FieldLocation
9+
"""Page box of the crop inference."""
10+
object_type: str
11+
"""Document type of the crop inference."""
12+
13+
def __init__(self, server_response: StringDict):
14+
self.location = FieldLocation(server_response["location"])
15+
self.object_type = server_response["object_type"]
16+
17+
def __str__(self) -> str:
18+
return f"* :Location: {self.location}\n :Object Type: {self.object_type}"
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from mindee.parsing.common.string_dict import StringDict
2+
from mindee.v2.parsing.inference.base_inference import BaseInference
3+
from mindee.v2.product.crop.crop_result import CropResult
4+
5+
6+
class CropInference(BaseInference):
7+
"""Crop inference result."""
8+
9+
result: CropResult
10+
"""Result of a crop inference."""
11+
_slug: str = "crop"
12+
"""Slug of the endpoint."""
13+
14+
def __init__(self, raw_response: StringDict) -> None:
15+
super().__init__(raw_response)
16+
self.result = CropResult(raw_response["result"])
17+
18+
def __str__(self) -> str:
19+
return f"Inference\n#########\n{self.model}\n{self.file}\n{self.result}\n"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from mindee.input.base_parameters import BaseParameters
2+
3+
4+
class CropParameters(BaseParameters):
5+
"""
6+
Parameters accepted by the crop utility v2 endpoint.
7+
"""
8+
9+
_slug: str = "utilities/crop"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from mindee.parsing.common.string_dict import StringDict
2+
from mindee.v2.parsing.inference import BaseResponse
3+
from mindee.v2.product.crop.crop_inference import CropInference
4+
5+
6+
class CropResponse(BaseResponse):
7+
"""Represent a crop inference response from Mindee V2 API."""
8+
9+
inference: CropInference
10+
"""Inference object for crop inference."""
11+
12+
_slug: str = "utilities/crop"
13+
"""Slug of the inference."""
14+
15+
def __init__(self, raw_response: StringDict) -> None:
16+
super().__init__(raw_response)
17+
self.inference = CropInference(raw_response["inference"])
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from typing import List
2+
3+
from mindee.parsing.common.string_dict import StringDict
4+
from mindee.v2.product.crop.crop_box import CropBox
5+
6+
7+
class CropResult:
8+
"""Crop result info."""
9+
10+
crops: List[CropBox]
11+
12+
def __init__(self, raw_response: StringDict) -> None:
13+
self.crops = [CropBox(crop) for crop in raw_response["crops"]]
14+
15+
def __str__(self) -> str:
16+
crops = "\n"
17+
if len(self.crops) > 0:
18+
crops += "\n\n".join([str(crop) for crop in self.crops])
19+
out_str = f"Crops\n======{crops}"
20+
return out_str

tests/v2/utilities/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)