Skip to content

Commit c64c9ca

Browse files
add tests & fix miscellaneous naming issues
1 parent 11cac59 commit c64c9ca

File tree

8 files changed

+82
-13
lines changed

8 files changed

+82
-13
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#
2+
# Install the Python client library by running:
3+
# pip install mindee
4+
#
5+
6+
from mindee import ClientV2, InferencePredictOptions
7+
from mindee.parsing.v2 import InferenceResponse, PollingResponse
8+
from tests.product import PRODUCT_DATA_DIR
9+
10+
input_path = "/path/to/the/file.ext"
11+
api_key = "MY_API_KEY"
12+
model_id = "MY_MODEL_ID"
13+
14+
# Init a new client
15+
mindee_client = ClientV2(api_key)
16+
17+
# Load a file from disk
18+
input_doc = mindee_client.source_from_path(input_path)
19+
options = InferencePredictOptions(model_id=model_id)
20+
21+
# Parse the file.
22+
response: InferenceResponse = mindee_client.enqueue_and_parse(input_doc, options)
23+
24+
# Print a brief summary of the parsed data
25+
print(response.inference)

mindee/client_v2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def parse_queued(
9393
"""
9494
logger.debug("Fetching from queue '%s'.", queue_id)
9595

96-
response = self.mindee_api.document_queue_req_get(queue_id)
96+
response = self.mindee_api.get_inference_from_queue(queue_id)
9797
if not is_valid_get_response(response):
9898
handle_error_v2(response.json())
9999

mindee/mindee_http/mindee_api_v2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def predict_async_req_post(
104104

105105
return response
106106

107-
def document_queue_req_get(self, queue_id: str) -> requests.Response:
107+
def get_inference_from_queue(self, queue_id: str) -> requests.Response:
108108
"""
109109
Sends a request matching a given queue_id. Returns either a Job or a Document.
110110

mindee/parsing/v2/base_field.py

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,16 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0):
4141
self.items = []
4242
for item in raw_response["items"]:
4343
if isinstance(item, dict):
44-
self.items.append(BaseField.create_field(item, 1))
44+
self.items.append(BaseField.create_field(item, self._indent_level + 2))
4545
else:
4646
raise MindeeApiV2Error(f"Unrecognized field format '{item}'.")
4747

48+
def __str__(self) -> str:
49+
out_str = ""
50+
for item in self.items:
51+
out_str += f"* {str(item)[2:] if item else ''}"
52+
return "\n" + out_str if out_str else ""
53+
4854

4955
class ObjectField(BaseField):
5056
"""Object field containing multiple fields."""
@@ -59,14 +65,26 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0):
5965
self.fields: Dict[str, Union["ListField", "ObjectField", "SimpleField"]] = {}
6066
for field_key, field_value in inner_fields.items():
6167
if isinstance(field_value, dict):
62-
self.fields[field_key] = BaseField.create_field(field_value, 1)
68+
self.fields[field_key] = BaseField.create_field(
69+
field_value, self._indent_level + 1
70+
)
6371
else:
6472
raise MindeeApiV2Error(f"Unrecognized field format '{field_value}'.")
6573

6674
def __str__(self) -> str:
6775
out_str = ""
6876
for field_key, field_value in self.fields.items():
69-
out_str += f"{' ' * self._indent_level}:{field_key}: {field_value}\n"
77+
if isinstance(field_value, ListField):
78+
value_str = ""
79+
if len(field_value.items) > 0:
80+
value_str = (
81+
" " * self._indent_level + str(field_value)
82+
if field_value
83+
else ""
84+
)
85+
out_str += f"{' ' * self._indent_level}:{field_key}: {value_str}"
86+
else:
87+
out_str += f"{' ' * self._indent_level}:{field_key}: {field_value if field_value else ''}"
7088
return out_str
7189

7290

@@ -80,4 +98,4 @@ def __init__(self, raw_response: StringDict, indent_level: int = 0):
8098
self.value = raw_response["value"] = raw_response.get("value", None)
8199

82100
def __str__(self) -> str:
83-
return f"{' ' * self._indent_level}{self.value}\n"
101+
return f"{self.value}\n" if self.value else "\n"

mindee/parsing/v2/inference.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ def __str__(self) -> str:
3030
f"#########\n"
3131
f":Model: {self.model.id}\n"
3232
f":File: {self.file}\n"
33-
f" :Name: {self.file.name}\n\n"
33+
f" :Name: {self.file.name}\n"
3434
f" :Alias: {self.file.alias}\n\n"
3535
f"Result\n"
3636
f"======\n"
37-
f"\n{self.result}\n"
37+
f"{self.result}\n"
3838
)

mindee/parsing/v2/inference_fields.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
2-
from typing import Union, Dict
2+
3+
from typing import Dict, Union
34

45
from mindee.parsing.common.string_dict import StringDict
56
from mindee.parsing.v2.base_field import BaseField, ListField, ObjectField, SimpleField
@@ -19,3 +20,9 @@ def __getattr__(self, item):
1920
return self[item]
2021
except KeyError:
2122
raise AttributeError(item) from None
23+
24+
def __str__(self) -> str:
25+
str_fields = ""
26+
for field_key, field_value in self.items():
27+
str_fields += f":{field_key}: {field_value}"
28+
return str_fields

mindee/parsing/v2/inference_result.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def __init__(self, raw_response: StringDict) -> None:
2222
)
2323

2424
def __str__(self) -> str:
25-
str_fields = ""
26-
for field_key, field_value in self.fields.items():
27-
str_fields += f" :{field_key}: {field_value}\n"
28-
return f":fields: {str_fields}\n" f"options: {self.options}\n"
25+
out_str = f":fields: {self.fields}"
26+
if self.options:
27+
out_str += f"\n:options: {self.options}"
28+
return out_str

tests/test_code_samples.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,19 @@ OUTPUT_FILE='./_test.py'
55
ACCOUNT=$1
66
ENDPOINT=$2
77
API_KEY=$3
8+
API_KEY_V2=$4
9+
MODEL_ID=$5
810

911
for f in $(find ./docs/extras/code_samples -maxdepth 1 -name "*.txt" -not -name "workflow_*.txt" | sort -h)
1012
do
13+
if echo "${f}" | grep -q "default_v2.txt"; then
14+
if [ -z "${API_KEY_V2}" ] || [ -z "${MODEL_ID}" ]; then
15+
echo "Skipping ${f} (API_KEY_V2 or MODEL_ID not supplied)"
16+
echo
17+
continue
18+
fi
19+
fi
20+
1121
echo
1222
echo "###############################################"
1323
echo "${f}"
@@ -17,6 +27,15 @@ do
1727
sed "s/my-api-key/${API_KEY}/" "${f}" > $OUTPUT_FILE
1828
sed -i 's/\/path\/to\/the\/file.ext/.\/tests\/data\/file_types\/pdf\/blank_1.pdf/' $OUTPUT_FILE
1929

30+
31+
if echo "${f}" | grep -q "default_v2.txt"
32+
then
33+
sed -i "s/MY_API_KEY/$API_KEY_V2/" $OUTPUT_FILE
34+
sed -i "s/MY_MODEL_ID/$MODEL_ID/" $OUTPUT_FILE
35+
else
36+
sed -i "s/my-api-key/$API_KEY/" $OUTPUT_FILE
37+
fi
38+
2039
if echo "$f" | grep -q "custom_v1.txt"
2140
then
2241
sed -i "s/my-account/$ACCOUNT/g" $OUTPUT_FILE

0 commit comments

Comments
 (0)