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
13 changes: 3 additions & 10 deletions mindee/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ def __init__(
"""
assert type(raise_on_error) == bool
self.raise_on_error = raise_on_error
self.base_url = "https://api.mindee.net/v1/products/mindee/"
self.expense_receipt_token = expense_receipt_token
self.invoice_token = invoice_token
self.passport_token = passport_token
Expand Down Expand Up @@ -73,7 +72,6 @@ def parse_receipt(

response = Receipt.request(
input_file,
self.base_url,
self.expense_receipt_token,
version,
include_words,
Expand Down Expand Up @@ -131,9 +129,7 @@ def parse_passport(

input_file = Inputs(file, input_type, cut_pdf=cut_pdf, n_pdf_pages=cut_pdf_mode)

response = Passport.request(
input_file, self.base_url, self.passport_token, version
)
response = Passport.request(input_file, self.passport_token, version)

return self._wrap_response(input_file, response, "passport")

Expand Down Expand Up @@ -163,9 +159,7 @@ def parse_license_plate(

input_file = Inputs(file, input_type, cut_pdf=cut_pdf, n_pdf_pages=cut_pdf_mode)

response = CarPlate.request(
input_file, self.base_url, self.license_plate_token, version
)
response = CarPlate.request(input_file, self.license_plate_token, version)

return self._wrap_response(input_file, response, "license_plate")

Expand Down Expand Up @@ -196,7 +190,7 @@ def parse_invoice(
input_file = Inputs(file, input_type, cut_pdf=cut_pdf, n_pdf_pages=cut_pdf_mode)

response = Invoice.request(
input_file, self.base_url, self.invoice_token, version, include_words
input_file, self.invoice_token, version, include_words
)

return self._wrap_response(input_file, response, "invoice")
Expand Down Expand Up @@ -229,7 +223,6 @@ def parse_financial_document(

response = FinancialDocument.request(
input_file,
self.base_url,
self.expense_receipt_token,
self.invoice_token,
include_words,
Expand Down
9 changes: 4 additions & 5 deletions mindee/documents/car_plate.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from mindee.documents import Document
from mindee.fields import Field
from mindee.http import request
from mindee.http import make_api_request, make_predict_url
import os


Expand Down Expand Up @@ -78,16 +78,15 @@ def compare(license_plate=None, ground_truth=None):
return metrics

@staticmethod
def request(input_file, base_url, license_plates_token=None, version="1"):
def request(input_file, license_plates_token, version="1"):
"""
Make request to license_plates endpoint
:param input_file: Input object
:param base_url: API base URL
:param license_plates_token: License plate API token
:param version: API version
"""
url = os.path.join(base_url, "license_plates", "v" + version, "predict")
return request(url, input_file, license_plates_token)
url = make_predict_url("license_plates", version)
return make_api_request(url, input_file, license_plates_token)

def _checklist(self):
"""
Expand Down
18 changes: 9 additions & 9 deletions mindee/documents/financial_document.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from mindee.fields.tax import Tax
from mindee.documents import Document
from mindee.fields import Field
from mindee.http import request
from mindee.http import make_api_request, make_predict_url
from mindee.documents.invoice import Invoice
from mindee.documents.receipt import Receipt
import os
Expand Down Expand Up @@ -209,25 +209,25 @@ def compare(financial_document=None, ground_truth=None):
@staticmethod
def request(
input_file,
base_url,
expense_receipt_token=None,
invoice_token=None,
expense_receipt_token,
invoice_token,
include_words=False,
):
"""
Make request to invoices endpoint if .pdf, expense_receipts otherwise
:param include_words: Bool, extract all words into http_response
:param input_file: Input object
:param base_url: API base URL
:param expense_receipt_token: Expense receipts API token
:param invoice_token: Invoices API token
"""
if "pdf" in input_file.file_extension:
url = os.path.join(base_url, "invoices", "v2", "predict")
return request(url, input_file, invoice_token, include_words)
url = make_predict_url("invoices", "2")
return make_api_request(url, input_file, invoice_token, include_words)
else:
url = os.path.join(base_url, "expense_receipts", "v3", "predict")
return request(url, input_file, expense_receipt_token, include_words)
url = make_predict_url("expense_receipts", "3")
return make_api_request(
url, input_file, expense_receipt_token, include_words
)

def _checklist(self):
"""
Expand Down
11 changes: 4 additions & 7 deletions mindee/documents/invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from mindee.fields.orientation import Orientation
from mindee.fields.payment_details import PaymentDetails
from mindee.fields.tax import Tax
from mindee.http import request
from mindee.http import make_api_request, make_predict_url
import os


Expand Down Expand Up @@ -199,19 +199,16 @@ def compare(invoice=None, ground_truth=None):
return metrics

@staticmethod
def request(
input_file, base_url, invoice_token=None, version="2", include_words=False
):
def request(input_file, invoice_token, version="2", include_words=False):
"""
Make request to invoices endpoint
:param input_file: Input object
:param base_url: API base URL
:param invoice_token: Invoices API token
:param include_words: Include Mindee vision words in http_response
:param version: API version
"""
url = os.path.join(base_url, "invoices", "v" + version, "predict")
return request(url, input_file, invoice_token, include_words)
url = make_predict_url("invoices", version)
return make_api_request(url, input_file, invoice_token, include_words)

def _reconstruct(self):
"""
Expand Down
8 changes: 4 additions & 4 deletions mindee/documents/passport.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from mindee.fields import Field
from mindee.fields.date import Date
from datetime import datetime
from mindee.http import request
from mindee.http import make_api_request, make_predict_url
import os


Expand Down Expand Up @@ -190,12 +190,12 @@ def is_expired(self):
return self.expiry_date.date_object < datetime.date(datetime.now())

@staticmethod
def request(input_file, base_url, passport_token=None, version="1"):
def request(input_file, passport_token, version="1"):
"""
Make request to passport endpoint
"""
url = os.path.join(base_url, "passport", "v" + version, "predict")
return request(url, input_file, passport_token)
url = make_predict_url("passport", version)
return make_api_request(url, input_file, passport_token)

def _reconstruct(self):
"""
Expand Down
10 changes: 4 additions & 6 deletions mindee/documents/receipt.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from mindee.fields.locale import Locale
from mindee.fields.orientation import Orientation
from mindee.fields.tax import Tax
from mindee.http import request
from mindee.http import make_api_request, make_predict_url
import os


Expand Down Expand Up @@ -176,21 +176,19 @@ def compare(receipt=None, ground_truth=None):
@staticmethod
def request(
input_file,
base_url,
expense_receipt_token=None,
expense_receipt_token,
version="3",
include_words=False,
):
"""
Make request to expense_receipts endpoint
:param input_file: Input object
:param base_url: API base URL
:param expense_receipt_token: Expense_receipts API token
:param include_words: Include Mindee vision words in http_response
:param version: API version
"""
url = os.path.join(base_url, "expense_receipts", "v" + version, "predict")
return request(url, input_file, expense_receipt_token, include_words)
url = make_predict_url("expense_receipts", version)
return make_api_request(url, input_file, expense_receipt_token, include_words)

def _checklist(self):
"""
Expand Down
15 changes: 14 additions & 1 deletion mindee/http.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
import requests
from mindee.versions import __version__, python_version, get_platform

MINDEE_API_URL = "https://api.mindee.net/v1"

platform = get_platform()


def request(url, input_file, token, include_words=False):
def make_predict_url(product: str, version: str, owner: str = "mindee") -> str:
"""
Returns full HTTP URL for a prediction request at specific version
:param product: product API name
:param version: product model version
:param owner: product owner (mindee for off-the-shelf APIs)
:return: The full URL, i.e. https://api.mindee.net/v1/products/mindee/invoices/2/predict
"""
return f"{MINDEE_API_URL}/products/{owner}/{product}/v{version}/predict"


def make_api_request(url: str, input_file, token: str, include_words: bool = False):
"""
:param input_file: Input object
:param url: Endpoint url
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
line-length = 88
target-version = ['py35', 'py36', 'py37']
include = '\.pyi?$'

[tool.mypy]
ignore_missing_imports = true
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[tool:pytest]
addopts = --pyargs --cov-fail-under 80 --cov-config=.coveragerc --cov mindee --cov-report term:skip-covered --cov-report term-missing
addopts = --pyargs --cov-fail-under 85 --cov-config=.coveragerc --cov mindee --cov-report term:skip-covered --cov-report term-missing
python_files = test*.py
junit_family = xunit2
1 change: 1 addition & 0 deletions tests/data/expense_receipts/receipt.txt

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion tests/test_client.py

Large diffs are not rendered by default.