Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/_smoke-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ jobs:
./tests/test_v1_code_samples.sh ${{ secrets.MINDEE_ACCOUNT_SE_TESTS }} ${{ secrets.MINDEE_ENDPOINT_SE_TESTS }}

- name: Notify Slack Action on Failure
uses: ravsamhq/notify-slack-action@2.3.0
uses: ravsamhq/notify-slack-action@2.5.0
if: ${{ always() && github.ref_name == 'main' }}
with:
status: ${{ job.status }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/_static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,7 @@ jobs:
${{ runner.os }}-prec-

- name: Run all static analysis
env:
SKIP: sphinx-html,sphinx-linkcheck
run: |
pre-commit run --all-files
15 changes: 15 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,18 @@ repos:
- types-setuptools
- importlib-metadata
- types-Pillow
- repo: local
hooks:
- id: sphinx-html
name: Sphinx HTML build
entry: make -C docs html
language: system
pass_filenames: false
files: ^docs/.*$|^mindee/.*\.py$

- id: sphinx-linkcheck
name: Sphinx Linkcheck
entry: make -C docs linkcheck
language: system
pass_filenames: false
files: ^docs/.*$|^mindee/.*\.py$
1 change: 1 addition & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,4 @@
# -- autodoc-typehints -------------------------------------------------------

typehints_defaults = "comma"
suppress_warnings = ["ref.python"]
1 change: 0 additions & 1 deletion docs/input.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ Mindee Input
------------

.. automodule:: mindee.input
:imported-members:
:inherited-members:
:members:
:undoc-members:
Expand Down
15 changes: 15 additions & 0 deletions docs/v2/parsing/error.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
V2 Parsing Error
################


Error Item
----------
.. autoclass:: mindee.v2.parsing.error.error_item.ErrorItem
:members:
:inherited-members:

Error Response
--------------
.. autoclass:: mindee.v2.parsing.error.error_response.ErrorResponse
:members:
:inherited-members:
4 changes: 3 additions & 1 deletion docs/v2/parsing/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,6 @@ V2 Parsing
.. toctree::
:maxdepth: 3

./inference/index
./inference/index
./error
./job
6 changes: 0 additions & 6 deletions docs/v2/parsing/inference/field.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,6 @@ Base Field
:members:
:inherited-members:

Dynamic Field
-------------
.. autoclass:: mindee.v2.parsing.inference.field.base_field.DynamicField
:members:
:inherited-members:

Field Confidence
----------------
.. autoclass:: mindee.v2.parsing.inference.field.field_confidence.FieldConfidence
Expand Down
37 changes: 0 additions & 37 deletions docs/v2/parsing/inference/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,6 @@ Base Response
:members:
:inherited-members:


Error Item
==========
.. autoclass:: mindee.v2.parsing.inference.error_item.ErrorItem
:members:
:inherited-members:

Error Response
==============
.. autoclass:: mindee.v2.parsing.inference.error_response.ErrorResponse
:members:
:inherited-members:

Inference Active Options
========================
.. autoclass:: mindee.v2.parsing.inference.inference_active_options.InferenceActiveOptions
Expand All @@ -45,36 +32,12 @@ Inference File
:members:
:inherited-members:

Inference Job
=============
.. autoclass:: mindee.v2.parsing.inference.inference_job.InferenceJob
:members:
:inherited-members:

Inference Model
=================
.. autoclass:: mindee.v2.parsing.inference.inference_model.InferenceModel
:members:
:inherited-members:

Job
===
.. autoclass:: mindee.v2.parsing.inference.job.Job
:members:
:inherited-members:

Job Response
============
.. autoclass:: mindee.v2.parsing.inference.job_response.JobResponse
:members:
:inherited-members:

Job Webhook
===========
.. autoclass:: mindee.v2.parsing.inference.job_webhook.JobWebhook
:members:
:inherited-members:

RAG Metadata
============
.. autoclass:: mindee.v2.parsing.inference.rag_metadata.RAGMetadata
Expand Down
21 changes: 21 additions & 0 deletions docs/v2/parsing/job.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
V2 Parsing Job
##############


Job
---
.. autoclass:: mindee.v2.parsing.job.job.Job
:members:
:inherited-members:

Job Response
------------
.. autoclass:: mindee.v2.parsing.job.job_response.JobResponse
:members:
:inherited-members:

Job Webook
----------
.. autoclass:: mindee.v2.parsing.job.job_webhook.JobWebhook
:members:
:inherited-members:
6 changes: 0 additions & 6 deletions docs/v2/product/crop/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@ Crop

./params

Crop Box
========
.. autoclass:: mindee.v2.product.crop.crop_box.CropBox
:members:
:inherited-members:

Crop Item
=========
.. autoclass:: mindee.v2.product.crop.crop_item.CropItem
Expand Down
2 changes: 1 addition & 1 deletion mindee/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from mindee.input.path_input import PathInput
from mindee.input.url_input_source import URLInputSource
from mindee.v1 import product
from mindee.v2.parsing.inference.job_response import JobResponse
from mindee.v2.parsing.job.job_response import JobResponse
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
Expand Down
2 changes: 0 additions & 2 deletions mindee/input/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from mindee.client_options.polling_options import PollingOptions
from mindee.input.base_64_input import Base64Input
from mindee.input.bytes_input import BytesInput
from mindee.input.file_input import FileInput
Expand All @@ -16,6 +15,5 @@
"LocalResponse",
"PageOptions",
"PathInput",
"PollingOptions",
"URLInputSource",
]
10 changes: 5 additions & 5 deletions mindee/v2/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from mindee.v2.client import Client
from mindee.v2.file_operations.crop import (
extract_crops,
extract_multiple_crops,
extract_single_crop,
)
from mindee.v2.file_operations.split import extract_splits
from mindee.v2.file_operations.split import extract_multiple_splits
from mindee.v2.product.classification.classification_response import (
ClassificationResponse,
)
Expand Down Expand Up @@ -33,8 +33,8 @@
"OCRResponse",
"SplitParameters",
"SplitResponse",
"extract_crops",
"extract_crops",
"extract_multiple_crops",
"extract_multiple_crops",
"extract_multiple_splits",
"extract_single_crop",
"extract_splits",
]
2 changes: 1 addition & 1 deletion mindee/v2/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
is_valid_post_response,
)
from mindee.v2.parsing.inference.base_response import BaseResponse
from mindee.v2.parsing.inference.job_response import JobResponse
from mindee.v2.parsing.job.job_response import JobResponse
from mindee.v2.product.extraction.extraction_response import ExtractionResponse

