diff --git a/docs/misc/error.rst b/docs/misc/error.rst new file mode 100644 index 00000000..68a48f5b --- /dev/null +++ b/docs/misc/error.rst @@ -0,0 +1,10 @@ +------------- +Mindee Errors +------------- + +.. automodule:: mindee.error + :imported-members: + :inherited-members: + :members: + :undoc-members: + diff --git a/docs/parsing/custom.rst b/docs/parsing/custom.rst index f1fd1172..0250e2b4 100644 --- a/docs/parsing/custom.rst +++ b/docs/parsing/custom.rst @@ -25,3 +25,8 @@ List Field Value ---------------- .. autoclass:: mindee.parsing.custom.list.ListFieldValueV1 :members: + +String Dict +----------- +.. autoclass:: mindee.parsing.common.string_dict.StringDict + :members: diff --git a/docs/parsing/standard.rst b/docs/parsing/standard.rst index 8ff71d96..1343c6f7 100644 --- a/docs/parsing/standard.rst +++ b/docs/parsing/standard.rst @@ -14,6 +14,12 @@ Text Field :members: :inherited-members: +Classification Field +-------------------- +.. autoclass:: mindee.parsing.standard.classification.ClassificationField + :members: + :inherited-members: + Company Registration Field -------------------------- .. autoclass:: mindee.parsing.standard.company_registration.CompanyRegistrationField diff --git a/docs/product/receipt_v4.rst b/docs/product/receipt_v4.rst new file mode 100644 index 00000000..92bdfda5 --- /dev/null +++ b/docs/product/receipt_v4.rst @@ -0,0 +1,16 @@ +Receipt V4 +---------- + +**Sample Code:** + +.. literalinclude:: /extras/code_samples/expense_receipts_v4.txt + :language: Python + +.. autoclass:: mindee.product.receipt.receipt_v4.ReceiptV4 + :members: + :inherited-members: + +.. autoclass:: mindee.product.receipt.receipt_v4_document.ReceiptV4Document + :members: + :inherited-members: + diff --git a/mindee/error/__init__.py b/mindee/error/__init__.py index d99d5eb2..33358cd3 100644 --- a/mindee/error/__init__.py +++ b/mindee/error/__init__.py @@ -1,6 +1,9 @@ +from mindee.error.geometry_error import GeometryError +from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import MindeeClientError, MindeeError from mindee.error.mindee_http_error import ( MindeeHTTPClientError, MindeeHTTPError, MindeeHTTPServerError, + handle_error, ) diff --git a/mindee/geometry/error.py b/mindee/error/geometry_error.py similarity index 100% rename from mindee/geometry/error.py rename to mindee/error/geometry_error.py diff --git a/mindee/error/mimetype_error.py b/mindee/error/mimetype_error.py new file mode 100644 index 00000000..a7f05212 --- /dev/null +++ b/mindee/error/mimetype_error.py @@ -0,0 +1,2 @@ +class MimeTypeError(AssertionError): + """The MIME Type is not valid.""" diff --git a/mindee/error/mindee_error.py b/mindee/error/mindee_error.py index 47e92d74..41295cfd 100644 --- a/mindee/error/mindee_error.py +++ b/mindee/error/mindee_error.py @@ -1,9 +1,13 @@ class MindeeError(RuntimeError): - """A generic exception relating to various client errors.""" + """A generic exception relating to various HTTP errors.""" class MindeeClientError(MindeeError): - """An exception relating to document parsing.""" + """ + An exception relating to document parsing errors. + + Not to be confused with `MindeeHTTPClientError`. + """ class MindeeApiError(MindeeError): diff --git a/mindee/geometry/__init__.py b/mindee/geometry/__init__.py index 7137de5d..07c1ef84 100644 --- a/mindee/geometry/__init__.py +++ b/mindee/geometry/__init__.py @@ -1,5 +1,4 @@ from mindee.geometry.bbox import BBox, get_bbox -from mindee.geometry.error import GeometryError from mindee.geometry.minmax import MinMax, get_min_max_x, get_min_max_y from mindee.geometry.point import Point, Points from mindee.geometry.polygon import ( diff --git a/mindee/geometry/quadrilateral.py b/mindee/geometry/quadrilateral.py index 1744b47c..7034dc4f 100644 --- a/mindee/geometry/quadrilateral.py +++ b/mindee/geometry/quadrilateral.py @@ -1,7 +1,7 @@ from typing import NamedTuple, Sequence +from mindee.error.geometry_error import GeometryError from mindee.geometry.bbox import get_bbox -from mindee.geometry.error import GeometryError from mindee.geometry.point import Point, Points from mindee.geometry.polygon_utils import get_centroid diff --git a/mindee/input/__init__.py b/mindee/input/__init__.py index e69de29b..fde6821d 100644 --- a/mindee/input/__init__.py +++ b/mindee/input/__init__.py @@ -0,0 +1,10 @@ +from mindee.input.page_options import PageOptions +from mindee.input.sources import ( + Base64Input, + BytesInput, + FileInput, + InputType, + LocalInputSource, + PathInput, + UrlInputSource, +) diff --git a/mindee/input/sources.py b/mindee/input/sources.py index 7e6e1ca8..63c64eaf 100644 --- a/mindee/input/sources.py +++ b/mindee/input/sources.py @@ -8,6 +8,7 @@ import pikepdf +from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import MindeeSourceError from mindee.input.page_options import KEEP_ONLY, REMOVE from mindee.logger import logger @@ -36,10 +37,6 @@ class InputType(Enum): URL = "url" -class MimeTypeError(AssertionError): - """The MIME Type is not valid.""" - - class LocalInputSource: """Base class for all input sources coming from the local machine.""" diff --git a/mindee/mindee_http/__init__.py b/mindee/mindee_http/__init__.py index 88384335..3ec07766 100644 --- a/mindee/mindee_http/__init__.py +++ b/mindee/mindee_http/__init__.py @@ -1,2 +1,3 @@ +from mindee.mindee_http.base_endpoint import BaseEndpoint from mindee.mindee_http.endpoint import CustomEndpoint, Endpoint from mindee.mindee_http.mindee_api import MindeeApi diff --git a/mindee/mindee_http/base_endpoint.py b/mindee/mindee_http/base_endpoint.py index af4e30ac..fbae13b8 100644 --- a/mindee/mindee_http/base_endpoint.py +++ b/mindee/mindee_http/base_endpoint.py @@ -4,12 +4,12 @@ class BaseEndpoint(ABC): - """Base endpoint for the Mindee API.""" + """Base endpoint class for the Mindee API.""" def __init__(self, settings: MindeeApi) -> None: """ Base API endpoint class for all endpoints. - :param settings: Settings relating to all endpoints + :param settings: Settings relating to all endpoints. """ self.settings = settings diff --git a/mindee/parsing/common/inference.py b/mindee/parsing/common/inference.py index d4eddd09..112e8c1c 100644 --- a/mindee/parsing/common/inference.py +++ b/mindee/parsing/common/inference.py @@ -1,4 +1,4 @@ -from typing import Dict, Generic, List, Optional, TypeVar +from typing import Dict, Generic, List, Optional, Type, TypeVar from mindee.error.mindee_error import MindeeError from mindee.parsing.common.page import TypePage @@ -55,11 +55,13 @@ def __str__(self) -> str: ) @staticmethod - def get_endpoint_info(klass) -> Dict[str, str]: + def get_endpoint_info(klass: Type["Inference"]) -> Dict[str, str]: """ Retrives the endpoint information for an Inference. Should never retrieve info for CustomV1, as a custom endpoint should be created to use CustomV1. + + :param klass: product subclass to access endpoint information. """ if klass.endpoint_name and klass.endpoint_version: return {"name": klass.endpoint_name, "version": klass.endpoint_version} diff --git a/mindee/parsing/common/string_dict.py b/mindee/parsing/common/string_dict.py index a6241110..cf91cdd0 100644 --- a/mindee/parsing/common/string_dict.py +++ b/mindee/parsing/common/string_dict.py @@ -1,3 +1,4 @@ from typing import Any, Dict StringDict = Dict[str, Any] +"""Basic JSON-compliant python dictionary.""" diff --git a/mindee/parsing/standard/position.py b/mindee/parsing/standard/position.py index f6f732bf..f82b7605 100644 --- a/mindee/parsing/standard/position.py +++ b/mindee/parsing/standard/position.py @@ -1,6 +1,6 @@ from typing import Optional -from mindee.geometry.error import GeometryError +from mindee.error.geometry_error import GeometryError from mindee.geometry.polygon import Polygon, polygon_from_prediction from mindee.geometry.quadrilateral import Quadrilateral, quadrilateral_from_prediction from mindee.parsing.common.string_dict import StringDict diff --git a/tests/test_inputs.py b/tests/test_inputs.py index 441795eb..be73fa5e 100644 --- a/tests/test_inputs.py +++ b/tests/test_inputs.py @@ -4,13 +4,13 @@ import pikepdf import pytest +from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import MindeeError, MindeeSourceError from mindee.input.page_options import KEEP_ONLY, REMOVE from mindee.input.sources import ( Base64Input, BytesInput, FileInput, - MimeTypeError, PathInput, UrlInputSource, )