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
24 changes: 14 additions & 10 deletions docs/extras/code_samples/default_v2.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
#
# Install the Python client library by running:
# pip install mindee
#

from mindee import ClientV2, InferencePredictOptions
from mindee.parsing.v2 import InferenceResponse, PollingResponse
from mindee.parsing.v2 import InferenceResponse

input_path = "/path/to/the/file.ext"
api_key = "MY_API_KEY"
Expand All @@ -13,12 +8,21 @@ model_id = "MY_MODEL_ID"
# Init a new client
mindee_client = ClientV2(api_key)

# Set inference options
options = InferencePredictOptions(
# ID of the model, required.
model_id=model_id,
# If set to `True`, will enable Retrieval-Augmented Generation.
rag=False,
)

# Load a file from disk
input_doc = mindee_client.source_from_path(input_path)
options = InferencePredictOptions(model_id=model_id)

# Parse the file.
response: InferenceResponse = mindee_client.enqueue_and_parse(input_doc, options)
# Upload the file
response: InferenceResponse = mindee_client.enqueue_and_parse(
input_doc, options
)

# Print a brief summary of the parsed data
print(response.inference)
print(response.inference)
12 changes: 6 additions & 6 deletions mindee/client_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
is_valid_post_response,
)
from mindee.parsing.v2.inference_response import InferenceResponse
from mindee.parsing.v2.polling_response import PollingResponse
from mindee.parsing.v2.job_response import JobResponse


class ClientV2(ClientMixin):
Expand All @@ -39,7 +39,7 @@ def __init__(self, api_key: Optional[str] = None) -> None:

def enqueue(
self, input_source: LocalInputSource, options: InferencePredictOptions
) -> PollingResponse:
) -> JobResponse:
"""
Enqueues a document to a given model.

Expand All @@ -66,12 +66,12 @@ def enqueue(
if not is_valid_post_response(response):
handle_error_v2(dict_response)

return PollingResponse(dict_response)
return JobResponse(dict_response)

def parse_queued(
self,
queue_id: str,
) -> Union[InferenceResponse, PollingResponse]:
) -> Union[InferenceResponse, JobResponse]:
"""
Parses a queued document.

Expand All @@ -85,7 +85,7 @@ def parse_queued(

dict_response = response.json()
if "job" in dict_response:
return PollingResponse(dict_response)
return JobResponse(dict_response)
return InferenceResponse(dict_response)

def enqueue_and_parse(
Expand Down Expand Up @@ -118,7 +118,7 @@ def enqueue_and_parse(
queue_result.job.id,
)
while retry_counter < options.polling_options.max_retries:
if not isinstance(poll_results, PollingResponse):
if not isinstance(poll_results, JobResponse):
break
if poll_results.job.status == "Failed":
raise MindeeError(f"Parsing failed for job {poll_results.job.id}")
Expand Down
2 changes: 1 addition & 1 deletion mindee/parsing/v2/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
from mindee.parsing.v2.inference_response import InferenceResponse
from mindee.parsing.v2.inference_result import InferenceResult
from mindee.parsing.v2.job import Job
from mindee.parsing.v2.polling_response import PollingResponse
from mindee.parsing.v2.job_response import JobResponse
13 changes: 2 additions & 11 deletions mindee/parsing/v2/inference_options.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,14 @@
from typing import List

from mindee.parsing.common.string_dict import StringDict


class RawText:
"""Raw text extracted from the document."""

page: int
content: str

def __init__(self, raw_response: StringDict):
self.page = raw_response["page"]
self.content = raw_response["content"]
from mindee.parsing.v2.raw_text import RawText


class InferenceOptions:
"""Optional information about the document."""

raw_texts: List[RawText]
"""List of text found per page."""

def __init__(self, raw_response: StringDict):
self.raw_texts = [RawText(raw_text) for raw_text in raw_response["raw_texts"]]
2 changes: 2 additions & 0 deletions mindee/parsing/v2/job.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class Job:
"""Job ID."""
error: Optional[ErrorResponse]
"""Error response if any."""
created_at: datetime
"""Timestamp of the job creation."""
model_id: str
"""ID of the model."""
filename: str
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from mindee.parsing.v2.job import Job


class PollingResponse(CommonResponse):
class JobResponse(CommonResponse):
"""Represent an inference response from Mindee V2 API."""

job: Job
Expand Down
14 changes: 14 additions & 0 deletions mindee/parsing/v2/raw_text.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from mindee.parsing.common.string_dict import StringDict


class RawText:
"""Raw text extracted from the document."""

page: int
"""Page the raw text was found on."""
content: str
"""Content of the raw text."""

def __init__(self, raw_response: StringDict):
self.page = raw_response["page"]
self.content = raw_response["content"]
2 changes: 1 addition & 1 deletion tests/data
Submodule data updated 0 files
4 changes: 2 additions & 2 deletions tests/test_client_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from mindee.error.mindee_http_error_v2 import MindeeHTTPErrorV2
from mindee.input import LocalInputSource, PathInput
from mindee.mindee_http.base_settings import USER_AGENT
from mindee.parsing.v2 import Job, PollingResponse
from mindee.parsing.v2 import Job, JobResponse
from tests.test_inputs import FILE_TYPES_DIR, V2_DATA_DIR
from tests.utils import dummy_envvars

Expand Down Expand Up @@ -137,7 +137,7 @@ def test_enqueue(custom_base_url_client):
response = custom_base_url_client.parse_queued(
"12345678-1234-1234-1234-123456789ABC"
)
assert isinstance(response, PollingResponse)
assert isinstance(response, JobResponse)
assert isinstance(response.job, Job)
assert response.job.id == "12345678-1234-1234-1234-123456789ABC"
assert response.job.model_id == "87654321-4321-4321-4321-CBA987654321"
Expand Down