TypeBaseResponse = TypeVar("TypeBaseResponse", bound=BaseResponse)
Expand Down
11 changes: 8 additions & 3 deletions mindee/v2/file_operations/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
from mindee.v2.file_operations.crop import (
extract_crops,
extract_multiple_crops,
extract_single_crop,
)
from mindee.v2.file_operations.split import extract_splits
from mindee.v2.file_operations.split import extract_multiple_splits

__all__ = ["extract_crops", "extract_crops", "extract_single_crop", "extract_splits"]
__all__ = [
"extract_multiple_crops",
"extract_multiple_crops",
"extract_multiple_splits",
"extract_single_crop",
]
6 changes: 4 additions & 2 deletions mindee/v2/file_operations/crop.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from mindee.input.local_input_source import LocalInputSource
from mindee.v2.file_operations.crop_files import CropFiles
from mindee.v2.parsing.inference.field import FieldLocation
from mindee.v2.product.crop.crop_box import CropBox
from mindee.v2.product.crop.crop_item import CropItem


def extract_single_crop(
Expand All @@ -23,7 +23,9 @@ def extract_single_crop(
return extract_multiple_images_from_source(input_source, crop.page, polygons)[0]


def extract_crops(input_source: LocalInputSource, crops: list[CropBox]) -> CropFiles:
def extract_multiple_crops(
input_source: LocalInputSource, crops: list[CropItem]
) -> CropFiles:
"""
Extracts individual receipts from multi-receipts documents.

Expand Down
4 changes: 2 additions & 2 deletions mindee/v2/file_operations/split.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ def extract_single_split(
:param split: List of pages to keep.
:return: Extracted PDF
"""
return extract_splits(input_source, [split])[0]
return extract_multiple_splits(input_source, [split])[0]


def extract_splits(
def extract_multiple_splits(
input_source: LocalInputSource,
splits: list[list[int]],
) -> SplitFiles:
Expand Down
6 changes: 3 additions & 3 deletions mindee/v2/parsing/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from mindee.v2.parsing.error.error_item import ErrorItem
from mindee.v2.parsing.error.error_response import ErrorResponse
from mindee.v2.parsing.inference.base_inference import BaseInference
from mindee.v2.parsing.inference.base_response import BaseResponse
from mindee.v2.parsing.inference.error_item import ErrorItem
from mindee.v2.parsing.inference.error_response import ErrorResponse
from mindee.v2.parsing.inference.inference_active_options import InferenceActiveOptions
from mindee.v2.parsing.inference.inference_file import InferenceFile
from mindee.v2.parsing.inference.inference_model import InferenceModel
from mindee.v2.parsing.inference.job_response import JobResponse
from mindee.v2.parsing.job.job_response import JobResponse
from mindee.v2.product.extraction.extraction_inference import ExtractionInference
from mindee.v2.product.extraction.extraction_response import ExtractionResponse
from mindee.v2.product.extraction.extraction_result import ExtractionResult
Expand Down
4 changes: 4 additions & 0 deletions mindee/v2/parsing/error/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from mindee.v2.parsing.error.error_item import ErrorItem
from mindee.v2.parsing.error.error_response import ErrorResponse

__all__ = ["ErrorItem", "ErrorResponse"]
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from mindee.parsing.common import StringDict
from mindee.v2.parsing.inference.error_item import ErrorItem
from mindee.v2.parsing.error.error_item import ErrorItem


class ErrorResponse:
Expand Down
21 changes: 18 additions & 3 deletions mindee/v2/parsing/inference/field/base_field.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,30 @@
from enum import Enum

from mindee.parsing.common import StringDict
from mindee.v2.parsing.inference.field.dynamic_field import DynamicField, FieldType
from mindee.v2.parsing.inference.field.field_confidence import FieldConfidence
from mindee.v2.parsing.inference.field.field_location import FieldLocation


class BaseField(DynamicField):
class FieldType(str, Enum):
"""Field types."""

OBJECT = "ObjectField"
LIST = "ListField"
SIMPLE = "SimpleField"


class BaseField:
"""Field with base information."""

field_type: FieldType
_indent_level: int
locations: list[FieldLocation]
confidence: FieldConfidence | None

def __init__(
self, field_type: FieldType, raw_response: StringDict, indent_level: int = 0
) -> None:
super().__init__(field_type, indent_level)
self.field_type = field_type
self._indent_level = indent_level

self.confidence = None
Expand All @@ -29,3 +40,7 @@ def __init__(
self.locations = []
for location in raw_response["locations"]:
self.locations.append(FieldLocation(location))

def multi_str(self) -> str:
"""String representation of the field in a list."""
return str(self)
Loading
Loading