From be54796fc1014f4adf0d95e82a3e70dba4cd7056 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Mon, 1 Jun 2026 15:51:13 +0200 Subject: [PATCH 1/3] :boom: :recycle: move v1 and v2 internals to their respective namespaces --- ...uto_invoice_splitter_extraction_example.py | 6 +- .../auto_multi_receipts_extraction_example.py | 3 +- examples/custom_line_items_reconstruction.py | 5 +- examples/display_cropping.py | 5 +- mindee/__init__.py | 38 +---- mindee/commands/cli_parser.py | 10 +- mindee/commands/cli_products.py | 4 +- mindee/error/mindee_http_error.py | 2 +- mindee/error/v2/__init__.py | 0 mindee/error/{ => v2}/mindee_http_error_v2.py | 4 +- .../multi_receipts_extractor.py | 2 +- .../extraction/pdf_extractor/pdf_extractor.py | 2 +- mindee/input/__init__.py | 8 +- mindee/input/inference_parameters.py | 134 ------------------ mindee/input/local_response.py | 2 +- mindee/input/sources/__init__.py | 2 - mindee/input/sources/base_64_input.py | 3 +- mindee/input/sources/bytes_input.py | 3 +- mindee/input/sources/file_input.py | 3 +- mindee/input/sources/input_type.py | 11 -- mindee/input/sources/local_input_source.py | 12 +- mindee/input/sources/path_input.py | 3 +- mindee/input/sources/url_input_source.py | 3 - mindee/mindee_http/endpoint.py | 2 +- mindee/mindee_http/mindee_api_v2.py | 2 +- mindee/mindee_http/response_validation.py | 2 +- mindee/mindee_http/workflow_endpoint.py | 2 +- mindee/parsing/__init__.py | 8 +- mindee/parsing/common/__init__.py | 46 +----- .../parsing/{v2 => common}/common_response.py | 0 mindee/parsing/common/extras/__init__.py | 7 - mindee/parsing/common/ocr/__init__.py | 3 - mindee/parsing/custom/__init__.py | 11 -- mindee/parsing/standard/__init__.py | 46 ------ mindee/parsing/v2/__init__.py | 21 --- mindee/parsing/v2/base_inference.py | 29 ---- mindee/parsing/v2/base_response.py | 21 --- mindee/parsing/v2/field/__init__.py | 17 --- mindee/parsing/v2/inference_job.py | 14 -- mindee/product/__init__.py | 90 ------------ mindee/product/barcode_reader/__init__.py | 9 -- mindee/product/cropper/__init__.py | 13 -- mindee/product/financial_document/__init__.py | 13 -- mindee/product/fr/__init__.py | 49 ------- .../fr/bank_account_details/__init__.py | 23 --- mindee/product/fr/carte_grise/__init__.py | 9 -- mindee/product/fr/id_card/__init__.py | 23 --- mindee/product/international_id/__init__.py | 9 -- mindee/product/invoice/__init__.py | 13 -- mindee/product/invoice_splitter/__init__.py | 13 -- .../multi_receipts_detector/__init__.py | 11 -- mindee/product/passport/__init__.py | 9 -- mindee/product/receipt/__init__.py | 13 -- mindee/product/us/__init__.py | 13 -- mindee/product/us/bank_check/__init__.py | 13 -- mindee/v1/__init__.py | 17 +++ mindee/{ => v1}/client.py | 12 +- mindee/v1/input/__init__.py | 0 mindee/{ => v1}/input/workflow_options.py | 2 +- mindee/v1/parsing/__init__.py | 0 mindee/v1/parsing/common/__init__.py | 43 ++++++ mindee/{ => v1}/parsing/common/api_request.py | 0 .../{ => v1}/parsing/common/api_response.py | 2 +- .../parsing/common/async_predict_response.py | 8 +- mindee/{ => v1}/parsing/common/document.py | 10 +- mindee/{ => v1}/parsing/common/execution.py | 12 +- .../{ => v1}/parsing/common/execution_file.py | 0 .../parsing/common/execution_priority.py | 0 mindee/v1/parsing/common/extras/__init__.py | 7 + .../parsing/common/extras/cropper_extra.py | 2 +- .../{ => v1}/parsing/common/extras/extras.py | 6 +- .../common/extras/full_text_ocr_extra.py | 0 .../parsing/common/extras/rag_extra.py | 0 .../parsing/common/feedback_response.py | 2 +- mindee/{ => v1}/parsing/common/inference.py | 8 +- mindee/{ => v1}/parsing/common/job.py | 0 mindee/v1/parsing/common/ocr/__init__.py | 3 + .../{ => v1}/parsing/common/ocr/mvision_v1.py | 2 +- mindee/{ => v1}/parsing/common/ocr/ocr.py | 2 +- .../{ => v1}/parsing/common/ocr/ocr_line.py | 2 +- .../{ => v1}/parsing/common/ocr/ocr_page.py | 4 +- .../{ => v1}/parsing/common/ocr/ocr_word.py | 2 +- mindee/{ => v1}/parsing/common/orientation.py | 2 +- mindee/{ => v1}/parsing/common/page.py | 6 +- .../parsing/common/predict_response.py | 6 +- mindee/{ => v1}/parsing/common/prediction.py | 0 mindee/{ => v1}/parsing/common/product.py | 0 .../parsing/common/workflow_response.py | 8 +- mindee/v1/parsing/custom/__init__.py | 11 ++ .../{ => v1}/parsing/custom/classification.py | 2 +- mindee/{ => v1}/parsing/custom/line_items.py | 2 +- mindee/{ => v1}/parsing/custom/list.py | 4 +- mindee/{ => v1}/parsing/generated/__init__.py | 4 +- .../parsing/generated/generated_list.py | 6 +- .../parsing/generated/generated_object.py | 4 +- mindee/v1/parsing/standard/__init__.py | 52 +++++++ mindee/{ => v1}/parsing/standard/address.py | 4 +- mindee/{ => v1}/parsing/standard/amount.py | 8 +- mindee/{ => v1}/parsing/standard/base.py | 2 +- mindee/{ => v1}/parsing/standard/boolean.py | 4 +- .../parsing/standard/classification.py | 4 +- .../parsing/standard/company_registration.py | 6 +- mindee/{ => v1}/parsing/standard/date.py | 4 +- mindee/{ => v1}/parsing/standard/locale.py | 4 +- .../parsing/standard/payment_details.py | 4 +- mindee/{ => v1}/parsing/standard/position.py | 4 +- mindee/{ => v1}/parsing/standard/tax.py | 8 +- mindee/{ => v1}/parsing/standard/text.py | 4 +- mindee/v1/product/__init__.py | 97 +++++++++++++ mindee/v1/product/barcode_reader/__init__.py | 9 ++ .../barcode_reader/barcode_reader_v1.py | 6 +- .../barcode_reader_v1_document.py | 4 +- mindee/v1/product/cropper/__init__.py | 13 ++ mindee/{ => v1}/product/cropper/cropper_v1.py | 8 +- .../product/cropper/cropper_v1_document.py | 2 +- .../product/cropper/cropper_v1_page.py | 4 +- mindee/{ => v1}/product/custom/__init__.py | 2 +- mindee/{ => v1}/product/custom/custom_v1.py | 8 +- .../product/custom/custom_v1_document.py | 8 +- .../{ => v1}/product/custom/custom_v1_page.py | 6 +- .../v1/product/financial_document/__init__.py | 15 ++ .../financial_document_v1.py | 6 +- .../financial_document_v1_document.py | 22 +-- .../financial_document_v1_line_item.py | 2 +- mindee/v1/product/fr/__init__.py | 49 +++++++ .../fr/bank_account_details/__init__.py | 23 +++ .../bank_account_details_v1.py | 6 +- .../bank_account_details_v1_document.py | 4 +- .../bank_account_details_v2.py | 6 +- .../bank_account_details_v2_bban.py | 2 +- .../bank_account_details_v2_document.py | 6 +- mindee/v1/product/fr/carte_grise/__init__.py | 9 ++ .../product/fr/carte_grise/carte_grise_v1.py | 6 +- .../fr/carte_grise/carte_grise_v1_document.py | 6 +- mindee/v1/product/fr/id_card/__init__.py | 23 +++ .../{ => v1}/product/fr/id_card/id_card_v1.py | 8 +- .../product/fr/id_card/id_card_v1_document.py | 6 +- .../product/fr/id_card/id_card_v1_page.py | 4 +- .../{ => v1}/product/fr/id_card/id_card_v2.py | 8 +- .../product/fr/id_card/id_card_v2_document.py | 6 +- .../product/fr/id_card/id_card_v2_page.py | 4 +- mindee/{ => v1}/product/generated/__init__.py | 2 +- .../product/generated/generated_v1.py | 8 +- .../generated/generated_v1_document.py | 8 +- .../product/generated/generated_v1_page.py | 8 +- .../generated/generated_v1_prediction.py | 8 +- .../v1/product/international_id/__init__.py | 9 ++ .../international_id/international_id_v2.py | 6 +- .../international_id_v2_document.py | 8 +- mindee/v1/product/invoice/__init__.py | 13 ++ mindee/{ => v1}/product/invoice/invoice_v4.py | 6 +- .../product/invoice/invoice_v4_document.py | 22 +-- .../product/invoice/invoice_v4_line_item.py | 2 +- .../v1/product/invoice_splitter/__init__.py | 13 ++ .../invoice_splitter/invoice_splitter_v1.py | 6 +- .../invoice_splitter_v1_document.py | 4 +- .../invoice_splitter_v1_invoice_page_group.py | 2 +- .../multi_receipts_detector/__init__.py | 11 ++ .../multi_receipts_detector_v1.py | 6 +- .../multi_receipts_detector_v1_document.py | 4 +- mindee/v1/product/passport/__init__.py | 9 ++ .../{ => v1}/product/passport/passport_v1.py | 6 +- .../product/passport/passport_v1_document.py | 6 +- mindee/v1/product/receipt/__init__.py | 13 ++ mindee/{ => v1}/product/receipt/receipt_v5.py | 6 +- .../product/receipt/receipt_v5_document.py | 18 +-- .../product/receipt/receipt_v5_line_item.py | 2 +- mindee/v1/product/us/__init__.py | 13 ++ mindee/v1/product/us/bank_check/__init__.py | 13 ++ .../product/us/bank_check/bank_check_v1.py | 8 +- .../us/bank_check/bank_check_v1_document.py | 8 +- .../us/bank_check/bank_check_v1_page.py | 4 +- mindee/v2/__init__.py | 10 +- mindee/{client_v2.py => v2/client.py} | 17 +-- mindee/v2/commands/cli_parser.py | 12 +- mindee/v2/file_operations/crop.py | 2 +- mindee/v2/input/__init__.py | 0 mindee/{ => v2}/input/base_parameters.py | 0 mindee/v2/parsing/__init__.py | 22 ++- mindee/v2/parsing/inference/__init__.py | 7 - mindee/v2/parsing/inference/base_inference.py | 30 +++- mindee/v2/parsing/inference/base_response.py | 22 ++- .../v2 => v2/parsing/inference}/error_item.py | 2 +- .../parsing/inference}/error_response.py | 4 +- mindee/v2/parsing/inference/field/__init__.py | 17 +++ .../parsing/inference}/field/base_field.py | 8 +- .../parsing/inference}/field/dynamic_field.py | 14 +- .../inference}/field/field_confidence.py | 0 .../inference}/field/field_location.py | 2 +- .../inference}/field/inference_fields.py | 4 +- .../parsing/inference}/field/list_field.py | 10 +- .../parsing/inference}/field/object_field.py | 12 +- .../parsing/inference}/field/simple_field.py | 6 +- .../inference}/inference_active_options.py | 2 +- .../parsing/inference}/inference_file.py | 2 +- mindee/v2/parsing/inference/inference_job.py | 15 +- .../parsing/inference}/inference_model.py | 2 +- .../v2 => v2/parsing/inference}/job.py | 6 +- .../parsing/inference}/job_response.py | 6 +- .../parsing/inference}/job_webhook.py | 4 +- .../parsing/inference}/rag_metadata.py | 2 +- .../v2 => v2/parsing/inference}/raw_text.py | 4 +- .../parsing/inference}/raw_text_page.py | 2 +- mindee/v2/product/__init__.py | 8 +- mindee/v2/product/classification/__init__.py | 2 +- .../classification_classifier.py | 4 +- .../classification_inference.py | 4 +- .../classification/classification_response.py | 4 +- .../classification/classification_result.py | 2 +- .../product/classification/param/__init__.py | 5 + .../{ => param}/classification_parameters.py | 2 +- mindee/v2/product/crop/__init__.py | 2 +- mindee/v2/product/crop/crop_box.py | 8 +- mindee/v2/product/crop/crop_inference.py | 4 +- mindee/v2/product/crop/crop_response.py | 4 +- mindee/v2/product/crop/crop_result.py | 2 +- mindee/v2/product/crop/params/__init__.py | 3 + .../crop/{ => params}/crop_parameters.py | 2 +- mindee/v2/product/extraction/__init__.py | 19 +++ .../v2 => v2/product/extraction}/inference.py | 8 +- .../product/extraction}/inference_response.py | 6 +- .../product/extraction}/inference_result.py | 8 +- .../v2/product/extraction/params/__init__.py | 13 ++ .../product/extraction/params/data_schema.py | 20 +++ .../extraction/params/data_schema_field.py | 31 ++++ .../extraction/params/data_schema_replace.py | 21 +++ .../extraction/params/inference_parameters.py | 63 ++++++++ .../extraction/params/string_data_class.py | 17 +++ mindee/v2/product/ocr/__init__.py | 2 +- mindee/v2/product/ocr/ocr_inference.py | 4 +- mindee/v2/product/ocr/ocr_page.py | 2 +- mindee/v2/product/ocr/ocr_response.py | 4 +- mindee/v2/product/ocr/ocr_result.py | 2 +- mindee/v2/product/ocr/params/__init__.py | 3 + .../ocr/{ => params}/ocr_parameters.py | 2 +- mindee/v2/product/split/__init__.py | 2 +- mindee/v2/product/split/params/__init__.py | 3 + .../split/{ => params}/split_parameters.py | 2 +- mindee/v2/product/split/split_inference.py | 4 +- mindee/v2/product/split/split_range.py | 4 +- mindee/v2/product/split/split_response.py | 4 +- mindee/v2/product/split/split_result.py | 2 +- tests/v1/api/test_async_response.py | 8 +- tests/v1/api/test_feedback_response.py | 2 +- tests/v1/api/test_response.py | 26 ++-- tests/v1/extraction/test_image_extractor.py | 2 +- .../test_invoice_splitter_auto_extraction.py | 8 +- .../test_multi_receipts_extractor.py | 2 +- tests/v1/extraction/test_pdf_extractor.py | 6 +- tests/v1/extras/test_extras_integration.py | 6 +- tests/v1/extras/test_full_text_ocr.py | 4 +- .../test_url_input_source_integration.py | 4 +- tests/v1/mindee_http/test_error.py | 3 +- tests/v1/parsing/common/test_ocr.py | 2 +- tests/v1/parsing/common/test_orientation.py | 2 +- tests/v1/parsing/standard/test_amount.py | 2 +- tests/v1/parsing/standard/test_date.py | 2 +- tests/v1/parsing/standard/test_field.py | 6 +- tests/v1/parsing/standard/test_locale.py | 2 +- .../parsing/standard/test_payment_details.py | 2 +- tests/v1/parsing/standard/test_position.py | 2 +- tests/v1/parsing/standard/test_string.py | 2 +- tests/v1/parsing/standard/test_tax.py | 2 +- .../barcode_reader/test_barcode_reader_v1.py | 8 +- .../test_barcode_reader_v1_regression.py | 4 +- tests/v1/product/cropper/test_cropper_v1.py | 10 +- .../cropper/test_cropper_v1_regression.py | 4 +- tests/v1/product/custom/test_custom_v1.py | 14 +- .../custom/test_custom_v1_line_items.py | 8 +- tests/v1/product/custom/test_custom_v1_v2.py | 14 +- .../test_financial_document_v1.py | 10 +- .../test_financial_document_v1_regression.py | 6 +- .../test_bank_account_details_v1.py | 8 +- ...test_bank_account_details_v1_regression.py | 4 +- .../test_bank_account_details_v2.py | 8 +- ...test_bank_account_details_v2_regression.py | 4 +- .../fr/carte_grise/test_carte_grise_v1.py | 8 +- .../test_carte_grise_v1_regression.py | 4 +- .../v1/product/fr/id_card/test_id_card_v1.py | 10 +- .../fr/id_card/test_id_card_v1_regression.py | 4 +- .../v1/product/fr/id_card/test_id_card_v2.py | 10 +- .../fr/id_card/test_id_card_v2_regression.py | 4 +- .../v1/product/generated/test_generated_v1.py | 18 +-- .../test_international_id_v2.py | 8 +- tests/v1/product/invoice/test_invoice_v4.py | 8 +- .../invoice/test_invoice_v4_regression.py | 4 +- .../test_invoice_splitter_v1.py | 8 +- .../test_invoice_splitter_v1_regression.py | 4 +- .../test_multi_receipts_detector_v1.py | 8 +- ...t_multi_receipts_detector_v1_regression.py | 4 +- tests/v1/product/passport/test_passport_v1.py | 8 +- .../passport/test_passport_v1_regression.py | 4 +- tests/v1/product/receipt/test_receipt_v5.py | 8 +- .../receipt/test_receipt_v5_regression.py | 4 +- .../us/bank_check/test_bank_check_v1.py | 10 +- .../test_bank_check_v1_regression.py | 4 +- tests/v1/test_client.py | 18 ++- tests/v1/workflows/test_workflow.py | 4 +- .../v1/workflows/test_workflow_integration.py | 6 +- .../test_crop_operation_integration.py | 6 +- .../test_split_operation_integration.py | 4 +- tests/v2/input/test_inference_parameters.py | 8 +- tests/v2/parsing/test_job_response.py | 3 +- .../test_classification_integration.py | 11 +- .../v2/product/crop/test_crop_integration.py | 9 +- .../extraction/test_extraction_response.py | 20 +-- tests/v2/product/ocr/test_ocr_integration.py | 9 +- .../product/split/test_split_integration.py | 9 +- tests/v2/test_base_classes.py | 10 +- tests/v2/test_client.py | 21 +-- tests/v2/test_client_integration.py | 31 ++-- 311 files changed, 1444 insertions(+), 1378 deletions(-) create mode 100644 mindee/error/v2/__init__.py rename mindee/error/{ => v2}/mindee_http_error_v2.py (93%) delete mode 100644 mindee/input/inference_parameters.py delete mode 100644 mindee/input/sources/input_type.py rename mindee/parsing/{v2 => common}/common_response.py (100%) delete mode 100644 mindee/parsing/common/extras/__init__.py delete mode 100644 mindee/parsing/common/ocr/__init__.py delete mode 100644 mindee/parsing/custom/__init__.py delete mode 100644 mindee/parsing/standard/__init__.py delete mode 100644 mindee/parsing/v2/__init__.py delete mode 100644 mindee/parsing/v2/base_inference.py delete mode 100644 mindee/parsing/v2/base_response.py delete mode 100644 mindee/parsing/v2/field/__init__.py delete mode 100644 mindee/parsing/v2/inference_job.py delete mode 100644 mindee/product/__init__.py delete mode 100644 mindee/product/barcode_reader/__init__.py delete mode 100644 mindee/product/cropper/__init__.py delete mode 100644 mindee/product/financial_document/__init__.py delete mode 100644 mindee/product/fr/__init__.py delete mode 100644 mindee/product/fr/bank_account_details/__init__.py delete mode 100644 mindee/product/fr/carte_grise/__init__.py delete mode 100644 mindee/product/fr/id_card/__init__.py delete mode 100644 mindee/product/international_id/__init__.py delete mode 100644 mindee/product/invoice/__init__.py delete mode 100644 mindee/product/invoice_splitter/__init__.py delete mode 100644 mindee/product/multi_receipts_detector/__init__.py delete mode 100644 mindee/product/passport/__init__.py delete mode 100644 mindee/product/receipt/__init__.py delete mode 100644 mindee/product/us/__init__.py delete mode 100644 mindee/product/us/bank_check/__init__.py create mode 100644 mindee/v1/__init__.py rename mindee/{ => v1}/client.py (98%) create mode 100644 mindee/v1/input/__init__.py rename mindee/{ => v1}/input/workflow_options.py (94%) create mode 100644 mindee/v1/parsing/__init__.py create mode 100644 mindee/v1/parsing/common/__init__.py rename mindee/{ => v1}/parsing/common/api_request.py (100%) rename mindee/{ => v1}/parsing/common/api_response.py (93%) rename mindee/{ => v1}/parsing/common/async_predict_response.py (81%) rename mindee/{ => v1}/parsing/common/document.py (90%) rename mindee/{ => v1}/parsing/common/execution.py (88%) rename mindee/{ => v1}/parsing/common/execution_file.py (100%) rename mindee/{ => v1}/parsing/common/execution_priority.py (100%) create mode 100644 mindee/v1/parsing/common/extras/__init__.py rename mindee/{ => v1}/parsing/common/extras/cropper_extra.py (92%) rename mindee/{ => v1}/parsing/common/extras/extras.py (88%) rename mindee/{ => v1}/parsing/common/extras/full_text_ocr_extra.py (100%) rename mindee/{ => v1}/parsing/common/extras/rag_extra.py (100%) rename mindee/{ => v1}/parsing/common/feedback_response.py (85%) rename mindee/{ => v1}/parsing/common/inference.py (92%) rename mindee/{ => v1}/parsing/common/job.py (100%) create mode 100644 mindee/v1/parsing/common/ocr/__init__.py rename mindee/{ => v1}/parsing/common/ocr/mvision_v1.py (88%) rename mindee/{ => v1}/parsing/common/ocr/ocr.py (85%) rename mindee/{ => v1}/parsing/common/ocr/ocr_line.py (87%) rename mindee/{ => v1}/parsing/common/ocr/ocr_page.py (95%) rename mindee/{ => v1}/parsing/common/ocr/ocr_word.py (88%) rename mindee/{ => v1}/parsing/common/orientation.py (95%) rename mindee/{ => v1}/parsing/common/page.py (88%) rename mindee/{ => v1}/parsing/common/predict_response.py (80%) rename mindee/{ => v1}/parsing/common/prediction.py (100%) rename mindee/{ => v1}/parsing/common/product.py (100%) rename mindee/{ => v1}/parsing/common/workflow_response.py (70%) create mode 100644 mindee/v1/parsing/custom/__init__.py rename mindee/{ => v1}/parsing/custom/classification.py (87%) rename mindee/{ => v1}/parsing/custom/line_items.py (98%) rename mindee/{ => v1}/parsing/custom/list.py (94%) rename mindee/{ => v1}/parsing/generated/__init__.py (52%) rename mindee/{ => v1}/parsing/generated/generated_list.py (90%) rename mindee/{ => v1}/parsing/generated/generated_object.py (95%) create mode 100644 mindee/v1/parsing/standard/__init__.py rename mindee/{ => v1}/parsing/standard/address.py (94%) rename mindee/{ => v1}/parsing/standard/amount.py (88%) rename mindee/{ => v1}/parsing/standard/base.py (99%) rename mindee/{ => v1}/parsing/standard/boolean.py (88%) rename mindee/{ => v1}/parsing/standard/classification.py (88%) rename mindee/{ => v1}/parsing/standard/company_registration.py (87%) rename mindee/{ => v1}/parsing/standard/date.py (93%) rename mindee/{ => v1}/parsing/standard/locale.py (94%) rename mindee/{ => v1}/parsing/standard/payment_details.py (96%) rename mindee/{ => v1}/parsing/standard/position.py (96%) rename mindee/{ => v1}/parsing/standard/tax.py (96%) rename mindee/{ => v1}/parsing/standard/text.py (89%) create mode 100644 mindee/v1/product/__init__.py create mode 100644 mindee/v1/product/barcode_reader/__init__.py rename mindee/{ => v1}/product/barcode_reader/barcode_reader_v1.py (86%) rename mindee/{ => v1}/product/barcode_reader/barcode_reader_v1_document.py (92%) create mode 100644 mindee/v1/product/cropper/__init__.py rename mindee/{ => v1}/product/cropper/cropper_v1.py (82%) rename mindee/{ => v1}/product/cropper/cropper_v1_document.py (69%) rename mindee/{ => v1}/product/cropper/cropper_v1_page.py (90%) rename mindee/{ => v1}/product/custom/__init__.py (72%) rename mindee/{ => v1}/product/custom/custom_v1.py (78%) rename mindee/{ => v1}/product/custom/custom_v1_document.py (88%) rename mindee/{ => v1}/product/custom/custom_v1_page.py (89%) create mode 100644 mindee/v1/product/financial_document/__init__.py rename mindee/{ => v1}/product/financial_document/financial_document_v1.py (85%) rename mindee/{ => v1}/product/financial_document/financial_document_v1_document.py (94%) rename mindee/{ => v1}/product/financial_document/financial_document_v1_line_item.py (99%) create mode 100644 mindee/v1/product/fr/__init__.py create mode 100644 mindee/v1/product/fr/bank_account_details/__init__.py rename mindee/{ => v1}/product/fr/bank_account_details/bank_account_details_v1.py (85%) rename mindee/{ => v1}/product/fr/bank_account_details/bank_account_details_v1_document.py (92%) rename mindee/{ => v1}/product/fr/bank_account_details/bank_account_details_v2.py (85%) rename mindee/{ => v1}/product/fr/bank_account_details/bank_account_details_v2_bban.py (97%) rename mindee/{ => v1}/product/fr/bank_account_details/bank_account_details_v2_document.py (90%) create mode 100644 mindee/v1/product/fr/carte_grise/__init__.py rename mindee/{ => v1}/product/fr/carte_grise/carte_grise_v1.py (86%) rename mindee/{ => v1}/product/fr/carte_grise/carte_grise_v1_document.py (98%) create mode 100644 mindee/v1/product/fr/id_card/__init__.py rename mindee/{ => v1}/product/fr/id_card/id_card_v1.py (82%) rename mindee/{ => v1}/product/fr/id_card/id_card_v1_document.py (95%) rename mindee/{ => v1}/product/fr/id_card/id_card_v1_page.py (88%) rename mindee/{ => v1}/product/fr/id_card/id_card_v2.py (82%) rename mindee/{ => v1}/product/fr/id_card/id_card_v2_document.py (96%) rename mindee/{ => v1}/product/fr/id_card/id_card_v2_page.py (90%) rename mindee/{ => v1}/product/generated/__init__.py (73%) rename mindee/{ => v1}/product/generated/generated_v1.py (78%) rename mindee/{ => v1}/product/generated/generated_v1_document.py (84%) rename mindee/{ => v1}/product/generated/generated_v1_page.py (85%) rename mindee/{ => v1}/product/generated/generated_v1_prediction.py (92%) create mode 100644 mindee/v1/product/international_id/__init__.py rename mindee/{ => v1}/product/international_id/international_id_v2.py (86%) rename mindee/{ => v1}/product/international_id/international_id_v2_document.py (95%) create mode 100644 mindee/v1/product/invoice/__init__.py rename mindee/{ => v1}/product/invoice/invoice_v4.py (86%) rename mindee/{ => v1}/product/invoice/invoice_v4_document.py (93%) rename mindee/{ => v1}/product/invoice/invoice_v4_line_item.py (99%) create mode 100644 mindee/v1/product/invoice_splitter/__init__.py rename mindee/{ => v1}/product/invoice_splitter/invoice_splitter_v1.py (86%) rename mindee/{ => v1}/product/invoice_splitter/invoice_splitter_v1_document.py (93%) rename mindee/{ => v1}/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py (95%) create mode 100644 mindee/v1/product/multi_receipts_detector/__init__.py rename mindee/{ => v1}/product/multi_receipts_detector/multi_receipts_detector_v1.py (85%) rename mindee/{ => v1}/product/multi_receipts_detector/multi_receipts_detector_v1_document.py (90%) create mode 100644 mindee/v1/product/passport/__init__.py rename mindee/{ => v1}/product/passport/passport_v1.py (86%) rename mindee/{ => v1}/product/passport/passport_v1_document.py (95%) create mode 100644 mindee/v1/product/receipt/__init__.py rename mindee/{ => v1}/product/receipt/receipt_v5.py (86%) rename mindee/{ => v1}/product/receipt/receipt_v5_document.py (91%) rename mindee/{ => v1}/product/receipt/receipt_v5_line_item.py (98%) create mode 100644 mindee/v1/product/us/__init__.py create mode 100644 mindee/v1/product/us/bank_check/__init__.py rename mindee/{ => v1}/product/us/bank_check/bank_check_v1.py (81%) rename mindee/{ => v1}/product/us/bank_check/bank_check_v1_document.py (90%) rename mindee/{ => v1}/product/us/bank_check/bank_check_v1_page.py (91%) rename mindee/{client_v2.py => v2/client.py} (92%) create mode 100644 mindee/v2/input/__init__.py rename mindee/{ => v2}/input/base_parameters.py (100%) rename mindee/{parsing/v2 => v2/parsing/inference}/error_item.py (87%) rename mindee/{parsing/v2 => v2/parsing/inference}/error_response.py (90%) create mode 100644 mindee/v2/parsing/inference/field/__init__.py rename mindee/{parsing/v2 => v2/parsing/inference}/field/base_field.py (76%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/dynamic_field.py (74%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/field_confidence.py (100%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/field_location.py (93%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/inference_fields.py (90%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/list_field.py (83%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/object_field.py (92%) rename mindee/{parsing/v2 => v2/parsing/inference}/field/simple_field.py (78%) rename mindee/{parsing/v2 => v2/parsing/inference}/inference_active_options.py (97%) rename mindee/{parsing/v2 => v2/parsing/inference}/inference_file.py (93%) rename mindee/{parsing/v2 => v2/parsing/inference}/inference_model.py (82%) rename mindee/{parsing/v2 => v2/parsing/inference}/job.py (91%) rename mindee/{parsing/v2 => v2/parsing/inference}/job_response.py (64%) rename mindee/{parsing/v2 => v2/parsing/inference}/job_webhook.py (89%) rename mindee/{parsing/v2 => v2/parsing/inference}/rag_metadata.py (82%) rename mindee/{parsing/v2 => v2/parsing/inference}/raw_text.py (82%) rename mindee/{parsing/v2 => v2/parsing/inference}/raw_text_page.py (79%) create mode 100644 mindee/v2/product/classification/param/__init__.py rename mindee/v2/product/classification/{ => param}/classification_parameters.py (75%) create mode 100644 mindee/v2/product/crop/params/__init__.py rename mindee/v2/product/crop/{ => params}/crop_parameters.py (71%) create mode 100644 mindee/v2/product/extraction/__init__.py rename mindee/{parsing/v2 => v2/product/extraction}/inference.py (72%) rename mindee/{parsing/v2 => v2/product/extraction}/inference_response.py (77%) rename mindee/{parsing/v2 => v2/product/extraction}/inference_result.py (76%) create mode 100644 mindee/v2/product/extraction/params/__init__.py create mode 100644 mindee/v2/product/extraction/params/data_schema.py create mode 100644 mindee/v2/product/extraction/params/data_schema_field.py create mode 100644 mindee/v2/product/extraction/params/data_schema_replace.py create mode 100644 mindee/v2/product/extraction/params/inference_parameters.py create mode 100644 mindee/v2/product/extraction/params/string_data_class.py create mode 100644 mindee/v2/product/ocr/params/__init__.py rename mindee/v2/product/ocr/{ => params}/ocr_parameters.py (70%) create mode 100644 mindee/v2/product/split/params/__init__.py rename mindee/v2/product/split/{ => params}/split_parameters.py (71%) diff --git a/examples/auto_invoice_splitter_extraction_example.py b/examples/auto_invoice_splitter_extraction_example.py index 902e648e..714f5032 100644 --- a/examples/auto_invoice_splitter_extraction_example.py +++ b/examples/auto_invoice_splitter_extraction_example.py @@ -1,8 +1,8 @@ -from mindee import Client +from mindee.v1.client import Client from mindee.extraction.pdf_extractor import PdfExtractor from mindee.input.sources.path_input import PathInput -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 mindee_client = Client(api_key="my-api-key") # mindee_client = Client() # Optionally, set from env. diff --git a/examples/auto_multi_receipts_extraction_example.py b/examples/auto_multi_receipts_extraction_example.py index 2906a155..4b83b452 100644 --- a/examples/auto_multi_receipts_extraction_example.py +++ b/examples/auto_multi_receipts_extraction_example.py @@ -1,4 +1,5 @@ -from mindee import Client, product +from mindee.v1.client import Client +from mindee.v1 import product from mindee.extraction.multi_receipts_extractor.multi_receipts_extractor import ( extract_receipts, ) diff --git a/examples/custom_line_items_reconstruction.py b/examples/custom_line_items_reconstruction.py index c43d702d..b7490c0d 100644 --- a/examples/custom_line_items_reconstruction.py +++ b/examples/custom_line_items_reconstruction.py @@ -1,7 +1,8 @@ import os -from mindee import Client, product -from mindee.parsing.common.predict_response import PredictResponse +from mindee.v1.client import Client +from mindee.v1 import product +from mindee.v1.parsing.common import PredictResponse CUSTOM_ENDPOINT_NAME = os.getenv("CUSTOM_ENDPOINT_NAME", "my-endpoint-name") CUSTOM_ACCOUNT_NAME = os.getenv("CUSTOM_ACCOUNT_NAME", "my-account-name") diff --git a/examples/display_cropping.py b/examples/display_cropping.py index 1e931859..055e1103 100644 --- a/examples/display_cropping.py +++ b/examples/display_cropping.py @@ -15,8 +15,9 @@ import cv2 import numpy as np -from mindee import Client, product -from mindee.parsing.common.predict_response import PredictResponse +from mindee.v1.client import Client +from mindee.v1 import product +from mindee.v1.parsing.common import PredictResponse def relative_to_pixel_pos(polygon, image_h: int, image_w: int) -> List[Tuple[int, int]]: diff --git a/mindee/__init__.py b/mindee/__init__.py index 0f8bf1ae..330cdf0d 100644 --- a/mindee/__init__.py +++ b/mindee/__init__.py @@ -1,13 +1,6 @@ -from mindee import product -from mindee.client import Client -from mindee.client_v2 import ClientV2 +from mindee.v1 import product from mindee.input import LocalResponse, PageOptions, PollingOptions -from mindee.input.inference_parameters import ( - DataSchema, - DataSchemaField, - DataSchemaReplace, - InferenceParameters, -) +from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters from mindee.input.sources import ( Base64Input, BytesInput, @@ -15,45 +8,30 @@ PathInput, UrlInputSource, ) -from mindee.parsing.common.api_response import ApiResponse -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.parsing.common.feedback_response import FeedbackResponse -from mindee.parsing.common.job import Job -from mindee.parsing.common.predict_response import PredictResponse -from mindee.parsing.common.workflow_response import WorkflowResponse -from mindee.parsing.v2 import InferenceResponse, JobResponse -from mindee.v2.product.classification.classification_parameters import ( +from mindee.v2.parsing import InferenceResponse, JobResponse +from mindee.v2.product.classification.param.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( ClassificationResponse, ) -from mindee.v2.product.crop.crop_parameters import CropParameters +from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse -from mindee.v2.product.ocr.ocr_parameters import OCRParameters +from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse -from mindee.v2.product.split.split_parameters import SplitParameters +from mindee.v2.product.split.params.split_parameters import SplitParameters from mindee.v2.product.split.split_response import SplitResponse __all__ = [ - "ApiResponse", - "AsyncPredictResponse", "Base64Input", "BytesInput", "ClassificationResponse", "ClassificationParameters", - "Client", - "ClientV2", "CropParameters", "CropResponse", - "DataSchema", - "DataSchemaField", - "DataSchemaReplace", - "FeedbackResponse", "FileInput", "InferenceParameters", "InferenceResponse", - "Job", "JobResponse", "LocalResponse", "OCRParameters", @@ -61,10 +39,8 @@ "PageOptions", "PathInput", "PollingOptions", - "PredictResponse", "SplitParameters", "SplitResponse", "UrlInputSource", - "WorkflowResponse", "product", ] diff --git a/mindee/commands/cli_parser.py b/mindee/commands/cli_parser.py index 0c7f9859..0479e8a2 100644 --- a/mindee/commands/cli_parser.py +++ b/mindee/commands/cli_parser.py @@ -2,15 +2,15 @@ from argparse import ArgumentParser, Namespace from typing import Optional, Type, Union -from mindee.client import Client, Endpoint +from mindee.v1.client import Client, Endpoint from mindee.commands.cli_products import PRODUCTS, CommandConfig from mindee.error.mindee_error import MindeeClientError from mindee.input.page_options import PageOptions from mindee.input.sources import LocalInputSource, UrlInputSource -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.parsing.common.document import Document, serialize_for_json -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.predict_response import PredictResponse +from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse +from mindee.v1.parsing.common import Document, serialize_for_json +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common import PredictResponse class MindeeArgumentParser(ArgumentParser): diff --git a/mindee/commands/cli_products.py b/mindee/commands/cli_products.py index 7679899d..5216e3de 100644 --- a/mindee/commands/cli_products.py +++ b/mindee/commands/cli_products.py @@ -1,8 +1,8 @@ from dataclasses import dataclass from typing import Dict, Generic, Type -from mindee import product -from mindee.parsing.common import TypeInference +from mindee.v1 import product +from mindee.v1.parsing.common import TypeInference @dataclass diff --git a/mindee/error/mindee_http_error.py b/mindee/error/mindee_http_error.py index 131a6538..bff2c5d5 100644 --- a/mindee/error/mindee_http_error.py +++ b/mindee/error/mindee_http_error.py @@ -1,7 +1,7 @@ from typing import Optional, Union from mindee.error.mindee_error import MindeeError -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class MindeeHTTPError(RuntimeError): diff --git a/mindee/error/v2/__init__.py b/mindee/error/v2/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/error/mindee_http_error_v2.py b/mindee/error/v2/mindee_http_error_v2.py similarity index 93% rename from mindee/error/mindee_http_error_v2.py rename to mindee/error/v2/mindee_http_error_v2.py index a6be90f3..0d4b73ad 100644 --- a/mindee/error/mindee_http_error_v2.py +++ b/mindee/error/v2/mindee_http_error_v2.py @@ -1,8 +1,8 @@ import json from typing import List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2 import ErrorItem, ErrorResponse +from mindee.parsing.common import StringDict +from mindee.v2.parsing import ErrorItem, ErrorResponse class MindeeHTTPErrorV2(RuntimeError, ErrorResponse): diff --git a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py index 5d42b7c7..a5256d9d 100644 --- a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py +++ b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py @@ -6,7 +6,7 @@ extract_multiple_images_from_source, ) from mindee.input.sources.local_input_source import LocalInputSource -from mindee.parsing.common.inference import Inference +from mindee.v1.parsing.common.inference import Inference def extract_receipts( diff --git a/mindee/extraction/pdf_extractor/pdf_extractor.py b/mindee/extraction/pdf_extractor/pdf_extractor.py index 7f9baf7f..40fe60a1 100644 --- a/mindee/extraction/pdf_extractor/pdf_extractor.py +++ b/mindee/extraction/pdf_extractor/pdf_extractor.py @@ -8,7 +8,7 @@ from mindee.error.mindee_error import MindeeError from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf from mindee.input.sources.local_input_source import LocalInputSource -from mindee.product.invoice_splitter import InvoiceSplitterV1InvoicePageGroup +from mindee.v1.product.invoice_splitter import InvoiceSplitterV1InvoicePageGroup class PdfExtractor: diff --git a/mindee/input/__init__.py b/mindee/input/__init__.py index 1afea578..5ba4687f 100644 --- a/mindee/input/__init__.py +++ b/mindee/input/__init__.py @@ -1,24 +1,18 @@ from mindee.input.local_response import LocalResponse -from mindee.input.base_parameters import BaseParameters -from mindee.input.inference_parameters import InferenceParameters from mindee.input.page_options import PageOptions from mindee.input.polling_options import PollingOptions from mindee.input.sources.base_64_input import Base64Input from mindee.input.sources.bytes_input import BytesInput from mindee.input.sources.file_input import FileInput -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.path_input import PathInput from mindee.input.sources.url_input_source import UrlInputSource -from mindee.input.workflow_options import WorkflowOptions +from mindee.v1.input.workflow_options import WorkflowOptions __all__ = [ "Base64Input", - "BaseParameters", "BytesInput", "FileInput", - "InputType", - "InferenceParameters", "LocalInputSource", "LocalResponse", "PageOptions", diff --git a/mindee/input/inference_parameters.py b/mindee/input/inference_parameters.py deleted file mode 100644 index 3c2f13b3..00000000 --- a/mindee/input/inference_parameters.py +++ /dev/null @@ -1,134 +0,0 @@ -import json -from dataclasses import dataclass, asdict -from typing import Dict, List, Optional, Union - -from mindee.input.base_parameters import BaseParameters - - -@dataclass -class StringDataClass: - """Base class for dataclasses that can be serialized to JSON.""" - - @staticmethod - def _no_none_values(x) -> dict: - """Don't include None values in the JSON output.""" - return {k: v for (k, v) in x if v is not None} - - def __str__(self) -> str: - return json.dumps( - asdict(self, dict_factory=self._no_none_values), indent=None, sort_keys=True - ) - - -@dataclass -class DataSchemaField(StringDataClass): - """A field in the data schema.""" - - title: str - """Display name for the field, also impacts inference results.""" - name: str - """Name of the field in the data schema.""" - is_array: bool - """Whether this field can contain multiple values.""" - type: str - """Data type of the field.""" - classification_values: Optional[List[str]] = None - """Allowed values when type is `classification`. Leave empty for other types.""" - unique_values: Optional[bool] = None - """ - Whether to remove duplicate values in the array. - Only applicable if `is_array` is True. - """ - description: Optional[str] = None - """Detailed description of what this field represents.""" - guidelines: Optional[str] = None - """Optional extraction guidelines.""" - nested_fields: Optional[dict] = None - """Subfields when type is `nested_object`. Leave empty for other types.""" - - -@dataclass -class DataSchemaReplace(StringDataClass): - """The structure to completely replace the data schema of the model.""" - - fields: List[Union[DataSchemaField, dict]] - - def __post_init__(self) -> None: - if not self.fields: - raise ValueError("Data schema replacement fields cannot be empty.") - if isinstance(self.fields[0], dict): - self.fields = [ - DataSchemaField(**field) # type: ignore[arg-type] - for field in self.fields - ] - - -@dataclass -class DataSchema(StringDataClass): - """Modify the Data Schema.""" - - replace: Optional[Union[DataSchemaReplace, dict, str]] = None - """If set, completely replaces the data schema of the model.""" - - def __post_init__(self) -> None: - if isinstance(self.replace, dict): - self.replace = DataSchemaReplace(**self.replace) - elif isinstance(self.replace, str): - self.replace = DataSchemaReplace(**json.loads(self.replace)) - - -@dataclass -class InferenceParameters(BaseParameters): - """Inference parameters to set when sending a file.""" - - rag: Optional[bool] = None - """Enhance extraction accuracy with Retrieval-Augmented Generation.""" - raw_text: Optional[bool] = None - """Extract the full text content from the document as strings, and fill the ``raw_text`` attribute.""" - polygon: Optional[bool] = None - """Calculate bounding box polygons for all fields, and fill their ``locations`` attribute.""" - confidence: Optional[bool] = None - """ - Boost the precision and accuracy of all extractions. - Calculate confidence scores for all fields, and fill their ``confidence`` attribute. - """ - text_context: Optional[str] = None - """ - Additional text context used by the model during inference. - Not recommended, for specific use only. - """ - data_schema: Optional[Union[DataSchema, str, dict]] = None - """ - Dynamic changes to the data schema of the model for this inference. - Not recommended, for specific use only. - """ - - _slug: str = "inferences" - """Slug of the endpoint.""" - - def __post_init__(self): - if isinstance(self.data_schema, str): - self.data_schema = DataSchema(**json.loads(self.data_schema)) - elif isinstance(self.data_schema, dict): - self.data_schema = DataSchema(**self.data_schema) - - def get_form_data(self) -> Dict[str, Union[str, List[str]]]: - """ - Return the parameters as a config dictionary. - - :return: A dict of parameters. - """ - data = super().get_form_data() - if self.data_schema is not None: - data["data_schema"] = str(self.data_schema) - if self.rag is not None: - data["rag"] = data["rag"] = str(self.rag).lower() - if self.raw_text is not None: - data["raw_text"] = data["raw_text"] = str(self.raw_text).lower() - if self.polygon is not None: - data["polygon"] = data["polygon"] = str(self.polygon).lower() - if self.confidence is not None: - data["confidence"] = data["confidence"] = str(self.confidence).lower() - if self.text_context is not None: - data["text_context"] = self.text_context - return data diff --git a/mindee/input/local_response.py b/mindee/input/local_response.py index c8a27fbb..4050ef43 100644 --- a/mindee/input/local_response.py +++ b/mindee/input/local_response.py @@ -7,7 +7,7 @@ from typing import Any, BinaryIO, Dict, Type, TypeVar, Union from mindee.error.mindee_error import MindeeError -from mindee.parsing.v2.common_response import CommonResponse +from mindee.parsing.common.common_response import CommonResponse class LocalResponse: diff --git a/mindee/input/sources/__init__.py b/mindee/input/sources/__init__.py index 9d3bab1d..9b4d5bbf 100644 --- a/mindee/input/sources/__init__.py +++ b/mindee/input/sources/__init__.py @@ -1,7 +1,6 @@ from mindee.input.sources.base_64_input import Base64Input from mindee.input.sources.bytes_input import BytesInput from mindee.input.sources.file_input import FileInput -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.path_input import PathInput from mindee.input.sources.url_input_source import UrlInputSource @@ -10,7 +9,6 @@ "Base64Input", "BytesInput", "FileInput", - "InputType", "LocalInputSource", "PathInput", "UrlInputSource", diff --git a/mindee/input/sources/base_64_input.py b/mindee/input/sources/base_64_input.py index b656255b..e1f0c892 100644 --- a/mindee/input/sources/base_64_input.py +++ b/mindee/input/sources/base_64_input.py @@ -1,7 +1,6 @@ import base64 import io -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource @@ -18,4 +17,4 @@ def __init__(self, base64_string: str, filename: str) -> None: self.file_object = io.BytesIO(base64.standard_b64decode(base64_string)) self.filename = filename self.filepath = None - super().__init__(input_type=InputType.BASE64) + super().__init__() diff --git a/mindee/input/sources/bytes_input.py b/mindee/input/sources/bytes_input.py index 1f2b63fd..afbd3149 100644 --- a/mindee/input/sources/bytes_input.py +++ b/mindee/input/sources/bytes_input.py @@ -1,6 +1,5 @@ import io -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource @@ -17,4 +16,4 @@ def __init__(self, raw_bytes: bytes, filename: str) -> None: self.file_object = io.BytesIO(raw_bytes) self.filename = filename self.filepath = None - super().__init__(input_type=InputType.BYTES) + super().__init__() diff --git a/mindee/input/sources/file_input.py b/mindee/input/sources/file_input.py index 2623a4f3..8a3cbaef 100644 --- a/mindee/input/sources/file_input.py +++ b/mindee/input/sources/file_input.py @@ -1,7 +1,6 @@ import os from typing import BinaryIO -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource @@ -21,4 +20,4 @@ def __init__(self, file: BinaryIO) -> None: self.file_object = file self.filename = os.path.basename(file.name) self.filepath = file.name - super().__init__(input_type=InputType.FILE) + super().__init__() diff --git a/mindee/input/sources/input_type.py b/mindee/input/sources/input_type.py deleted file mode 100644 index 6daf1131..00000000 --- a/mindee/input/sources/input_type.py +++ /dev/null @@ -1,11 +0,0 @@ -from enum import Enum - - -class InputType(Enum): - """The input type, for internal use.""" - - FILE = "file" - BASE64 = "base64" - BYTES = "bytes" - PATH = "path" - URL = "url" diff --git a/mindee/input/sources/local_input_source.py b/mindee/input/sources/local_input_source.py index c015239b..9dd3a4b2 100644 --- a/mindee/input/sources/local_input_source.py +++ b/mindee/input/sources/local_input_source.py @@ -9,7 +9,6 @@ from mindee.error.mindee_error import MindeeError, MindeeSourceError from mindee.image_operations.image_compressor import compress_image from mindee.input.page_options import KEEP_ONLY, REMOVE, PageOptions -from mindee.input.sources.input_type import InputType from mindee.logger import logger from mindee.pdf.pdf_compressor import compress_pdf from mindee.pdf.pdf_utils import has_source_text @@ -34,15 +33,18 @@ class LocalInputSource: file_object: BinaryIO filename: str file_mimetype: str - input_type: InputType filepath: Optional[str] _page_count: Optional[int] = None - def __init__(self, input_type: InputType): - self.input_type = input_type + def __init__(self) -> None: + """ + Initialize a LocalInputSource object. + """ self._check_mimetype() - logger.debug("Loaded new input '%s' from %s", self.filename, self.input_type) + logger.debug( + "Loaded new input '%s' from %s", self.filename, {type(self).__name__} + ) def _check_mimetype(self) -> None: file_mimetype = mimetypes.guess_type(self.filename)[0] diff --git a/mindee/input/sources/path_input.py b/mindee/input/sources/path_input.py index 2e7fc736..4da49e3f 100644 --- a/mindee/input/sources/path_input.py +++ b/mindee/input/sources/path_input.py @@ -2,7 +2,6 @@ from pathlib import Path from typing import Union -from mindee.input.sources.input_type import InputType from mindee.input.sources.local_input_source import LocalInputSource @@ -18,4 +17,4 @@ def __init__(self, filepath: Union[Path, str]) -> None: self.file_object = open(filepath, "rb") # pylint: disable=consider-using-with self.filename = os.path.basename(filepath) self.filepath = str(filepath) - super().__init__(input_type=InputType.PATH) + super().__init__() diff --git a/mindee/input/sources/url_input_source.py b/mindee/input/sources/url_input_source.py index 0e62573a..8c681bba 100644 --- a/mindee/input/sources/url_input_source.py +++ b/mindee/input/sources/url_input_source.py @@ -10,7 +10,6 @@ from mindee.error.mindee_error import MindeeSourceError from mindee.input.sources.bytes_input import BytesInput -from mindee.input.sources.input_type import InputType from mindee.logger import logger @@ -29,8 +28,6 @@ def __init__(self, url: str) -> None: if not url.lower().startswith("https"): raise MindeeSourceError("URL must be HTTPS") - self.input_type = InputType.URL - logger.debug("URL input: %s", url) self.url = url diff --git a/mindee/mindee_http/endpoint.py b/mindee/mindee_http/endpoint.py index 0275328d..947e3251 100644 --- a/mindee/mindee_http/endpoint.py +++ b/mindee/mindee_http/endpoint.py @@ -8,7 +8,7 @@ from mindee.input.sources.url_input_source import UrlInputSource from mindee.mindee_http.base_endpoint import BaseEndpoint from mindee.mindee_http.mindee_api import MindeeApi -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class Endpoint(BaseEndpoint): diff --git a/mindee/mindee_http/mindee_api_v2.py b/mindee/mindee_http/mindee_api_v2.py index 968bb813..2ca34a10 100644 --- a/mindee/mindee_http/mindee_api_v2.py +++ b/mindee/mindee_http/mindee_api_v2.py @@ -4,7 +4,7 @@ import requests from mindee.error.mindee_error import MindeeApiV2Error -from mindee.input.base_parameters import BaseParameters +from mindee.v2.input.base_parameters import BaseParameters from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.url_input_source import UrlInputSource from mindee.logger import logger diff --git a/mindee/mindee_http/response_validation.py b/mindee/mindee_http/response_validation.py index e261df91..392c452c 100644 --- a/mindee/mindee_http/response_validation.py +++ b/mindee/mindee_http/response_validation.py @@ -2,7 +2,7 @@ import requests -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict def is_valid_sync_response(response: requests.Response) -> bool: diff --git a/mindee/mindee_http/workflow_endpoint.py b/mindee/mindee_http/workflow_endpoint.py index ed437d1e..7a2f05a6 100644 --- a/mindee/mindee_http/workflow_endpoint.py +++ b/mindee/mindee_http/workflow_endpoint.py @@ -4,7 +4,7 @@ from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.url_input_source import UrlInputSource -from mindee.input.workflow_options import WorkflowOptions +from mindee.v1.input.workflow_options import WorkflowOptions from mindee.mindee_http.base_endpoint import BaseEndpoint from mindee.mindee_http.workflow_settings import WorkflowSettings diff --git a/mindee/parsing/__init__.py b/mindee/parsing/__init__.py index 0ac446b4..d5ae915f 100644 --- a/mindee/parsing/__init__.py +++ b/mindee/parsing/__init__.py @@ -1,7 +1,3 @@ -from mindee.parsing import ( - common, - custom, - standard, -) +from mindee.parsing import common -__all__ = ["common", "custom", "standard"] +__all__ = ["common"] diff --git a/mindee/parsing/common/__init__.py b/mindee/parsing/common/__init__.py index dce90dad..b48f6d25 100644 --- a/mindee/parsing/common/__init__.py +++ b/mindee/parsing/common/__init__.py @@ -1,49 +1,15 @@ -from mindee.parsing.common.api_request import ApiRequest -from mindee.parsing.common.api_response import ApiResponse -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.parsing.common.document import Document -from mindee.parsing.common.execution import Execution -from mindee.parsing.common.execution_file import ExecutionFile -from mindee.parsing.common.execution_priority import ExecutionPriority -from mindee.parsing.common.extras import CropperExtra, Extras -from mindee.parsing.common.feedback_response import FeedbackResponse -from mindee.parsing.common.inference import Inference, TypeInference -from mindee.parsing.common.job import Job -from mindee.parsing.common.ocr.mvision_v1 import MVisionV1 -from mindee.parsing.common.ocr.ocr import Ocr -from mindee.parsing.common.orientation import OrientationField -from mindee.parsing.common.page import Page -from mindee.parsing.common.predict_response import PredictResponse -from mindee.parsing.common.prediction import Prediction +from mindee.parsing.common.common_response import CommonResponse +from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import ( clean_out_string, - format_for_display, line_separator, + format_for_display, ) -from mindee.parsing.common.workflow_response import WorkflowResponse __all__ = [ - "ApiRequest", - "ApiResponse", - "AsyncPredictResponse", - "Document", - "Execution", - "ExecutionFile", - "ExecutionPriority", - "CropperExtra", - "Extras", - "FeedbackResponse", - "Inference", - "TypeInference", - "WorkflowResponse", - "line_separator", + "CommonResponse", + "StringDict", "clean_out_string", + "line_separator", "format_for_display", - "Prediction", - "Job", - "OrientationField", - "Page", - "PredictResponse", - "MVisionV1", - "Ocr", ] diff --git a/mindee/parsing/v2/common_response.py b/mindee/parsing/common/common_response.py similarity index 100% rename from mindee/parsing/v2/common_response.py rename to mindee/parsing/common/common_response.py diff --git a/mindee/parsing/common/extras/__init__.py b/mindee/parsing/common/extras/__init__.py deleted file mode 100644 index e6349e99..00000000 --- a/mindee/parsing/common/extras/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from mindee.parsing.common.extras.cropper_extra import CropperExtra -from mindee.parsing.common.extras.extras import Extras - -__all__ = [ - "Extras", - "CropperExtra", -] diff --git a/mindee/parsing/common/ocr/__init__.py b/mindee/parsing/common/ocr/__init__.py deleted file mode 100644 index c8e760ea..00000000 --- a/mindee/parsing/common/ocr/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from mindee.parsing.common.ocr.ocr import Ocr - -__all__ = ["Ocr"] diff --git a/mindee/parsing/custom/__init__.py b/mindee/parsing/custom/__init__.py deleted file mode 100644 index 6b96ca6f..00000000 --- a/mindee/parsing/custom/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from mindee.parsing.custom.classification import ClassificationField -from mindee.parsing.custom.line_items import CustomLine, get_line_items -from mindee.parsing.custom.list import ListField, ListFieldValue - -__all__ = [ - "ClassificationField", - "CustomLine", - "get_line_items", - "ListField", - "ListFieldValue", -] diff --git a/mindee/parsing/standard/__init__.py b/mindee/parsing/standard/__init__.py deleted file mode 100644 index 74993467..00000000 --- a/mindee/parsing/standard/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -from mindee.parsing.standard.address import AddressField -from mindee.parsing.standard.amount import AmountField -from mindee.parsing.standard.base import ( - BaseField, - FieldConfidenceMixin, - FieldPositionMixin, - bool_to_string, - float_to_string, - int_to_string, - to_opt_bool, - to_opt_float, - to_opt_int, -) -from mindee.parsing.standard.boolean import BooleanField -from mindee.parsing.standard.classification import ClassificationField -from mindee.parsing.standard.company_registration import CompanyRegistrationField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.locale import LocaleField -from mindee.parsing.standard.payment_details import PaymentDetailsField -from mindee.parsing.standard.position import PositionField -from mindee.parsing.standard.tax import Taxes, TaxField -from mindee.parsing.standard.text import StringField - -__all__ = [ - "AddressField", - "AmountField", - "BaseField", - "FieldConfidenceMixin", - "FieldPositionMixin", - "bool_to_string", - "float_to_string", - "int_to_string", - "to_opt_bool", - "to_opt_float", - "to_opt_int", - "BooleanField", - "ClassificationField", - "CompanyRegistrationField", - "DateField", - "LocaleField", - "PaymentDetailsField", - "PositionField", - "Taxes", - "TaxField", - "StringField", -] diff --git a/mindee/parsing/v2/__init__.py b/mindee/parsing/v2/__init__.py deleted file mode 100644 index fe275352..00000000 --- a/mindee/parsing/v2/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -from mindee.parsing.v2.error_item import ErrorItem -from mindee.parsing.v2.error_response import ErrorResponse -from mindee.parsing.v2.inference import Inference -from mindee.parsing.v2.inference_active_options import InferenceActiveOptions -from mindee.parsing.v2.inference_file import InferenceFile -from mindee.parsing.v2.inference_model import InferenceModel -from mindee.parsing.v2.inference_response import InferenceResponse -from mindee.parsing.v2.inference_result import InferenceResult -from mindee.parsing.v2.job_response import JobResponse - -__all__ = [ - "Inference", - "InferenceActiveOptions", - "InferenceFile", - "InferenceModel", - "InferenceResponse", - "InferenceResult", - "JobResponse", - "ErrorResponse", - "ErrorItem", -] diff --git a/mindee/parsing/v2/base_inference.py b/mindee/parsing/v2/base_inference.py deleted file mode 100644 index 9f9e90ec..00000000 --- a/mindee/parsing/v2/base_inference.py +++ /dev/null @@ -1,29 +0,0 @@ -from abc import ABC -from typing import TypeVar - -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.inference_file import InferenceFile -from mindee.parsing.v2.inference_job import InferenceJob -from mindee.parsing.v2.inference_model import InferenceModel - - -class BaseInference(ABC): - """Base class for V2 inference objects.""" - - job: InferenceJob - """Job the inference belongs to.""" - model: InferenceModel - """Model info for the inference.""" - file: InferenceFile - """File info for the inference.""" - id: str - """ID of the inference.""" - - def __init__(self, raw_response: StringDict): - self.id = raw_response["id"] - self.job = InferenceJob(raw_response["job"]) - self.model = InferenceModel(raw_response["model"]) - self.file = InferenceFile(raw_response["file"]) - - -TypeBaseInference = TypeVar("TypeBaseInference", bound=BaseInference) diff --git a/mindee/parsing/v2/base_response.py b/mindee/parsing/v2/base_response.py deleted file mode 100644 index d3aab4bf..00000000 --- a/mindee/parsing/v2/base_response.py +++ /dev/null @@ -1,21 +0,0 @@ -from abc import ABC - -from mindee.parsing.v2.base_inference import BaseInference -from mindee.parsing.v2.common_response import CommonResponse - - -class BaseResponse(ABC, CommonResponse): - """Base class for V2 inference responses.""" - - inference: BaseInference - """The inference result for a split utility request""" - _slug: str - """Slug of the inference.""" - - def __str__(self) -> str: - return str(self.inference) - - @classmethod - def get_result_slug(cls) -> str: - """Getter for the inference slug.""" - return cls._slug diff --git a/mindee/parsing/v2/field/__init__.py b/mindee/parsing/v2/field/__init__.py deleted file mode 100644 index 0d54869e..00000000 --- a/mindee/parsing/v2/field/__init__.py +++ /dev/null @@ -1,17 +0,0 @@ -from mindee.parsing.v2.field.base_field import BaseField -from mindee.parsing.v2.field.field_confidence import FieldConfidence -from mindee.parsing.v2.field.field_location import FieldLocation -from mindee.parsing.v2.field.inference_fields import InferenceFields -from mindee.parsing.v2.field.list_field import ListField -from mindee.parsing.v2.field.object_field import ObjectField -from mindee.parsing.v2.field.simple_field import SimpleField - -__all__ = [ - "BaseField", - "FieldConfidence", - "FieldLocation", - "ListField", - "ObjectField", - "SimpleField", - "InferenceFields", -] diff --git a/mindee/parsing/v2/inference_job.py b/mindee/parsing/v2/inference_job.py deleted file mode 100644 index ac877545..00000000 --- a/mindee/parsing/v2/inference_job.py +++ /dev/null @@ -1,14 +0,0 @@ -from mindee.parsing.common.string_dict import StringDict - - -class InferenceJob: - """Inference Job info.""" - - id: str - """UUID of the Job.""" - - def __init__(self, raw_response: StringDict) -> None: - self.id = raw_response["id"] - - def __str__(self) -> str: - return f"Job\n===\n:ID: {self.id}" diff --git a/mindee/product/__init__.py b/mindee/product/__init__.py deleted file mode 100644 index 168b3c7c..00000000 --- a/mindee/product/__init__.py +++ /dev/null @@ -1,90 +0,0 @@ -from mindee.product import fr, us -from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 -from mindee.product.barcode_reader.barcode_reader_v1_document import ( - BarcodeReaderV1Document, -) -from mindee.product.cropper.cropper_v1 import CropperV1 -from mindee.product.cropper.cropper_v1_document import ( - CropperV1Document, -) -from mindee.product.cropper.cropper_v1_page import ( - CropperV1Page, -) -from mindee.product.custom import CustomV1, CustomV1Document, CustomV1Page -from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 -from mindee.product.financial_document.financial_document_v1_document import ( - FinancialDocumentV1Document, -) -from mindee.product.financial_document.financial_document_v1_line_item import ( - FinancialDocumentV1LineItem, -) -from mindee.product.generated import GeneratedV1, GeneratedV1Document, GeneratedV1Page -from mindee.product.international_id.international_id_v2 import InternationalIdV2 -from mindee.product.international_id.international_id_v2_document import ( - InternationalIdV2Document, -) -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice.invoice_v4_document import ( - InvoiceV4Document, -) -from mindee.product.invoice.invoice_v4_line_item import ( - InvoiceV4LineItem, -) -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 -from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( - InvoiceSplitterV1Document, -) -from mindee.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( - InvoiceSplitterV1InvoicePageGroup, -) -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( - MultiReceiptsDetectorV1, -) -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( - MultiReceiptsDetectorV1Document, -) -from mindee.product.passport.passport_v1 import PassportV1 -from mindee.product.passport.passport_v1_document import ( - PassportV1Document, -) -from mindee.product.receipt.receipt_v5 import ReceiptV5 -from mindee.product.receipt.receipt_v5_document import ( - ReceiptV5Document, -) -from mindee.product.receipt.receipt_v5_line_item import ( - ReceiptV5LineItem, -) - -__all__ = [ - "fr", - "us", - "BarcodeReaderV1", - "BarcodeReaderV1Document", - "CropperV1", - "CropperV1Document", - "CropperV1Page", - "CustomV1", - "CustomV1Document", - "CustomV1Page", - "FinancialDocumentV1", - "FinancialDocumentV1Document", - "FinancialDocumentV1LineItem", - "GeneratedV1", - "GeneratedV1Document", - "GeneratedV1Page", - "InternationalIdV2", - "InternationalIdV2Document", - "InvoiceV4", - "InvoiceV4Document", - "InvoiceV4LineItem", - "InvoiceSplitterV1", - "InvoiceSplitterV1Document", - "InvoiceSplitterV1InvoicePageGroup", - "MultiReceiptsDetectorV1", - "MultiReceiptsDetectorV1Document", - "PassportV1", - "PassportV1Document", - "ReceiptV5", - "ReceiptV5Document", - "ReceiptV5LineItem", -] diff --git a/mindee/product/barcode_reader/__init__.py b/mindee/product/barcode_reader/__init__.py deleted file mode 100644 index 2fec6a10..00000000 --- a/mindee/product/barcode_reader/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 -from mindee.product.barcode_reader.barcode_reader_v1_document import ( - BarcodeReaderV1Document, -) - -__all__ = [ - "BarcodeReaderV1", - "BarcodeReaderV1Document", -] diff --git a/mindee/product/cropper/__init__.py b/mindee/product/cropper/__init__.py deleted file mode 100644 index 219d5b42..00000000 --- a/mindee/product/cropper/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.cropper.cropper_v1 import CropperV1 -from mindee.product.cropper.cropper_v1_document import ( - CropperV1Document, -) -from mindee.product.cropper.cropper_v1_page import ( - CropperV1Page, -) - -__all__ = [ - "CropperV1", - "CropperV1Document", - "CropperV1Page", -] diff --git a/mindee/product/financial_document/__init__.py b/mindee/product/financial_document/__init__.py deleted file mode 100644 index 6cbb4b52..00000000 --- a/mindee/product/financial_document/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 -from mindee.product.financial_document.financial_document_v1_document import ( - FinancialDocumentV1Document, -) -from mindee.product.financial_document.financial_document_v1_line_item import ( - FinancialDocumentV1LineItem, -) - -__all__ = [ - "FinancialDocumentV1", - "FinancialDocumentV1Document", - "FinancialDocumentV1LineItem", -] diff --git a/mindee/product/fr/__init__.py b/mindee/product/fr/__init__.py deleted file mode 100644 index e9fdfd06..00000000 --- a/mindee/product/fr/__init__.py +++ /dev/null @@ -1,49 +0,0 @@ -from mindee.product.fr.bank_account_details.bank_account_details_v1 import ( - BankAccountDetailsV1, -) -from mindee.product.fr.bank_account_details.bank_account_details_v1_document import ( - BankAccountDetailsV1Document, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2 import ( - BankAccountDetailsV2, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2_bban import ( - BankAccountDetailsV2Bban, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2_document import ( - BankAccountDetailsV2Document, -) -from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 -from mindee.product.fr.carte_grise.carte_grise_v1_document import ( - CarteGriseV1Document, -) -from mindee.product.fr.id_card.id_card_v1 import IdCardV1 -from mindee.product.fr.id_card.id_card_v1_document import ( - IdCardV1Document, -) -from mindee.product.fr.id_card.id_card_v1_page import ( - IdCardV1Page, -) -from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import ( - IdCardV2Document, -) -from mindee.product.fr.id_card.id_card_v2_page import ( - IdCardV2Page, -) - -__all__ = [ - "BankAccountDetailsV1", - "BankAccountDetailsV1Document", - "BankAccountDetailsV2", - "BankAccountDetailsV2Bban", - "BankAccountDetailsV2Document", - "CarteGriseV1", - "CarteGriseV1Document", - "IdCardV1", - "IdCardV1Document", - "IdCardV1Page", - "IdCardV2", - "IdCardV2Document", - "IdCardV2Page", -] diff --git a/mindee/product/fr/bank_account_details/__init__.py b/mindee/product/fr/bank_account_details/__init__.py deleted file mode 100644 index 8ff37aee..00000000 --- a/mindee/product/fr/bank_account_details/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -from mindee.product.fr.bank_account_details.bank_account_details_v1 import ( - BankAccountDetailsV1, -) -from mindee.product.fr.bank_account_details.bank_account_details_v1_document import ( - BankAccountDetailsV1Document, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2 import ( - BankAccountDetailsV2, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2_bban import ( - BankAccountDetailsV2Bban, -) -from mindee.product.fr.bank_account_details.bank_account_details_v2_document import ( - BankAccountDetailsV2Document, -) - -__all__ = [ - "BankAccountDetailsV1", - "BankAccountDetailsV1Document", - "BankAccountDetailsV2", - "BankAccountDetailsV2Bban", - "BankAccountDetailsV2Document", -] diff --git a/mindee/product/fr/carte_grise/__init__.py b/mindee/product/fr/carte_grise/__init__.py deleted file mode 100644 index dc35100b..00000000 --- a/mindee/product/fr/carte_grise/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 -from mindee.product.fr.carte_grise.carte_grise_v1_document import ( - CarteGriseV1Document, -) - -__all__ = [ - "CarteGriseV1", - "CarteGriseV1Document", -] diff --git a/mindee/product/fr/id_card/__init__.py b/mindee/product/fr/id_card/__init__.py deleted file mode 100644 index d1e47e96..00000000 --- a/mindee/product/fr/id_card/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -from mindee.product.fr.id_card.id_card_v1 import IdCardV1 -from mindee.product.fr.id_card.id_card_v1_document import ( - IdCardV1Document, -) -from mindee.product.fr.id_card.id_card_v1_page import ( - IdCardV1Page, -) -from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import ( - IdCardV2Document, -) -from mindee.product.fr.id_card.id_card_v2_page import ( - IdCardV2Page, -) - -__all__ = [ - "IdCardV1", - "IdCardV1Document", - "IdCardV1Page", - "IdCardV2", - "IdCardV2Document", - "IdCardV2Page", -] diff --git a/mindee/product/international_id/__init__.py b/mindee/product/international_id/__init__.py deleted file mode 100644 index d93a0fd2..00000000 --- a/mindee/product/international_id/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from mindee.product.international_id.international_id_v2 import InternationalIdV2 -from mindee.product.international_id.international_id_v2_document import ( - InternationalIdV2Document, -) - -__all__ = [ - "InternationalIdV2", - "InternationalIdV2Document", -] diff --git a/mindee/product/invoice/__init__.py b/mindee/product/invoice/__init__.py deleted file mode 100644 index 76eda3a9..00000000 --- a/mindee/product/invoice/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice.invoice_v4_document import ( - InvoiceV4Document, -) -from mindee.product.invoice.invoice_v4_line_item import ( - InvoiceV4LineItem, -) - -__all__ = [ - "InvoiceV4", - "InvoiceV4Document", - "InvoiceV4LineItem", -] diff --git a/mindee/product/invoice_splitter/__init__.py b/mindee/product/invoice_splitter/__init__.py deleted file mode 100644 index 2249036f..00000000 --- a/mindee/product/invoice_splitter/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 -from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( - InvoiceSplitterV1Document, -) -from mindee.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( - InvoiceSplitterV1InvoicePageGroup, -) - -__all__ = [ - "InvoiceSplitterV1", - "InvoiceSplitterV1Document", - "InvoiceSplitterV1InvoicePageGroup", -] diff --git a/mindee/product/multi_receipts_detector/__init__.py b/mindee/product/multi_receipts_detector/__init__.py deleted file mode 100644 index 8cd99e60..00000000 --- a/mindee/product/multi_receipts_detector/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( - MultiReceiptsDetectorV1, -) -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( - MultiReceiptsDetectorV1Document, -) - -__all__ = [ - "MultiReceiptsDetectorV1", - "MultiReceiptsDetectorV1Document", -] diff --git a/mindee/product/passport/__init__.py b/mindee/product/passport/__init__.py deleted file mode 100644 index 00bb91e9..00000000 --- a/mindee/product/passport/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -from mindee.product.passport.passport_v1 import PassportV1 -from mindee.product.passport.passport_v1_document import ( - PassportV1Document, -) - -__all__ = [ - "PassportV1", - "PassportV1Document", -] diff --git a/mindee/product/receipt/__init__.py b/mindee/product/receipt/__init__.py deleted file mode 100644 index b993e38a..00000000 --- a/mindee/product/receipt/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.receipt.receipt_v5 import ReceiptV5 -from mindee.product.receipt.receipt_v5_document import ( - ReceiptV5Document, -) -from mindee.product.receipt.receipt_v5_line_item import ( - ReceiptV5LineItem, -) - -__all__ = [ - "ReceiptV5", - "ReceiptV5Document", - "ReceiptV5LineItem", -] diff --git a/mindee/product/us/__init__.py b/mindee/product/us/__init__.py deleted file mode 100644 index 49201c4f..00000000 --- a/mindee/product/us/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 -from mindee.product.us.bank_check.bank_check_v1_document import ( - BankCheckV1Document, -) -from mindee.product.us.bank_check.bank_check_v1_page import ( - BankCheckV1Page, -) - -__all__ = [ - "BankCheckV1", - "BankCheckV1Document", - "BankCheckV1Page", -] diff --git a/mindee/product/us/bank_check/__init__.py b/mindee/product/us/bank_check/__init__.py deleted file mode 100644 index 49201c4f..00000000 --- a/mindee/product/us/bank_check/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 -from mindee.product.us.bank_check.bank_check_v1_document import ( - BankCheckV1Document, -) -from mindee.product.us.bank_check.bank_check_v1_page import ( - BankCheckV1Page, -) - -__all__ = [ - "BankCheckV1", - "BankCheckV1Document", - "BankCheckV1Page", -] diff --git a/mindee/v1/__init__.py b/mindee/v1/__init__.py new file mode 100644 index 00000000..589a36a7 --- /dev/null +++ b/mindee/v1/__init__.py @@ -0,0 +1,17 @@ +from mindee.v1.client import ( + Client, + AsyncPredictOptions, + AsyncPredictResponse, + PageOptions, + PredictResponse, + PredictOptions, +) + +__all__ = [ + "Client", + "AsyncPredictOptions", + "AsyncPredictResponse", + "PageOptions", + "PredictResponse", + "PredictOptions", +] diff --git a/mindee/client.py b/mindee/v1/client.py similarity index 98% rename from mindee/client.py rename to mindee/v1/client.py index ec8ff828..47d41e81 100644 --- a/mindee/client.py +++ b/mindee/v1/client.py @@ -20,13 +20,13 @@ ) from mindee.mindee_http.workflow_endpoint import WorkflowEndpoint from mindee.mindee_http.workflow_settings import WorkflowSettings -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.parsing.common.feedback_response import FeedbackResponse -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.predict_response import PredictResponse +from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse +from mindee.v1.parsing.common.feedback_response import FeedbackResponse +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.predict_response import PredictResponse from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.common.workflow_response import WorkflowResponse -from mindee.product import GeneratedV1 +from mindee.v1.parsing.common.workflow_response import WorkflowResponse +from mindee.v1.product import GeneratedV1 OTS_OWNER = "mindee" diff --git a/mindee/v1/input/__init__.py b/mindee/v1/input/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/input/workflow_options.py b/mindee/v1/input/workflow_options.py similarity index 94% rename from mindee/input/workflow_options.py rename to mindee/v1/input/workflow_options.py index 8e368921..fa032588 100644 --- a/mindee/input/workflow_options.py +++ b/mindee/v1/input/workflow_options.py @@ -1,6 +1,6 @@ from typing import Optional -from mindee.parsing.common import ExecutionPriority +from mindee.v1.parsing.common import ExecutionPriority class WorkflowOptions: diff --git a/mindee/v1/parsing/__init__.py b/mindee/v1/parsing/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/v1/parsing/common/__init__.py b/mindee/v1/parsing/common/__init__.py new file mode 100644 index 00000000..e08df2a7 --- /dev/null +++ b/mindee/v1/parsing/common/__init__.py @@ -0,0 +1,43 @@ +from mindee.v1.parsing.common.api_request import ApiRequest, RequestStatus +from mindee.v1.parsing.common.api_response import ApiResponse +from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse +from mindee.v1.parsing.common.document import Document, serialize_for_json +from mindee.v1.parsing.common.execution import Execution +from mindee.v1.parsing.common.execution_file import ExecutionFile +from mindee.v1.parsing.common.execution_priority import ExecutionPriority +from mindee.v1.parsing.common.extras import CropperExtra, Extras +from mindee.v1.parsing.common.feedback_response import FeedbackResponse +from mindee.v1.parsing.common.inference import Inference, TypeInference +from mindee.v1.parsing.common.job import Job +from mindee.v1.parsing.common.ocr.mvision_v1 import MVisionV1 +from mindee.v1.parsing.common.ocr.ocr import Ocr +from mindee.v1.parsing.common.orientation import OrientationField +from mindee.v1.parsing.common.page import Page +from mindee.v1.parsing.common.predict_response import PredictResponse +from mindee.v1.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.workflow_response import WorkflowResponse + +__all__ = [ + "ApiRequest", + "ApiResponse", + "AsyncPredictResponse", + "Document", + "Execution", + "ExecutionFile", + "ExecutionPriority", + "CropperExtra", + "Extras", + "FeedbackResponse", + "Inference", + "TypeInference", + "WorkflowResponse", + "Prediction", + "Job", + "OrientationField", + "Page", + "PredictResponse", + "MVisionV1", + "Ocr", + "RequestStatus", + "serialize_for_json", +] diff --git a/mindee/parsing/common/api_request.py b/mindee/v1/parsing/common/api_request.py similarity index 100% rename from mindee/parsing/common/api_request.py rename to mindee/v1/parsing/common/api_request.py diff --git a/mindee/parsing/common/api_response.py b/mindee/v1/parsing/common/api_response.py similarity index 93% rename from mindee/parsing/common/api_response.py rename to mindee/v1/parsing/common/api_response.py index 112f8f93..08825eaa 100644 --- a/mindee/parsing/common/api_response.py +++ b/mindee/v1/parsing/common/api_response.py @@ -2,7 +2,7 @@ from abc import ABC from mindee.logger import logger -from mindee.parsing.common.api_request import ApiRequest +from mindee.v1.parsing.common.api_request import ApiRequest from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/async_predict_response.py b/mindee/v1/parsing/common/async_predict_response.py similarity index 81% rename from mindee/parsing/common/async_predict_response.py rename to mindee/v1/parsing/common/async_predict_response.py index 5d657532..e4b5f9a6 100644 --- a/mindee/parsing/common/async_predict_response.py +++ b/mindee/v1/parsing/common/async_predict_response.py @@ -1,9 +1,9 @@ from typing import Generic, Optional, Type -from mindee.parsing.common.api_response import ApiResponse, StringDict -from mindee.parsing.common.document import Document -from mindee.parsing.common.inference import TypeInference -from mindee.parsing.common.job import Job +from mindee.v1.parsing.common.api_response import ApiResponse, StringDict +from mindee.v1.parsing.common.document import Document +from mindee.v1.parsing.common.inference import TypeInference +from mindee.v1.parsing.common.job import Job class AsyncPredictResponse(Generic[TypeInference], ApiResponse): diff --git a/mindee/parsing/common/document.py b/mindee/v1/parsing/common/document.py similarity index 90% rename from mindee/parsing/common/document.py rename to mindee/v1/parsing/common/document.py index cf5f5e9c..7d982375 100644 --- a/mindee/parsing/common/document.py +++ b/mindee/v1/parsing/common/document.py @@ -1,11 +1,11 @@ import datetime from typing import Any, Generic, Optional, Type -from mindee.parsing.common.extras.extras import Extras -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.ocr.ocr import Ocr -from mindee.parsing.common.page import TypePage -from mindee.parsing.common.prediction import TypePrediction +from mindee.v1.parsing.common.extras.extras import Extras +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.ocr.ocr import Ocr +from mindee.v1.parsing.common.page import TypePage +from mindee.v1.parsing.common.prediction import TypePrediction from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/execution.py b/mindee/v1/parsing/common/execution.py similarity index 88% rename from mindee/parsing/common/execution.py rename to mindee/v1/parsing/common/execution.py index 3d0a725a..d7ebf889 100644 --- a/mindee/parsing/common/execution.py +++ b/mindee/v1/parsing/common/execution.py @@ -1,13 +1,13 @@ from datetime import datetime from typing import Generic, Optional, Type -from mindee.parsing.common.execution_file import ExecutionFile -from mindee.parsing.common.execution_priority import ExecutionPriority -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page -from mindee.parsing.common.prediction import TypePrediction +from mindee.v1.parsing.common.execution_file import ExecutionFile +from mindee.v1.parsing.common.execution_priority import ExecutionPriority +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page +from mindee.v1.parsing.common.prediction import TypePrediction from mindee.parsing.common.string_dict import StringDict -from mindee.product.generated.generated_v1 import GeneratedV1Document +from mindee.v1.product.generated import GeneratedV1Document class Execution(Generic[TypePrediction]): diff --git a/mindee/parsing/common/execution_file.py b/mindee/v1/parsing/common/execution_file.py similarity index 100% rename from mindee/parsing/common/execution_file.py rename to mindee/v1/parsing/common/execution_file.py diff --git a/mindee/parsing/common/execution_priority.py b/mindee/v1/parsing/common/execution_priority.py similarity index 100% rename from mindee/parsing/common/execution_priority.py rename to mindee/v1/parsing/common/execution_priority.py diff --git a/mindee/v1/parsing/common/extras/__init__.py b/mindee/v1/parsing/common/extras/__init__.py new file mode 100644 index 00000000..268a629e --- /dev/null +++ b/mindee/v1/parsing/common/extras/__init__.py @@ -0,0 +1,7 @@ +from mindee.v1.parsing.common.extras.cropper_extra import CropperExtra +from mindee.v1.parsing.common.extras.extras import Extras + +__all__ = [ + "Extras", + "CropperExtra", +] diff --git a/mindee/parsing/common/extras/cropper_extra.py b/mindee/v1/parsing/common/extras/cropper_extra.py similarity index 92% rename from mindee/parsing/common/extras/cropper_extra.py rename to mindee/v1/parsing/common/extras/cropper_extra.py index e1bb2743..68d80628 100644 --- a/mindee/parsing/common/extras/cropper_extra.py +++ b/mindee/v1/parsing/common/extras/cropper_extra.py @@ -1,7 +1,7 @@ from typing import List, Optional from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.position import PositionField +from mindee.v1.parsing.standard.position import PositionField class CropperExtra: diff --git a/mindee/parsing/common/extras/extras.py b/mindee/v1/parsing/common/extras/extras.py similarity index 88% rename from mindee/parsing/common/extras/extras.py rename to mindee/v1/parsing/common/extras/extras.py index 8d1f8f94..cc114e47 100644 --- a/mindee/parsing/common/extras/extras.py +++ b/mindee/v1/parsing/common/extras/extras.py @@ -1,8 +1,8 @@ from typing import Optional -from mindee.parsing.common.extras.cropper_extra import CropperExtra -from mindee.parsing.common.extras.full_text_ocr_extra import FullTextOcrExtra -from mindee.parsing.common.extras.rag_extra import RagExtra +from mindee.v1.parsing.common.extras.cropper_extra import CropperExtra +from mindee.v1.parsing.common.extras.full_text_ocr_extra import FullTextOcrExtra +from mindee.v1.parsing.common.extras.rag_extra import RagExtra from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/extras/full_text_ocr_extra.py b/mindee/v1/parsing/common/extras/full_text_ocr_extra.py similarity index 100% rename from mindee/parsing/common/extras/full_text_ocr_extra.py rename to mindee/v1/parsing/common/extras/full_text_ocr_extra.py diff --git a/mindee/parsing/common/extras/rag_extra.py b/mindee/v1/parsing/common/extras/rag_extra.py similarity index 100% rename from mindee/parsing/common/extras/rag_extra.py rename to mindee/v1/parsing/common/extras/rag_extra.py diff --git a/mindee/parsing/common/feedback_response.py b/mindee/v1/parsing/common/feedback_response.py similarity index 85% rename from mindee/parsing/common/feedback_response.py rename to mindee/v1/parsing/common/feedback_response.py index 54ab67d2..a7b76640 100644 --- a/mindee/parsing/common/feedback_response.py +++ b/mindee/v1/parsing/common/feedback_response.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.api_response import ApiResponse +from mindee.v1.parsing.common.api_response import ApiResponse from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/inference.py b/mindee/v1/parsing/common/inference.py similarity index 92% rename from mindee/parsing/common/inference.py rename to mindee/v1/parsing/common/inference.py index 5a61d353..a7192118 100644 --- a/mindee/parsing/common/inference.py +++ b/mindee/v1/parsing/common/inference.py @@ -1,10 +1,10 @@ from typing import Dict, Generic, List, Optional, Type, TypeVar from mindee.error.mindee_error import MindeeError -from mindee.parsing.common.extras import Extras -from mindee.parsing.common.page import TypePage -from mindee.parsing.common.prediction import TypePrediction -from mindee.parsing.common.product import Product +from mindee.v1.parsing.common.extras import Extras +from mindee.v1.parsing.common.page import TypePage +from mindee.v1.parsing.common.prediction import TypePrediction +from mindee.v1.parsing.common.product import Product from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/job.py b/mindee/v1/parsing/common/job.py similarity index 100% rename from mindee/parsing/common/job.py rename to mindee/v1/parsing/common/job.py diff --git a/mindee/v1/parsing/common/ocr/__init__.py b/mindee/v1/parsing/common/ocr/__init__.py new file mode 100644 index 00000000..ea56ce8c --- /dev/null +++ b/mindee/v1/parsing/common/ocr/__init__.py @@ -0,0 +1,3 @@ +from mindee.v1.parsing.common.ocr.ocr import Ocr + +__all__ = ["Ocr"] diff --git a/mindee/parsing/common/ocr/mvision_v1.py b/mindee/v1/parsing/common/ocr/mvision_v1.py similarity index 88% rename from mindee/parsing/common/ocr/mvision_v1.py rename to mindee/v1/parsing/common/ocr/mvision_v1.py index 4c7a374b..fb9afeb3 100644 --- a/mindee/parsing/common/ocr/mvision_v1.py +++ b/mindee/v1/parsing/common/ocr/mvision_v1.py @@ -1,6 +1,6 @@ from typing import List -from mindee.parsing.common.ocr.ocr_page import OcrPage +from mindee.v1.parsing.common.ocr.ocr_page import OcrPage from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/ocr/ocr.py b/mindee/v1/parsing/common/ocr/ocr.py similarity index 85% rename from mindee/parsing/common/ocr/ocr.py rename to mindee/v1/parsing/common/ocr/ocr.py index 8116f5c5..b0b10986 100644 --- a/mindee/parsing/common/ocr/ocr.py +++ b/mindee/v1/parsing/common/ocr/ocr.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.ocr.mvision_v1 import MVisionV1 +from mindee.v1.parsing.common.ocr.mvision_v1 import MVisionV1 from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/ocr/ocr_line.py b/mindee/v1/parsing/common/ocr/ocr_line.py similarity index 87% rename from mindee/parsing/common/ocr/ocr_line.py rename to mindee/v1/parsing/common/ocr/ocr_line.py index e10cb911..a94ac815 100644 --- a/mindee/parsing/common/ocr/ocr_line.py +++ b/mindee/v1/parsing/common/ocr/ocr_line.py @@ -1,7 +1,7 @@ from typing import List from mindee.geometry.minmax import get_min_max_x -from mindee.parsing.common.ocr.ocr_word import OcrWord +from mindee.v1.parsing.common.ocr.ocr_word import OcrWord class OcrLine(List[OcrWord]): diff --git a/mindee/parsing/common/ocr/ocr_page.py b/mindee/v1/parsing/common/ocr/ocr_page.py similarity index 95% rename from mindee/parsing/common/ocr/ocr_page.py rename to mindee/v1/parsing/common/ocr/ocr_page.py index b2210ff2..f0795ff4 100644 --- a/mindee/parsing/common/ocr/ocr_page.py +++ b/mindee/v1/parsing/common/ocr/ocr_page.py @@ -3,8 +3,8 @@ from mindee.geometry.minmax import get_min_max_y from mindee.geometry.polygon import is_point_in_polygon_y from mindee.geometry.polygon_utils import get_centroid -from mindee.parsing.common.ocr.ocr_line import OcrLine -from mindee.parsing.common.ocr.ocr_word import OcrWord +from mindee.v1.parsing.common.ocr.ocr_line import OcrLine +from mindee.v1.parsing.common.ocr.ocr_word import OcrWord from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/ocr/ocr_word.py b/mindee/v1/parsing/common/ocr/ocr_word.py similarity index 88% rename from mindee/parsing/common/ocr/ocr_word.py rename to mindee/v1/parsing/common/ocr/ocr_word.py index 891da862..3af9ee6b 100644 --- a/mindee/parsing/common/ocr/ocr_word.py +++ b/mindee/v1/parsing/common/ocr/ocr_word.py @@ -1,5 +1,5 @@ from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import FieldPositionMixin +from mindee.v1.parsing.standard.base import FieldPositionMixin class OcrWord(FieldPositionMixin): diff --git a/mindee/parsing/common/orientation.py b/mindee/v1/parsing/common/orientation.py similarity index 95% rename from mindee/parsing/common/orientation.py rename to mindee/v1/parsing/common/orientation.py index f0f1eef9..54f85cc9 100644 --- a/mindee/parsing/common/orientation.py +++ b/mindee/v1/parsing/common/orientation.py @@ -1,7 +1,7 @@ from typing import Optional from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField +from mindee.v1.parsing.standard.base import BaseField class OrientationField(BaseField): diff --git a/mindee/parsing/common/page.py b/mindee/v1/parsing/common/page.py similarity index 88% rename from mindee/parsing/common/page.py rename to mindee/v1/parsing/common/page.py index f8468b74..f49c52b4 100644 --- a/mindee/parsing/common/page.py +++ b/mindee/v1/parsing/common/page.py @@ -1,8 +1,8 @@ from typing import Generic, Optional, Type, TypeVar -from mindee.parsing.common.extras.extras import Extras -from mindee.parsing.common.orientation import OrientationField -from mindee.parsing.common.prediction import TypePrediction +from mindee.v1.parsing.common.extras.extras import Extras +from mindee.v1.parsing.common.orientation import OrientationField +from mindee.v1.parsing.common.prediction import TypePrediction from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/parsing/common/predict_response.py b/mindee/v1/parsing/common/predict_response.py similarity index 80% rename from mindee/parsing/common/predict_response.py rename to mindee/v1/parsing/common/predict_response.py index bcc8ba81..83379e6b 100644 --- a/mindee/parsing/common/predict_response.py +++ b/mindee/v1/parsing/common/predict_response.py @@ -1,8 +1,8 @@ from typing import Generic, Type -from mindee.parsing.common.api_response import ApiResponse, StringDict -from mindee.parsing.common.document import Document -from mindee.parsing.common.inference import TypeInference +from mindee.v1.parsing.common.api_response import ApiResponse, StringDict +from mindee.v1.parsing.common.document import Document +from mindee.v1.parsing.common.inference import TypeInference class PredictResponse(Generic[TypeInference], ApiResponse): diff --git a/mindee/parsing/common/prediction.py b/mindee/v1/parsing/common/prediction.py similarity index 100% rename from mindee/parsing/common/prediction.py rename to mindee/v1/parsing/common/prediction.py diff --git a/mindee/parsing/common/product.py b/mindee/v1/parsing/common/product.py similarity index 100% rename from mindee/parsing/common/product.py rename to mindee/v1/parsing/common/product.py diff --git a/mindee/parsing/common/workflow_response.py b/mindee/v1/parsing/common/workflow_response.py similarity index 70% rename from mindee/parsing/common/workflow_response.py rename to mindee/v1/parsing/common/workflow_response.py index c0f01105..5e0ebbe5 100644 --- a/mindee/parsing/common/workflow_response.py +++ b/mindee/v1/parsing/common/workflow_response.py @@ -1,9 +1,9 @@ from typing import Generic, Type -from mindee.parsing.common.api_response import ApiResponse -from mindee.parsing.common.execution import Execution -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.prediction import TypePrediction +from mindee.v1.parsing.common.api_response import ApiResponse +from mindee.v1.parsing.common.execution import Execution +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.prediction import TypePrediction from mindee.parsing.common.string_dict import StringDict diff --git a/mindee/v1/parsing/custom/__init__.py b/mindee/v1/parsing/custom/__init__.py new file mode 100644 index 00000000..10e5584a --- /dev/null +++ b/mindee/v1/parsing/custom/__init__.py @@ -0,0 +1,11 @@ +from mindee.v1.parsing.custom.classification import ClassificationField +from mindee.v1.parsing.custom.line_items import CustomLine, get_line_items +from mindee.v1.parsing.custom.list import ListField, ListFieldValue + +__all__ = [ + "ClassificationField", + "CustomLine", + "get_line_items", + "ListField", + "ListFieldValue", +] diff --git a/mindee/parsing/custom/classification.py b/mindee/v1/parsing/custom/classification.py similarity index 87% rename from mindee/parsing/custom/classification.py rename to mindee/v1/parsing/custom/classification.py index bc5bd4a3..c11099ff 100644 --- a/mindee/parsing/custom/classification.py +++ b/mindee/v1/parsing/custom/classification.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class ClassificationField: diff --git a/mindee/parsing/custom/line_items.py b/mindee/v1/parsing/custom/line_items.py similarity index 98% rename from mindee/parsing/custom/line_items.py rename to mindee/v1/parsing/custom/line_items.py index 08103014..c28643a5 100644 --- a/mindee/parsing/custom/line_items.py +++ b/mindee/v1/parsing/custom/line_items.py @@ -4,7 +4,7 @@ from mindee.geometry.bbox import BBox, extend_bbox, get_bbox from mindee.geometry.minmax import MinMax, get_min_max_y from mindee.geometry.quadrilateral import get_bounding_box -from mindee.parsing.custom.list import ListField, ListFieldValue +from mindee.v1.parsing.custom.list import ListField, ListFieldValue def _find_best_anchor(anchors: Sequence[str], fields: Dict[str, ListField]) -> str: diff --git a/mindee/parsing/custom/list.py b/mindee/v1/parsing/custom/list.py similarity index 94% rename from mindee/parsing/custom/list.py rename to mindee/v1/parsing/custom/list.py index e0fa1dd2..b24033a5 100644 --- a/mindee/parsing/custom/list.py +++ b/mindee/v1/parsing/custom/list.py @@ -1,7 +1,7 @@ from typing import List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import FieldPositionMixin class ListFieldValue(FieldPositionMixin): diff --git a/mindee/parsing/generated/__init__.py b/mindee/v1/parsing/generated/__init__.py similarity index 52% rename from mindee/parsing/generated/__init__.py rename to mindee/v1/parsing/generated/__init__.py index ffec05ac..ca3e561b 100644 --- a/mindee/parsing/generated/__init__.py +++ b/mindee/v1/parsing/generated/__init__.py @@ -1,5 +1,5 @@ -from mindee.parsing.generated.generated_list import GeneratedListField -from mindee.parsing.generated.generated_object import ( +from mindee.v1.parsing.generated.generated_list import GeneratedListField +from mindee.v1.parsing.generated.generated_object import ( GeneratedObjectField, is_generated_object, ) diff --git a/mindee/parsing/generated/generated_list.py b/mindee/v1/parsing/generated/generated_list.py similarity index 90% rename from mindee/parsing/generated/generated_list.py rename to mindee/v1/parsing/generated/generated_list.py index 4deba5db..12071fac 100644 --- a/mindee/parsing/generated/generated_list.py +++ b/mindee/v1/parsing/generated/generated_list.py @@ -1,11 +1,11 @@ from typing import List, Optional, Union -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.generated.generated_object import ( +from mindee.parsing.common import StringDict +from mindee.v1.parsing.generated.generated_object import ( GeneratedObjectField, is_generated_object, ) -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.text import StringField class GeneratedListField: diff --git a/mindee/parsing/generated/generated_object.py b/mindee/v1/parsing/generated/generated_object.py similarity index 95% rename from mindee/parsing/generated/generated_object.py rename to mindee/v1/parsing/generated/generated_object.py index f93f182a..78eab0a2 100644 --- a/mindee/parsing/generated/generated_object.py +++ b/mindee/v1/parsing/generated/generated_object.py @@ -1,7 +1,7 @@ from typing import List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.position import PositionField +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.position import PositionField class GeneratedObjectField: diff --git a/mindee/v1/parsing/standard/__init__.py b/mindee/v1/parsing/standard/__init__.py new file mode 100644 index 00000000..dc52b092 --- /dev/null +++ b/mindee/v1/parsing/standard/__init__.py @@ -0,0 +1,52 @@ +from mindee.v1.parsing.standard.address import AddressField +from mindee.v1.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard.base import ( + BaseField, + bool_to_string, + compare_field_arrays, + field_array_confidence, + field_array_sum, + FieldConfidenceMixin, + FieldPositionMixin, + float_to_string, + int_to_string, + to_opt_bool, + to_opt_float, + to_opt_int, +) +from mindee.v1.parsing.standard.boolean import BooleanField +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.parsing.standard.company_registration import CompanyRegistrationField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.locale import LocaleField +from mindee.v1.parsing.standard.payment_details import PaymentDetailsField +from mindee.v1.parsing.standard.position import PositionField +from mindee.v1.parsing.standard.tax import Taxes, TaxField +from mindee.v1.parsing.standard.text import StringField + +__all__ = [ + "AddressField", + "AmountField", + "BaseField", + "FieldConfidenceMixin", + "FieldPositionMixin", + "bool_to_string", + "float_to_string", + "compare_field_arrays", + "field_array_confidence", + "field_array_sum", + "int_to_string", + "to_opt_bool", + "to_opt_float", + "to_opt_int", + "BooleanField", + "ClassificationField", + "CompanyRegistrationField", + "DateField", + "LocaleField", + "PaymentDetailsField", + "PositionField", + "Taxes", + "TaxField", + "StringField", +] diff --git a/mindee/parsing/standard/address.py b/mindee/v1/parsing/standard/address.py similarity index 94% rename from mindee/parsing/standard/address.py rename to mindee/v1/parsing/standard/address.py index cdfbcfdb..b269f72e 100644 --- a/mindee/parsing/standard/address.py +++ b/mindee/v1/parsing/standard/address.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.text import StringField +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.text import StringField class AddressField(StringField): diff --git a/mindee/parsing/standard/amount.py b/mindee/v1/parsing/standard/amount.py similarity index 88% rename from mindee/parsing/standard/amount.py rename to mindee/v1/parsing/standard/amount.py index 3692898f..3060deca 100644 --- a/mindee/parsing/standard/amount.py +++ b/mindee/v1/parsing/standard/amount.py @@ -1,7 +1,11 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin, float_to_string +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import ( + BaseField, + FieldPositionMixin, + float_to_string, +) class AmountField(FieldPositionMixin, BaseField): diff --git a/mindee/parsing/standard/base.py b/mindee/v1/parsing/standard/base.py similarity index 99% rename from mindee/parsing/standard/base.py rename to mindee/v1/parsing/standard/base.py index 1960d72a..18b46794 100644 --- a/mindee/parsing/standard/base.py +++ b/mindee/v1/parsing/standard/base.py @@ -2,7 +2,7 @@ from mindee.geometry.polygon import Polygon from mindee.geometry.quadrilateral import Quadrilateral, get_bounding_box -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class FieldPositionMixin: diff --git a/mindee/parsing/standard/boolean.py b/mindee/v1/parsing/standard/boolean.py similarity index 88% rename from mindee/parsing/standard/boolean.py rename to mindee/v1/parsing/standard/boolean.py index 354eefa2..65e3a275 100644 --- a/mindee/parsing/standard/boolean.py +++ b/mindee/v1/parsing/standard/boolean.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField, FieldPositionMixin class BooleanField(FieldPositionMixin, BaseField): diff --git a/mindee/parsing/standard/classification.py b/mindee/v1/parsing/standard/classification.py similarity index 88% rename from mindee/parsing/standard/classification.py rename to mindee/v1/parsing/standard/classification.py index 8c9a9429..1b5f6b12 100644 --- a/mindee/parsing/standard/classification.py +++ b/mindee/v1/parsing/standard/classification.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField class ClassificationField(BaseField): diff --git a/mindee/parsing/standard/company_registration.py b/mindee/v1/parsing/standard/company_registration.py similarity index 87% rename from mindee/parsing/standard/company_registration.py rename to mindee/v1/parsing/standard/company_registration.py index 77ad05ce..f242bd6b 100644 --- a/mindee/parsing/standard/company_registration.py +++ b/mindee/v1/parsing/standard/company_registration.py @@ -1,8 +1,8 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.common.summary_helper import format_for_display -from mindee.parsing.standard.base import BaseField, FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.parsing.common import format_for_display +from mindee.v1.parsing.standard.base import BaseField, FieldPositionMixin class CompanyRegistrationField(FieldPositionMixin, BaseField): diff --git a/mindee/parsing/standard/date.py b/mindee/v1/parsing/standard/date.py similarity index 93% rename from mindee/parsing/standard/date.py rename to mindee/v1/parsing/standard/date.py index 21857cf3..42ddce34 100644 --- a/mindee/parsing/standard/date.py +++ b/mindee/v1/parsing/standard/date.py @@ -3,8 +3,8 @@ import pytz -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField, FieldPositionMixin ISO8601_DATE_FORMAT = "%Y-%m-%d" ISO8601_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%SZ" diff --git a/mindee/parsing/standard/locale.py b/mindee/v1/parsing/standard/locale.py similarity index 94% rename from mindee/parsing/standard/locale.py rename to mindee/v1/parsing/standard/locale.py index 2b692d91..c92769a3 100644 --- a/mindee/parsing/standard/locale.py +++ b/mindee/v1/parsing/standard/locale.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField class LocaleField(BaseField): diff --git a/mindee/parsing/standard/payment_details.py b/mindee/v1/parsing/standard/payment_details.py similarity index 96% rename from mindee/parsing/standard/payment_details.py rename to mindee/v1/parsing/standard/payment_details.py index bc30d161..fcd48c78 100644 --- a/mindee/parsing/standard/payment_details.py +++ b/mindee/v1/parsing/standard/payment_details.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField, FieldPositionMixin class PaymentDetailsField(FieldPositionMixin, BaseField): diff --git a/mindee/parsing/standard/position.py b/mindee/v1/parsing/standard/position.py similarity index 96% rename from mindee/parsing/standard/position.py rename to mindee/v1/parsing/standard/position.py index a7bfd530..16bb35f3 100644 --- a/mindee/parsing/standard/position.py +++ b/mindee/v1/parsing/standard/position.py @@ -3,8 +3,8 @@ from mindee.error.geometry_error import GeometryError from mindee.geometry.polygon import Polygon from mindee.geometry.quadrilateral import Quadrilateral, quadrilateral_from_prediction -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField class PositionField(BaseField): diff --git a/mindee/parsing/standard/tax.py b/mindee/v1/parsing/standard/tax.py similarity index 96% rename from mindee/parsing/standard/tax.py rename to mindee/v1/parsing/standard/tax.py index a7648ea6..de917335 100644 --- a/mindee/parsing/standard/tax.py +++ b/mindee/v1/parsing/standard/tax.py @@ -1,7 +1,11 @@ from typing import Dict, List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin, float_to_string +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import ( + BaseField, + FieldPositionMixin, + float_to_string, +) class TaxField(FieldPositionMixin, BaseField): diff --git a/mindee/parsing/standard/text.py b/mindee/v1/parsing/standard/text.py similarity index 89% rename from mindee/parsing/standard/text.py rename to mindee/v1/parsing/standard/text.py index f3e3c191..b4bb36d9 100644 --- a/mindee/parsing/standard/text.py +++ b/mindee/v1/parsing/standard/text.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.standard.base import BaseField, FieldPositionMixin +from mindee.parsing.common import StringDict +from mindee.v1.parsing.standard.base import BaseField, FieldPositionMixin class StringField(FieldPositionMixin, BaseField): diff --git a/mindee/v1/product/__init__.py b/mindee/v1/product/__init__.py new file mode 100644 index 00000000..69ca5f37 --- /dev/null +++ b/mindee/v1/product/__init__.py @@ -0,0 +1,97 @@ +from mindee.v1.product import us +from mindee.v1.product import fr +from mindee.v1.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 +from mindee.v1.product.barcode_reader.barcode_reader_v1_document import ( + BarcodeReaderV1Document, +) +from mindee.v1.product.cropper.cropper_v1 import CropperV1 +from mindee.v1.product.cropper.cropper_v1_document import ( + CropperV1Document, +) +from mindee.v1.product.cropper.cropper_v1_page import ( + CropperV1Page, +) +from mindee.v1.product.custom import CustomV1, CustomV1Document, CustomV1Page +from mindee.v1.product.financial_document.financial_document_v1 import ( + FinancialDocumentV1, +) +from mindee.v1.product.financial_document.financial_document_v1_document import ( + FinancialDocumentV1Document, +) +from mindee.v1.product.financial_document.financial_document_v1_line_item import ( + FinancialDocumentV1LineItem, +) +from mindee.v1.product.generated import ( + GeneratedV1, + GeneratedV1Document, + GeneratedV1Page, +) +from mindee.v1.product.international_id.international_id_v2 import InternationalIdV2 +from mindee.v1.product.international_id.international_id_v2_document import ( + InternationalIdV2Document, +) +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice.invoice_v4_document import ( + InvoiceV4Document, +) +from mindee.v1.product.invoice.invoice_v4_line_item import ( + InvoiceV4LineItem, +) +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( + InvoiceSplitterV1Document, +) +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( + InvoiceSplitterV1InvoicePageGroup, +) +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( + MultiReceiptsDetectorV1, +) +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( + MultiReceiptsDetectorV1Document, +) +from mindee.v1.product.passport.passport_v1 import PassportV1 +from mindee.v1.product.passport.passport_v1_document import ( + PassportV1Document, +) +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.product.receipt.receipt_v5_document import ( + ReceiptV5Document, +) +from mindee.v1.product.receipt.receipt_v5_line_item import ( + ReceiptV5LineItem, +) + +__all__ = [ + "fr", + "us", + "BarcodeReaderV1", + "BarcodeReaderV1Document", + "CropperV1", + "CropperV1Document", + "CropperV1Page", + "CustomV1", + "CustomV1Document", + "CustomV1Page", + "FinancialDocumentV1", + "FinancialDocumentV1Document", + "FinancialDocumentV1LineItem", + "GeneratedV1", + "GeneratedV1Document", + "GeneratedV1Page", + "InternationalIdV2", + "InternationalIdV2Document", + "InvoiceV4", + "InvoiceV4Document", + "InvoiceV4LineItem", + "InvoiceSplitterV1", + "InvoiceSplitterV1Document", + "InvoiceSplitterV1InvoicePageGroup", + "MultiReceiptsDetectorV1", + "MultiReceiptsDetectorV1Document", + "PassportV1", + "PassportV1Document", + "ReceiptV5", + "ReceiptV5Document", + "ReceiptV5LineItem", +] diff --git a/mindee/v1/product/barcode_reader/__init__.py b/mindee/v1/product/barcode_reader/__init__.py new file mode 100644 index 00000000..3d7d1d5f --- /dev/null +++ b/mindee/v1/product/barcode_reader/__init__.py @@ -0,0 +1,9 @@ +from mindee.v1.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 +from mindee.v1.product.barcode_reader.barcode_reader_v1_document import ( + BarcodeReaderV1Document, +) + +__all__ = [ + "BarcodeReaderV1", + "BarcodeReaderV1Document", +] diff --git a/mindee/product/barcode_reader/barcode_reader_v1.py b/mindee/v1/product/barcode_reader/barcode_reader_v1.py similarity index 86% rename from mindee/product/barcode_reader/barcode_reader_v1.py rename to mindee/v1/product/barcode_reader/barcode_reader_v1.py index c6290b70..91d3185e 100644 --- a/mindee/product/barcode_reader/barcode_reader_v1.py +++ b/mindee/v1/product/barcode_reader/barcode_reader_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.barcode_reader.barcode_reader_v1_document import ( +from mindee.v1.product.barcode_reader.barcode_reader_v1_document import ( BarcodeReaderV1Document, ) diff --git a/mindee/product/barcode_reader/barcode_reader_v1_document.py b/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py similarity index 92% rename from mindee/product/barcode_reader/barcode_reader_v1_document.py rename to mindee/v1/product/barcode_reader/barcode_reader_v1_document.py index be0a621e..daa2756e 100644 --- a/mindee/product/barcode_reader/barcode_reader_v1_document.py +++ b/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py @@ -1,9 +1,9 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.text import StringField class BarcodeReaderV1Document(Prediction): diff --git a/mindee/v1/product/cropper/__init__.py b/mindee/v1/product/cropper/__init__.py new file mode 100644 index 00000000..585ae8e9 --- /dev/null +++ b/mindee/v1/product/cropper/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.cropper.cropper_v1 import CropperV1 +from mindee.v1.product.cropper.cropper_v1_document import ( + CropperV1Document, +) +from mindee.v1.product.cropper.cropper_v1_page import ( + CropperV1Page, +) + +__all__ = [ + "CropperV1", + "CropperV1Document", + "CropperV1Page", +] diff --git a/mindee/product/cropper/cropper_v1.py b/mindee/v1/product/cropper/cropper_v1.py similarity index 82% rename from mindee/product/cropper/cropper_v1.py rename to mindee/v1/product/cropper/cropper_v1.py index 76e128e6..5d9c5691 100644 --- a/mindee/product/cropper/cropper_v1.py +++ b/mindee/v1/product/cropper/cropper_v1.py @@ -1,12 +1,12 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.cropper.cropper_v1_document import ( +from mindee.v1.product.cropper.cropper_v1_document import ( CropperV1Document, ) -from mindee.product.cropper.cropper_v1_page import ( +from mindee.v1.product.cropper.cropper_v1_page import ( CropperV1Page, ) diff --git a/mindee/product/cropper/cropper_v1_document.py b/mindee/v1/product/cropper/cropper_v1_document.py similarity index 69% rename from mindee/product/cropper/cropper_v1_document.py rename to mindee/v1/product/cropper/cropper_v1_document.py index 1e575620..8b1529f4 100644 --- a/mindee/product/cropper/cropper_v1_document.py +++ b/mindee/v1/product/cropper/cropper_v1_document.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction class CropperV1Document(Prediction): diff --git a/mindee/product/cropper/cropper_v1_page.py b/mindee/v1/product/cropper/cropper_v1_page.py similarity index 90% rename from mindee/product/cropper/cropper_v1_page.py rename to mindee/v1/product/cropper/cropper_v1_page.py index 7ad263f5..0cfba4c3 100644 --- a/mindee/product/cropper/cropper_v1_page.py +++ b/mindee/v1/product/cropper/cropper_v1_page.py @@ -2,8 +2,8 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.position import PositionField -from mindee.product.cropper.cropper_v1_document import ( +from mindee.v1.parsing.standard.position import PositionField +from mindee.v1.product.cropper.cropper_v1_document import ( CropperV1Document, ) diff --git a/mindee/product/custom/__init__.py b/mindee/v1/product/custom/__init__.py similarity index 72% rename from mindee/product/custom/__init__.py rename to mindee/v1/product/custom/__init__.py index 8e801206..641b9d4d 100644 --- a/mindee/product/custom/__init__.py +++ b/mindee/v1/product/custom/__init__.py @@ -1,4 +1,4 @@ -from mindee.product.custom.custom_v1 import ( +from mindee.v1.product.custom.custom_v1 import ( CustomV1, CustomV1Document, CustomV1Page, diff --git a/mindee/product/custom/custom_v1.py b/mindee/v1/product/custom/custom_v1.py similarity index 78% rename from mindee/product/custom/custom_v1.py rename to mindee/v1/product/custom/custom_v1.py index 570af288..ac530967 100644 --- a/mindee/product/custom/custom_v1.py +++ b/mindee/v1/product/custom/custom_v1.py @@ -1,10 +1,10 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.custom.custom_v1_document import CustomV1Document -from mindee.product.custom.custom_v1_page import CustomV1Page +from mindee.v1.product.custom.custom_v1_document import CustomV1Document +from mindee.v1.product.custom.custom_v1_page import CustomV1Page class CustomV1(Inference): diff --git a/mindee/product/custom/custom_v1_document.py b/mindee/v1/product/custom/custom_v1_document.py similarity index 88% rename from mindee/product/custom/custom_v1_document.py rename to mindee/v1/product/custom/custom_v1_document.py index 3458cfbd..62b93575 100644 --- a/mindee/product/custom/custom_v1_document.py +++ b/mindee/v1/product/custom/custom_v1_document.py @@ -1,11 +1,11 @@ from typing import Dict, List -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.custom.classification import ClassificationField -from mindee.parsing.custom.line_items import CustomLine, get_line_items -from mindee.parsing.custom.list import ListField +from mindee.v1.parsing.custom.classification import ClassificationField +from mindee.v1.parsing.custom.line_items import CustomLine, get_line_items +from mindee.v1.parsing.custom.list import ListField class CustomV1Document(Prediction): diff --git a/mindee/product/custom/custom_v1_page.py b/mindee/v1/product/custom/custom_v1_page.py similarity index 89% rename from mindee/product/custom/custom_v1_page.py rename to mindee/v1/product/custom/custom_v1_page.py index 027d2f67..4fb8bb03 100644 --- a/mindee/product/custom/custom_v1_page.py +++ b/mindee/v1/product/custom/custom_v1_page.py @@ -1,10 +1,10 @@ from typing import Dict, List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.custom.line_items import CustomLine, get_line_items -from mindee.parsing.custom.list import ListField +from mindee.v1.parsing.custom.line_items import CustomLine, get_line_items +from mindee.v1.parsing.custom.list import ListField class CustomV1Page(Prediction): diff --git a/mindee/v1/product/financial_document/__init__.py b/mindee/v1/product/financial_document/__init__.py new file mode 100644 index 00000000..6c7d5523 --- /dev/null +++ b/mindee/v1/product/financial_document/__init__.py @@ -0,0 +1,15 @@ +from mindee.v1.product.financial_document.financial_document_v1 import ( + FinancialDocumentV1, +) +from mindee.v1.product.financial_document.financial_document_v1_document import ( + FinancialDocumentV1Document, +) +from mindee.v1.product.financial_document.financial_document_v1_line_item import ( + FinancialDocumentV1LineItem, +) + +__all__ = [ + "FinancialDocumentV1", + "FinancialDocumentV1Document", + "FinancialDocumentV1LineItem", +] diff --git a/mindee/product/financial_document/financial_document_v1.py b/mindee/v1/product/financial_document/financial_document_v1.py similarity index 85% rename from mindee/product/financial_document/financial_document_v1.py rename to mindee/v1/product/financial_document/financial_document_v1.py index 9880d71d..dca3d2d6 100644 --- a/mindee/product/financial_document/financial_document_v1.py +++ b/mindee/v1/product/financial_document/financial_document_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.financial_document.financial_document_v1_document import ( +from mindee.v1.product.financial_document.financial_document_v1_document import ( FinancialDocumentV1Document, ) diff --git a/mindee/product/financial_document/financial_document_v1_document.py b/mindee/v1/product/financial_document/financial_document_v1_document.py similarity index 94% rename from mindee/product/financial_document/financial_document_v1_document.py rename to mindee/v1/product/financial_document/financial_document_v1_document.py index 57352bdd..c041fc38 100644 --- a/mindee/product/financial_document/financial_document_v1_document.py +++ b/mindee/v1/product/financial_document/financial_document_v1_document.py @@ -1,18 +1,18 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.address import AddressField -from mindee.parsing.standard.amount import AmountField -from mindee.parsing.standard.classification import ClassificationField -from mindee.parsing.standard.company_registration import CompanyRegistrationField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.locale import LocaleField -from mindee.parsing.standard.payment_details import PaymentDetailsField -from mindee.parsing.standard.tax import Taxes -from mindee.parsing.standard.text import StringField -from mindee.product.financial_document.financial_document_v1_line_item import ( +from mindee.v1.parsing.standard.address import AddressField +from mindee.v1.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.parsing.standard.company_registration import CompanyRegistrationField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.locale import LocaleField +from mindee.v1.parsing.standard.payment_details import PaymentDetailsField +from mindee.v1.parsing.standard.tax import Taxes +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.financial_document.financial_document_v1_line_item import ( FinancialDocumentV1LineItem, ) diff --git a/mindee/product/financial_document/financial_document_v1_line_item.py b/mindee/v1/product/financial_document/financial_document_v1_line_item.py similarity index 99% rename from mindee/product/financial_document/financial_document_v1_line_item.py rename to mindee/v1/product/financial_document/financial_document_v1_line_item.py index 7ab4206d..1c5d8b44 100644 --- a/mindee/product/financial_document/financial_document_v1_line_item.py +++ b/mindee/v1/product/financial_document/financial_document_v1_line_item.py @@ -2,7 +2,7 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string, format_for_display -from mindee.parsing.standard.base import ( +from mindee.v1.parsing.standard.base import ( FieldConfidenceMixin, FieldPositionMixin, float_to_string, diff --git a/mindee/v1/product/fr/__init__.py b/mindee/v1/product/fr/__init__.py new file mode 100644 index 00000000..815368ad --- /dev/null +++ b/mindee/v1/product/fr/__init__.py @@ -0,0 +1,49 @@ +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1 import ( + BankAccountDetailsV1, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1_document import ( + BankAccountDetailsV1Document, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2 import ( + BankAccountDetailsV2, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_bban import ( + BankAccountDetailsV2Bban, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_document import ( + BankAccountDetailsV2Document, +) +from mindee.v1.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 +from mindee.v1.product.fr.carte_grise.carte_grise_v1_document import ( + CarteGriseV1Document, +) +from mindee.v1.product.fr.id_card.id_card_v1 import IdCardV1 +from mindee.v1.product.fr.id_card.id_card_v1_document import ( + IdCardV1Document, +) +from mindee.v1.product.fr.id_card.id_card_v1_page import ( + IdCardV1Page, +) +from mindee.v1.product.fr.id_card.id_card_v2 import IdCardV2 +from mindee.v1.product.fr.id_card.id_card_v2_document import ( + IdCardV2Document, +) +from mindee.v1.product.fr.id_card.id_card_v2_page import ( + IdCardV2Page, +) + +__all__ = [ + "BankAccountDetailsV1", + "BankAccountDetailsV1Document", + "BankAccountDetailsV2", + "BankAccountDetailsV2Bban", + "BankAccountDetailsV2Document", + "CarteGriseV1", + "CarteGriseV1Document", + "IdCardV1", + "IdCardV1Document", + "IdCardV1Page", + "IdCardV2", + "IdCardV2Document", + "IdCardV2Page", +] diff --git a/mindee/v1/product/fr/bank_account_details/__init__.py b/mindee/v1/product/fr/bank_account_details/__init__.py new file mode 100644 index 00000000..f95f5883 --- /dev/null +++ b/mindee/v1/product/fr/bank_account_details/__init__.py @@ -0,0 +1,23 @@ +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1 import ( + BankAccountDetailsV1, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1_document import ( + BankAccountDetailsV1Document, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2 import ( + BankAccountDetailsV2, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_bban import ( + BankAccountDetailsV2Bban, +) +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_document import ( + BankAccountDetailsV2Document, +) + +__all__ = [ + "BankAccountDetailsV1", + "BankAccountDetailsV1Document", + "BankAccountDetailsV2", + "BankAccountDetailsV2Bban", + "BankAccountDetailsV2Document", +] diff --git a/mindee/product/fr/bank_account_details/bank_account_details_v1.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py similarity index 85% rename from mindee/product/fr/bank_account_details/bank_account_details_v1.py rename to mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py index 008d68c2..639b9b26 100644 --- a/mindee/product/fr/bank_account_details/bank_account_details_v1.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.bank_account_details.bank_account_details_v1_document import ( +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1_document import ( BankAccountDetailsV1Document, ) diff --git a/mindee/product/fr/bank_account_details/bank_account_details_v1_document.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py similarity index 92% rename from mindee/product/fr/bank_account_details/bank_account_details_v1_document.py rename to mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py index 4a43b3e1..9d4c6d2e 100644 --- a/mindee/product/fr/bank_account_details/bank_account_details_v1_document.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py @@ -1,9 +1,9 @@ from typing import Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.text import StringField class BankAccountDetailsV1Document(Prediction): diff --git a/mindee/product/fr/bank_account_details/bank_account_details_v2.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py similarity index 85% rename from mindee/product/fr/bank_account_details/bank_account_details_v2.py rename to mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py index e1468274..eaae960c 100644 --- a/mindee/product/fr/bank_account_details/bank_account_details_v2.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.bank_account_details.bank_account_details_v2_document import ( +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_document import ( BankAccountDetailsV2Document, ) diff --git a/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_bban.py similarity index 97% rename from mindee/product/fr/bank_account_details/bank_account_details_v2_bban.py rename to mindee/v1/product/fr/bank_account_details/bank_account_details_v2_bban.py index 9ad1b404..ace363a6 100644 --- a/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_bban.py @@ -2,7 +2,7 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string, format_for_display -from mindee.parsing.standard.base import FieldConfidenceMixin, FieldPositionMixin +from mindee.v1.parsing.standard.base import FieldConfidenceMixin, FieldPositionMixin class BankAccountDetailsV2Bban(FieldPositionMixin, FieldConfidenceMixin): diff --git a/mindee/product/fr/bank_account_details/bank_account_details_v2_document.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py similarity index 90% rename from mindee/product/fr/bank_account_details/bank_account_details_v2_document.py rename to mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py index 53d996f9..24004f09 100644 --- a/mindee/product/fr/bank_account_details/bank_account_details_v2_document.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py @@ -1,10 +1,10 @@ from typing import Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.text import StringField -from mindee.product.fr.bank_account_details.bank_account_details_v2_bban import ( +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_bban import ( BankAccountDetailsV2Bban, ) diff --git a/mindee/v1/product/fr/carte_grise/__init__.py b/mindee/v1/product/fr/carte_grise/__init__.py new file mode 100644 index 00000000..963db07f --- /dev/null +++ b/mindee/v1/product/fr/carte_grise/__init__.py @@ -0,0 +1,9 @@ +from mindee.v1.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 +from mindee.v1.product.fr.carte_grise.carte_grise_v1_document import ( + CarteGriseV1Document, +) + +__all__ = [ + "CarteGriseV1", + "CarteGriseV1Document", +] diff --git a/mindee/product/fr/carte_grise/carte_grise_v1.py b/mindee/v1/product/fr/carte_grise/carte_grise_v1.py similarity index 86% rename from mindee/product/fr/carte_grise/carte_grise_v1.py rename to mindee/v1/product/fr/carte_grise/carte_grise_v1.py index ad8a920d..7de08ee2 100644 --- a/mindee/product/fr/carte_grise/carte_grise_v1.py +++ b/mindee/v1/product/fr/carte_grise/carte_grise_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.carte_grise.carte_grise_v1_document import ( +from mindee.v1.product.fr.carte_grise.carte_grise_v1_document import ( CarteGriseV1Document, ) diff --git a/mindee/product/fr/carte_grise/carte_grise_v1_document.py b/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py similarity index 98% rename from mindee/product/fr/carte_grise/carte_grise_v1_document.py rename to mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py index bd8a573c..cd37a33e 100644 --- a/mindee/product/fr/carte_grise/carte_grise_v1_document.py +++ b/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py @@ -1,10 +1,10 @@ from typing import Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class CarteGriseV1Document(Prediction): diff --git a/mindee/v1/product/fr/id_card/__init__.py b/mindee/v1/product/fr/id_card/__init__.py new file mode 100644 index 00000000..a7ff9d17 --- /dev/null +++ b/mindee/v1/product/fr/id_card/__init__.py @@ -0,0 +1,23 @@ +from mindee.v1.product.fr.id_card.id_card_v1 import IdCardV1 +from mindee.v1.product.fr.id_card.id_card_v1_document import ( + IdCardV1Document, +) +from mindee.v1.product.fr.id_card.id_card_v1_page import ( + IdCardV1Page, +) +from mindee.v1.product.fr.id_card.id_card_v2 import IdCardV2 +from mindee.v1.product.fr.id_card.id_card_v2_document import ( + IdCardV2Document, +) +from mindee.v1.product.fr.id_card.id_card_v2_page import ( + IdCardV2Page, +) + +__all__ = [ + "IdCardV1", + "IdCardV1Document", + "IdCardV1Page", + "IdCardV2", + "IdCardV2Document", + "IdCardV2Page", +] diff --git a/mindee/product/fr/id_card/id_card_v1.py b/mindee/v1/product/fr/id_card/id_card_v1.py similarity index 82% rename from mindee/product/fr/id_card/id_card_v1.py rename to mindee/v1/product/fr/id_card/id_card_v1.py index f46ad87c..5aa91667 100644 --- a/mindee/product/fr/id_card/id_card_v1.py +++ b/mindee/v1/product/fr/id_card/id_card_v1.py @@ -1,12 +1,12 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.id_card.id_card_v1_document import ( +from mindee.v1.product.fr.id_card.id_card_v1_document import ( IdCardV1Document, ) -from mindee.product.fr.id_card.id_card_v1_page import ( +from mindee.v1.product.fr.id_card.id_card_v1_page import ( IdCardV1Page, ) diff --git a/mindee/product/fr/id_card/id_card_v1_document.py b/mindee/v1/product/fr/id_card/id_card_v1_document.py similarity index 95% rename from mindee/product/fr/id_card/id_card_v1_document.py rename to mindee/v1/product/fr/id_card/id_card_v1_document.py index 7f1f9187..948bee2e 100644 --- a/mindee/product/fr/id_card/id_card_v1_document.py +++ b/mindee/v1/product/fr/id_card/id_card_v1_document.py @@ -1,10 +1,10 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class IdCardV1Document(Prediction): diff --git a/mindee/product/fr/id_card/id_card_v1_page.py b/mindee/v1/product/fr/id_card/id_card_v1_page.py similarity index 88% rename from mindee/product/fr/id_card/id_card_v1_page.py rename to mindee/v1/product/fr/id_card/id_card_v1_page.py index f82e7672..5b0a5330 100644 --- a/mindee/product/fr/id_card/id_card_v1_page.py +++ b/mindee/v1/product/fr/id_card/id_card_v1_page.py @@ -2,8 +2,8 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.classification import ClassificationField -from mindee.product.fr.id_card.id_card_v1_document import ( +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.product.fr.id_card.id_card_v1_document import ( IdCardV1Document, ) diff --git a/mindee/product/fr/id_card/id_card_v2.py b/mindee/v1/product/fr/id_card/id_card_v2.py similarity index 82% rename from mindee/product/fr/id_card/id_card_v2.py rename to mindee/v1/product/fr/id_card/id_card_v2.py index dff7f9f9..2b8a3df0 100644 --- a/mindee/product/fr/id_card/id_card_v2.py +++ b/mindee/v1/product/fr/id_card/id_card_v2.py @@ -1,12 +1,12 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.fr.id_card.id_card_v2_document import ( +from mindee.v1.product.fr.id_card.id_card_v2_document import ( IdCardV2Document, ) -from mindee.product.fr.id_card.id_card_v2_page import ( +from mindee.v1.product.fr.id_card.id_card_v2_page import ( IdCardV2Page, ) diff --git a/mindee/product/fr/id_card/id_card_v2_document.py b/mindee/v1/product/fr/id_card/id_card_v2_document.py similarity index 96% rename from mindee/product/fr/id_card/id_card_v2_document.py rename to mindee/v1/product/fr/id_card/id_card_v2_document.py index 9466a4b0..96432f1a 100644 --- a/mindee/product/fr/id_card/id_card_v2_document.py +++ b/mindee/v1/product/fr/id_card/id_card_v2_document.py @@ -1,10 +1,10 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class IdCardV2Document(Prediction): diff --git a/mindee/product/fr/id_card/id_card_v2_page.py b/mindee/v1/product/fr/id_card/id_card_v2_page.py similarity index 90% rename from mindee/product/fr/id_card/id_card_v2_page.py rename to mindee/v1/product/fr/id_card/id_card_v2_page.py index 5c5758e0..76a5bc0d 100644 --- a/mindee/product/fr/id_card/id_card_v2_page.py +++ b/mindee/v1/product/fr/id_card/id_card_v2_page.py @@ -2,8 +2,8 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.classification import ClassificationField -from mindee.product.fr.id_card.id_card_v2_document import ( +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.product.fr.id_card.id_card_v2_document import ( IdCardV2Document, ) diff --git a/mindee/product/generated/__init__.py b/mindee/v1/product/generated/__init__.py similarity index 73% rename from mindee/product/generated/__init__.py rename to mindee/v1/product/generated/__init__.py index 36399d60..10b7278d 100644 --- a/mindee/product/generated/__init__.py +++ b/mindee/v1/product/generated/__init__.py @@ -1,4 +1,4 @@ -from mindee.product.generated.generated_v1 import ( +from mindee.v1.product.generated.generated_v1 import ( GeneratedV1, GeneratedV1Document, GeneratedV1Page, diff --git a/mindee/product/generated/generated_v1.py b/mindee/v1/product/generated/generated_v1.py similarity index 78% rename from mindee/product/generated/generated_v1.py rename to mindee/v1/product/generated/generated_v1.py index 83a55bbc..8c984428 100644 --- a/mindee/product/generated/generated_v1.py +++ b/mindee/v1/product/generated/generated_v1.py @@ -1,10 +1,10 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.generated.generated_v1_document import GeneratedV1Document -from mindee.product.generated.generated_v1_page import GeneratedV1Page +from mindee.v1.product.generated.generated_v1_document import GeneratedV1Document +from mindee.v1.product.generated.generated_v1_page import GeneratedV1Page class GeneratedV1(Inference): diff --git a/mindee/product/generated/generated_v1_document.py b/mindee/v1/product/generated/generated_v1_document.py similarity index 84% rename from mindee/product/generated/generated_v1_document.py rename to mindee/v1/product/generated/generated_v1_document.py index b2b80b07..3b24ec9a 100644 --- a/mindee/product/generated/generated_v1_document.py +++ b/mindee/v1/product/generated/generated_v1_document.py @@ -1,13 +1,13 @@ from typing import Dict, Union from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.generated.generated_list import GeneratedListField -from mindee.parsing.generated.generated_object import ( +from mindee.v1.parsing.generated.generated_list import GeneratedListField +from mindee.v1.parsing.generated.generated_object import ( GeneratedObjectField, is_generated_object, ) -from mindee.parsing.standard.text import StringField -from mindee.product.generated.generated_v1_prediction import GeneratedV1Prediction +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.generated.generated_v1_prediction import GeneratedV1Prediction class GeneratedV1Document(GeneratedV1Prediction): diff --git a/mindee/product/generated/generated_v1_page.py b/mindee/v1/product/generated/generated_v1_page.py similarity index 85% rename from mindee/product/generated/generated_v1_page.py rename to mindee/v1/product/generated/generated_v1_page.py index 619f9691..f7b58d05 100644 --- a/mindee/product/generated/generated_v1_page.py +++ b/mindee/v1/product/generated/generated_v1_page.py @@ -1,13 +1,13 @@ from typing import Dict, Optional, Union from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.generated.generated_list import GeneratedListField -from mindee.parsing.generated.generated_object import ( +from mindee.v1.parsing.generated.generated_list import GeneratedListField +from mindee.v1.parsing.generated.generated_object import ( GeneratedObjectField, is_generated_object, ) -from mindee.parsing.standard.text import StringField -from mindee.product.generated.generated_v1_prediction import GeneratedV1Prediction +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.generated.generated_v1_prediction import GeneratedV1Prediction class GeneratedV1Page(GeneratedV1Prediction): diff --git a/mindee/product/generated/generated_v1_prediction.py b/mindee/v1/product/generated/generated_v1_prediction.py similarity index 92% rename from mindee/product/generated/generated_v1_prediction.py rename to mindee/v1/product/generated/generated_v1_prediction.py index 5c466405..c2c934da 100644 --- a/mindee/product/generated/generated_v1_prediction.py +++ b/mindee/v1/product/generated/generated_v1_prediction.py @@ -1,12 +1,12 @@ import re from typing import Dict, List, Union -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.generated.generated_list import GeneratedListField -from mindee.parsing.generated.generated_object import GeneratedObjectField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.generated.generated_list import GeneratedListField +from mindee.v1.parsing.generated.generated_object import GeneratedObjectField +from mindee.v1.parsing.standard.text import StringField class GeneratedV1Prediction(Prediction): diff --git a/mindee/v1/product/international_id/__init__.py b/mindee/v1/product/international_id/__init__.py new file mode 100644 index 00000000..df84b3bd --- /dev/null +++ b/mindee/v1/product/international_id/__init__.py @@ -0,0 +1,9 @@ +from mindee.v1.product.international_id.international_id_v2 import InternationalIdV2 +from mindee.v1.product.international_id.international_id_v2_document import ( + InternationalIdV2Document, +) + +__all__ = [ + "InternationalIdV2", + "InternationalIdV2Document", +] diff --git a/mindee/product/international_id/international_id_v2.py b/mindee/v1/product/international_id/international_id_v2.py similarity index 86% rename from mindee/product/international_id/international_id_v2.py rename to mindee/v1/product/international_id/international_id_v2.py index c6b1d8a1..55539722 100644 --- a/mindee/product/international_id/international_id_v2.py +++ b/mindee/v1/product/international_id/international_id_v2.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.international_id.international_id_v2_document import ( +from mindee.v1.product.international_id.international_id_v2_document import ( InternationalIdV2Document, ) diff --git a/mindee/product/international_id/international_id_v2_document.py b/mindee/v1/product/international_id/international_id_v2_document.py similarity index 95% rename from mindee/product/international_id/international_id_v2_document.py rename to mindee/v1/product/international_id/international_id_v2_document.py index 0b1278c7..e81188cc 100644 --- a/mindee/product/international_id/international_id_v2_document.py +++ b/mindee/v1/product/international_id/international_id_v2_document.py @@ -1,11 +1,11 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.classification import ClassificationField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class InternationalIdV2Document(Prediction): diff --git a/mindee/v1/product/invoice/__init__.py b/mindee/v1/product/invoice/__init__.py new file mode 100644 index 00000000..05caa5e3 --- /dev/null +++ b/mindee/v1/product/invoice/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice.invoice_v4_document import ( + InvoiceV4Document, +) +from mindee.v1.product.invoice.invoice_v4_line_item import ( + InvoiceV4LineItem, +) + +__all__ = [ + "InvoiceV4", + "InvoiceV4Document", + "InvoiceV4LineItem", +] diff --git a/mindee/product/invoice/invoice_v4.py b/mindee/v1/product/invoice/invoice_v4.py similarity index 86% rename from mindee/product/invoice/invoice_v4.py rename to mindee/v1/product/invoice/invoice_v4.py index 159ea964..2b609840 100644 --- a/mindee/product/invoice/invoice_v4.py +++ b/mindee/v1/product/invoice/invoice_v4.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.invoice.invoice_v4_document import ( +from mindee.v1.product.invoice.invoice_v4_document import ( InvoiceV4Document, ) diff --git a/mindee/product/invoice/invoice_v4_document.py b/mindee/v1/product/invoice/invoice_v4_document.py similarity index 93% rename from mindee/product/invoice/invoice_v4_document.py rename to mindee/v1/product/invoice/invoice_v4_document.py index fc4408ed..4498ad96 100644 --- a/mindee/product/invoice/invoice_v4_document.py +++ b/mindee/v1/product/invoice/invoice_v4_document.py @@ -1,18 +1,18 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.address import AddressField -from mindee.parsing.standard.amount import AmountField -from mindee.parsing.standard.classification import ClassificationField -from mindee.parsing.standard.company_registration import CompanyRegistrationField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.locale import LocaleField -from mindee.parsing.standard.payment_details import PaymentDetailsField -from mindee.parsing.standard.tax import Taxes -from mindee.parsing.standard.text import StringField -from mindee.product.invoice.invoice_v4_line_item import InvoiceV4LineItem +from mindee.v1.parsing.standard.address import AddressField +from mindee.v1.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.parsing.standard.company_registration import CompanyRegistrationField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.locale import LocaleField +from mindee.v1.parsing.standard.payment_details import PaymentDetailsField +from mindee.v1.parsing.standard.tax import Taxes +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.invoice.invoice_v4_line_item import InvoiceV4LineItem class InvoiceV4Document(Prediction): diff --git a/mindee/product/invoice/invoice_v4_line_item.py b/mindee/v1/product/invoice/invoice_v4_line_item.py similarity index 99% rename from mindee/product/invoice/invoice_v4_line_item.py rename to mindee/v1/product/invoice/invoice_v4_line_item.py index 84c3b843..f4a87686 100644 --- a/mindee/product/invoice/invoice_v4_line_item.py +++ b/mindee/v1/product/invoice/invoice_v4_line_item.py @@ -2,7 +2,7 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string, format_for_display -from mindee.parsing.standard.base import ( +from mindee.v1.parsing.standard.base import ( FieldConfidenceMixin, FieldPositionMixin, float_to_string, diff --git a/mindee/v1/product/invoice_splitter/__init__.py b/mindee/v1/product/invoice_splitter/__init__.py new file mode 100644 index 00000000..7b58ae67 --- /dev/null +++ b/mindee/v1/product/invoice_splitter/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( + InvoiceSplitterV1Document, +) +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( + InvoiceSplitterV1InvoicePageGroup, +) + +__all__ = [ + "InvoiceSplitterV1", + "InvoiceSplitterV1Document", + "InvoiceSplitterV1InvoicePageGroup", +] diff --git a/mindee/product/invoice_splitter/invoice_splitter_v1.py b/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py similarity index 86% rename from mindee/product/invoice_splitter/invoice_splitter_v1.py rename to mindee/v1/product/invoice_splitter/invoice_splitter_v1.py index 8140bc51..5f69a606 100644 --- a/mindee/product/invoice_splitter/invoice_splitter_v1.py +++ b/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( InvoiceSplitterV1Document, ) diff --git a/mindee/product/invoice_splitter/invoice_splitter_v1_document.py b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py similarity index 93% rename from mindee/product/invoice_splitter/invoice_splitter_v1_document.py rename to mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py index a0e6c071..1615b67c 100644 --- a/mindee/product/invoice_splitter/invoice_splitter_v1_document.py +++ b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py @@ -1,9 +1,9 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_invoice_page_group import ( InvoiceSplitterV1InvoicePageGroup, ) diff --git a/mindee/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py similarity index 95% rename from mindee/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py rename to mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py index 8bb8c2c7..3575efaf 100644 --- a/mindee/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py +++ b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_invoice_page_group.py @@ -2,7 +2,7 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.base import FieldConfidenceMixin, FieldPositionMixin +from mindee.v1.parsing.standard.base import FieldConfidenceMixin, FieldPositionMixin class InvoiceSplitterV1InvoicePageGroup(FieldPositionMixin, FieldConfidenceMixin): diff --git a/mindee/v1/product/multi_receipts_detector/__init__.py b/mindee/v1/product/multi_receipts_detector/__init__.py new file mode 100644 index 00000000..0ac4a64d --- /dev/null +++ b/mindee/v1/product/multi_receipts_detector/__init__.py @@ -0,0 +1,11 @@ +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( + MultiReceiptsDetectorV1, +) +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( + MultiReceiptsDetectorV1Document, +) + +__all__ = [ + "MultiReceiptsDetectorV1", + "MultiReceiptsDetectorV1Document", +] diff --git a/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.py b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py similarity index 85% rename from mindee/product/multi_receipts_detector/multi_receipts_detector_v1.py rename to mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py index 062cc70a..f728b1cb 100644 --- a/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.py +++ b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( MultiReceiptsDetectorV1Document, ) diff --git a/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.py b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py similarity index 90% rename from mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.py rename to mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py index 72be01a3..6e62b3ed 100644 --- a/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.py +++ b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py @@ -1,9 +1,9 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.position import PositionField +from mindee.v1.parsing.standard.position import PositionField class MultiReceiptsDetectorV1Document(Prediction): diff --git a/mindee/v1/product/passport/__init__.py b/mindee/v1/product/passport/__init__.py new file mode 100644 index 00000000..beb0e39e --- /dev/null +++ b/mindee/v1/product/passport/__init__.py @@ -0,0 +1,9 @@ +from mindee.v1.product.passport.passport_v1 import PassportV1 +from mindee.v1.product.passport.passport_v1_document import ( + PassportV1Document, +) + +__all__ = [ + "PassportV1", + "PassportV1Document", +] diff --git a/mindee/product/passport/passport_v1.py b/mindee/v1/product/passport/passport_v1.py similarity index 86% rename from mindee/product/passport/passport_v1.py rename to mindee/v1/product/passport/passport_v1.py index e6333c37..acd3dcb5 100644 --- a/mindee/product/passport/passport_v1.py +++ b/mindee/v1/product/passport/passport_v1.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.passport.passport_v1_document import ( +from mindee.v1.product.passport.passport_v1_document import ( PassportV1Document, ) diff --git a/mindee/product/passport/passport_v1_document.py b/mindee/v1/product/passport/passport_v1_document.py similarity index 95% rename from mindee/product/passport/passport_v1_document.py rename to mindee/v1/product/passport/passport_v1_document.py index 1f757604..73876de5 100644 --- a/mindee/product/passport/passport_v1_document.py +++ b/mindee/v1/product/passport/passport_v1_document.py @@ -1,10 +1,10 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class PassportV1Document(Prediction): diff --git a/mindee/v1/product/receipt/__init__.py b/mindee/v1/product/receipt/__init__.py new file mode 100644 index 00000000..a7b091fb --- /dev/null +++ b/mindee/v1/product/receipt/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.product.receipt.receipt_v5_document import ( + ReceiptV5Document, +) +from mindee.v1.product.receipt.receipt_v5_line_item import ( + ReceiptV5LineItem, +) + +__all__ = [ + "ReceiptV5", + "ReceiptV5Document", + "ReceiptV5LineItem", +] diff --git a/mindee/product/receipt/receipt_v5.py b/mindee/v1/product/receipt/receipt_v5.py similarity index 86% rename from mindee/product/receipt/receipt_v5.py rename to mindee/v1/product/receipt/receipt_v5.py index a11e8754..7c42fca6 100644 --- a/mindee/product/receipt/receipt_v5.py +++ b/mindee/v1/product/receipt/receipt_v5.py @@ -1,9 +1,9 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.receipt.receipt_v5_document import ( +from mindee.v1.product.receipt.receipt_v5_document import ( ReceiptV5Document, ) diff --git a/mindee/product/receipt/receipt_v5_document.py b/mindee/v1/product/receipt/receipt_v5_document.py similarity index 91% rename from mindee/product/receipt/receipt_v5_document.py rename to mindee/v1/product/receipt/receipt_v5_document.py index 7a5961db..fc9a2c12 100644 --- a/mindee/product/receipt/receipt_v5_document.py +++ b/mindee/v1/product/receipt/receipt_v5_document.py @@ -1,16 +1,16 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.amount import AmountField -from mindee.parsing.standard.classification import ClassificationField -from mindee.parsing.standard.company_registration import CompanyRegistrationField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.locale import LocaleField -from mindee.parsing.standard.tax import Taxes -from mindee.parsing.standard.text import StringField -from mindee.product.receipt.receipt_v5_line_item import ReceiptV5LineItem +from mindee.v1.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard.classification import ClassificationField +from mindee.v1.parsing.standard.company_registration import CompanyRegistrationField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.locale import LocaleField +from mindee.v1.parsing.standard.tax import Taxes +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.receipt.receipt_v5_line_item import ReceiptV5LineItem class ReceiptV5Document(Prediction): diff --git a/mindee/product/receipt/receipt_v5_line_item.py b/mindee/v1/product/receipt/receipt_v5_line_item.py similarity index 98% rename from mindee/product/receipt/receipt_v5_line_item.py rename to mindee/v1/product/receipt/receipt_v5_line_item.py index c5f87f5f..0b041937 100644 --- a/mindee/product/receipt/receipt_v5_line_item.py +++ b/mindee/v1/product/receipt/receipt_v5_line_item.py @@ -2,7 +2,7 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string, format_for_display -from mindee.parsing.standard.base import ( +from mindee.v1.parsing.standard.base import ( FieldConfidenceMixin, FieldPositionMixin, float_to_string, diff --git a/mindee/v1/product/us/__init__.py b/mindee/v1/product/us/__init__.py new file mode 100644 index 00000000..b7293ccc --- /dev/null +++ b/mindee/v1/product/us/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.us.bank_check.bank_check_v1 import BankCheckV1 +from mindee.v1.product.us.bank_check.bank_check_v1_document import ( + BankCheckV1Document, +) +from mindee.v1.product.us.bank_check.bank_check_v1_page import ( + BankCheckV1Page, +) + +__all__ = [ + "BankCheckV1", + "BankCheckV1Document", + "BankCheckV1Page", +] diff --git a/mindee/v1/product/us/bank_check/__init__.py b/mindee/v1/product/us/bank_check/__init__.py new file mode 100644 index 00000000..b7293ccc --- /dev/null +++ b/mindee/v1/product/us/bank_check/__init__.py @@ -0,0 +1,13 @@ +from mindee.v1.product.us.bank_check.bank_check_v1 import BankCheckV1 +from mindee.v1.product.us.bank_check.bank_check_v1_document import ( + BankCheckV1Document, +) +from mindee.v1.product.us.bank_check.bank_check_v1_page import ( + BankCheckV1Page, +) + +__all__ = [ + "BankCheckV1", + "BankCheckV1Document", + "BankCheckV1Page", +] diff --git a/mindee/product/us/bank_check/bank_check_v1.py b/mindee/v1/product/us/bank_check/bank_check_v1.py similarity index 81% rename from mindee/product/us/bank_check/bank_check_v1.py rename to mindee/v1/product/us/bank_check/bank_check_v1.py index a48d3315..aea6d486 100644 --- a/mindee/product/us/bank_check/bank_check_v1.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1.py @@ -1,12 +1,12 @@ from typing import List -from mindee.parsing.common.inference import Inference -from mindee.parsing.common.page import Page +from mindee.v1.parsing.common.inference import Inference +from mindee.v1.parsing.common.page import Page from mindee.parsing.common.string_dict import StringDict -from mindee.product.us.bank_check.bank_check_v1_document import ( +from mindee.v1.product.us.bank_check.bank_check_v1_document import ( BankCheckV1Document, ) -from mindee.product.us.bank_check.bank_check_v1_page import ( +from mindee.v1.product.us.bank_check.bank_check_v1_page import ( BankCheckV1Page, ) diff --git a/mindee/product/us/bank_check/bank_check_v1_document.py b/mindee/v1/product/us/bank_check/bank_check_v1_document.py similarity index 90% rename from mindee/product/us/bank_check/bank_check_v1_document.py rename to mindee/v1/product/us/bank_check/bank_check_v1_document.py index 5b320763..b23c1072 100644 --- a/mindee/product/us/bank_check/bank_check_v1_document.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1_document.py @@ -1,11 +1,11 @@ from typing import List, Optional -from mindee.parsing.common.prediction import Prediction +from mindee.v1.parsing.common.prediction import Prediction from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.amount import AmountField -from mindee.parsing.standard.date import DateField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard.date import DateField +from mindee.v1.parsing.standard.text import StringField class BankCheckV1Document(Prediction): diff --git a/mindee/product/us/bank_check/bank_check_v1_page.py b/mindee/v1/product/us/bank_check/bank_check_v1_page.py similarity index 91% rename from mindee/product/us/bank_check/bank_check_v1_page.py rename to mindee/v1/product/us/bank_check/bank_check_v1_page.py index aac6bf47..334cc55a 100644 --- a/mindee/product/us/bank_check/bank_check_v1_page.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1_page.py @@ -2,8 +2,8 @@ from mindee.parsing.common.string_dict import StringDict from mindee.parsing.common.summary_helper import clean_out_string -from mindee.parsing.standard.position import PositionField -from mindee.product.us.bank_check.bank_check_v1_document import ( +from mindee.v1.parsing.standard.position import PositionField +from mindee.v1.product.us.bank_check.bank_check_v1_document import ( BankCheckV1Document, ) diff --git a/mindee/v2/__init__.py b/mindee/v2/__init__.py index 5a8d973e..719789b0 100644 --- a/mindee/v2/__init__.py +++ b/mindee/v2/__init__.py @@ -1,22 +1,24 @@ +from mindee.v2.client import Client from mindee.v2.file_operations.crop import ( extract_crops, extract_single_crop, ) from mindee.v2.file_operations.split import extract_splits -from mindee.v2.product.classification.classification_parameters import ( +from mindee.v2.product.classification.param.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( ClassificationResponse, ) -from mindee.v2.product.crop.crop_parameters import CropParameters +from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse -from mindee.v2.product.ocr.ocr_parameters import OCRParameters +from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse -from mindee.v2.product.split.split_parameters import SplitParameters +from mindee.v2.product.split.params.split_parameters import SplitParameters from mindee.v2.product.split.split_response import SplitResponse __all__ = [ + "Client", "extract_crops", "extract_splits", "extract_crops", diff --git a/mindee/client_v2.py b/mindee/v2/client.py similarity index 92% rename from mindee/client_v2.py rename to mindee/v2/client.py index 68c466e0..3ea75d1b 100644 --- a/mindee/client_v2.py +++ b/mindee/v2/client.py @@ -4,9 +4,10 @@ from mindee.client_mixin import ClientMixin from mindee.error.mindee_error import MindeeError -from mindee.error.mindee_http_error_v2 import handle_error_v2 -from mindee.input import UrlInputSource, BaseParameters -from mindee.input.inference_parameters import InferenceParameters +from mindee.error.v2.mindee_http_error_v2 import handle_error_v2 +from mindee.input import UrlInputSource +from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters from mindee.input.polling_options import PollingOptions from mindee.input.sources.local_input_source import LocalInputSource from mindee.logger import logger @@ -15,15 +16,15 @@ is_valid_get_response, is_valid_post_response, ) -from mindee.parsing.v2.common_response import CommonStatus -from mindee.parsing.v2.base_response import BaseResponse -from mindee.parsing.v2.inference_response import InferenceResponse -from mindee.parsing.v2.job_response import JobResponse +from mindee.parsing.common.common_response import CommonStatus +from mindee.v2.parsing.inference.base_response import BaseResponse +from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.parsing.inference.job_response import JobResponse TypeBaseResponse = TypeVar("TypeBaseResponse", bound=BaseResponse) -class ClientV2(ClientMixin): +class Client(ClientMixin): """ Mindee API Client. diff --git a/mindee/v2/commands/cli_parser.py b/mindee/v2/commands/cli_parser.py index 305126f7..fc4a895f 100644 --- a/mindee/v2/commands/cli_parser.py +++ b/mindee/v2/commands/cli_parser.py @@ -3,7 +3,6 @@ from typing import Optional, Type, Union from mindee import ( - ClientV2, InferenceResponse, CropResponse, SplitResponse, @@ -13,10 +12,11 @@ CropParameters, SplitParameters, ) -from mindee.input import BaseParameters +from mindee.v2.client import Client from mindee.input.sources import PathInput, UrlInputSource -from mindee.parsing.v2.base_response import BaseResponse +from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.parsing.inference.base_response import BaseResponse @dataclass @@ -81,7 +81,7 @@ class MindeeParser: """Parser options.""" parsed_args: Namespace """Stores attributes relating to parsing.""" - client: ClientV2 + client: Client """Mindee client""" input_source: Union[PathInput, UrlInputSource] """Document to be parsed.""" @@ -90,7 +90,7 @@ def __init__( self, parser: Optional[MindeeArgumentParser] = None, parsed_args: Optional[Namespace] = None, - client: Optional[ClientV2] = None, + client: Optional[Client] = None, ) -> None: self.parser = ( parser if parser else MindeeArgumentParser(description="Mindee_API") @@ -100,7 +100,7 @@ def __init__( self.client = client else: api_key = self.parsed_args.api_key if "api_key" in self.parsed_args else "" - self.client = ClientV2(api_key=api_key) + self.client = Client(api_key=api_key) self.input_source = self._get_input_source() def call_parse(self) -> None: diff --git a/mindee/v2/file_operations/crop.py b/mindee/v2/file_operations/crop.py index b2d416df..b98ea19a 100644 --- a/mindee/v2/file_operations/crop.py +++ b/mindee/v2/file_operations/crop.py @@ -4,7 +4,7 @@ from mindee.extraction import ExtractedImage, extract_multiple_images_from_source from mindee.geometry import Point, Polygon from mindee.input.sources.local_input_source import LocalInputSource -from mindee.parsing.v2.field import FieldLocation +from mindee.v2.parsing.inference.field import FieldLocation from mindee.v2.file_operations.crop_files import CropFiles from mindee.v2.product.crop.crop_box import CropBox diff --git a/mindee/v2/input/__init__.py b/mindee/v2/input/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/mindee/input/base_parameters.py b/mindee/v2/input/base_parameters.py similarity index 100% rename from mindee/input/base_parameters.py rename to mindee/v2/input/base_parameters.py diff --git a/mindee/v2/parsing/__init__.py b/mindee/v2/parsing/__init__.py index 3d83d32f..85bf748e 100644 --- a/mindee/v2/parsing/__init__.py +++ b/mindee/v2/parsing/__init__.py @@ -1,7 +1,25 @@ -from mindee.parsing.v2.base_inference import BaseInference -from mindee.parsing.v2.base_response import BaseResponse +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.product.extraction.inference import Inference +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.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.inference_result import InferenceResult +from mindee.v2.parsing.inference.job_response import JobResponse __all__ = [ "BaseInference", "BaseResponse", + "Inference", + "InferenceActiveOptions", + "InferenceFile", + "InferenceModel", + "InferenceResponse", + "InferenceResult", + "JobResponse", + "ErrorResponse", + "ErrorItem", ] diff --git a/mindee/v2/parsing/inference/__init__.py b/mindee/v2/parsing/inference/__init__.py index 3d83d32f..e69de29b 100644 --- a/mindee/v2/parsing/inference/__init__.py +++ b/mindee/v2/parsing/inference/__init__.py @@ -1,7 +0,0 @@ -from mindee.parsing.v2.base_inference import BaseInference -from mindee.parsing.v2.base_response import BaseResponse - -__all__ = [ - "BaseInference", - "BaseResponse", -] diff --git a/mindee/v2/parsing/inference/base_inference.py b/mindee/v2/parsing/inference/base_inference.py index 215b3a1a..80f129da 100644 --- a/mindee/v2/parsing/inference/base_inference.py +++ b/mindee/v2/parsing/inference/base_inference.py @@ -1,3 +1,29 @@ -from mindee.parsing.v2.base_inference import BaseInference, TypeBaseInference +from abc import ABC +from typing import TypeVar -__all__ = ["BaseInference", "TypeBaseInference"] +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.inference_file import InferenceFile +from mindee.v2.parsing.inference.inference_job import InferenceJob +from mindee.v2.parsing.inference.inference_model import InferenceModel + + +class BaseInference(ABC): + """Base class for V2 inference objects.""" + + job: InferenceJob + """Job the inference belongs to.""" + model: InferenceModel + """Model info for the inference.""" + file: InferenceFile + """File info for the inference.""" + id: str + """ID of the inference.""" + + def __init__(self, raw_response: StringDict): + self.id = raw_response["id"] + self.job = InferenceJob(raw_response["job"]) + self.model = InferenceModel(raw_response["model"]) + self.file = InferenceFile(raw_response["file"]) + + +TypeBaseInference = TypeVar("TypeBaseInference", bound=BaseInference) diff --git a/mindee/v2/parsing/inference/base_response.py b/mindee/v2/parsing/inference/base_response.py index f2917467..5baf73d8 100644 --- a/mindee/v2/parsing/inference/base_response.py +++ b/mindee/v2/parsing/inference/base_response.py @@ -1,3 +1,21 @@ -from mindee.parsing.v2.base_response import BaseResponse +from abc import ABC -__all__ = ["BaseResponse"] +from mindee.v2.parsing.inference.base_inference import BaseInference +from mindee.parsing.common.common_response import CommonResponse + + +class BaseResponse(ABC, CommonResponse): + """Base class for V2 inference responses.""" + + inference: BaseInference + """The inference result for a split utility request""" + _slug: str + """Slug of the inference.""" + + def __str__(self) -> str: + return str(self.inference) + + @classmethod + def get_result_slug(cls) -> str: + """Getter for the inference slug.""" + return cls._slug diff --git a/mindee/parsing/v2/error_item.py b/mindee/v2/parsing/inference/error_item.py similarity index 87% rename from mindee/parsing/v2/error_item.py rename to mindee/v2/parsing/inference/error_item.py index 8d9aad96..78d9e7cf 100644 --- a/mindee/parsing/v2/error_item.py +++ b/mindee/v2/parsing/inference/error_item.py @@ -1,6 +1,6 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class ErrorItem: diff --git a/mindee/parsing/v2/error_response.py b/mindee/v2/parsing/inference/error_response.py similarity index 90% rename from mindee/parsing/v2/error_response.py rename to mindee/v2/parsing/inference/error_response.py index 0a0191b3..e9673175 100644 --- a/mindee/parsing/v2/error_response.py +++ b/mindee/v2/parsing/inference/error_response.py @@ -1,7 +1,7 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.error_item import ErrorItem +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.error_item import ErrorItem class ErrorResponse: diff --git a/mindee/v2/parsing/inference/field/__init__.py b/mindee/v2/parsing/inference/field/__init__.py new file mode 100644 index 00000000..0975d6d4 --- /dev/null +++ b/mindee/v2/parsing/inference/field/__init__.py @@ -0,0 +1,17 @@ +from mindee.v2.parsing.inference.field.base_field import BaseField +from mindee.v2.parsing.inference.field.field_confidence import FieldConfidence +from mindee.v2.parsing.inference.field.field_location import FieldLocation +from mindee.v2.parsing.inference.field.inference_fields import InferenceFields +from mindee.v2.parsing.inference.field.list_field import ListField +from mindee.v2.parsing.inference.field.object_field import ObjectField +from mindee.v2.parsing.inference.field.simple_field import SimpleField + +__all__ = [ + "BaseField", + "FieldConfidence", + "FieldLocation", + "ListField", + "ObjectField", + "SimpleField", + "InferenceFields", +] diff --git a/mindee/parsing/v2/field/base_field.py b/mindee/v2/parsing/inference/field/base_field.py similarity index 76% rename from mindee/parsing/v2/field/base_field.py rename to mindee/v2/parsing/inference/field/base_field.py index 8217f40c..d7cea841 100644 --- a/mindee/parsing/v2/field/base_field.py +++ b/mindee/v2/parsing/inference/field/base_field.py @@ -1,9 +1,9 @@ from typing import List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.dynamic_field import DynamicField, FieldType -from mindee.parsing.v2.field.field_confidence import FieldConfidence -from mindee.parsing.v2.field.field_location import FieldLocation +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): diff --git a/mindee/parsing/v2/field/dynamic_field.py b/mindee/v2/parsing/inference/field/dynamic_field.py similarity index 74% rename from mindee/parsing/v2/field/dynamic_field.py rename to mindee/v2/parsing/inference/field/dynamic_field.py index d32a9128..24e27f01 100644 --- a/mindee/parsing/v2/field/dynamic_field.py +++ b/mindee/v2/parsing/inference/field/dynamic_field.py @@ -3,12 +3,12 @@ from typing import TYPE_CHECKING, Union from mindee.error import MindeeApiV2Error -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict if TYPE_CHECKING: - from mindee.parsing.v2.field.list_field import ListField - from mindee.parsing.v2.field.object_field import ObjectField - from mindee.parsing.v2.field.simple_field import SimpleField + from mindee.v2.parsing.inference.field.object_field import ObjectField + from mindee.v2.parsing.inference.field.list_field import ListField + from mindee.v2.parsing.inference.field.simple_field import SimpleField class FieldType(str, Enum): @@ -46,13 +46,13 @@ def get_field_type( """Get appropriate field types.""" if isinstance(raw_response, dict): if "value" in raw_response: - field_file = import_module("mindee.parsing.v2.field.simple_field") + field_file = import_module("mindee.v2.parsing.inference.field.simple_field") field_class = getattr(field_file, FieldType.SIMPLE.value) elif "items" in raw_response: - field_file = import_module("mindee.parsing.v2.field.list_field") + field_file = import_module("mindee.v2.parsing.inference.field.list_field") field_class = getattr(field_file, FieldType.LIST.value) elif "fields" in raw_response: - field_file = import_module("mindee.parsing.v2.field.object_field") + field_file = import_module("mindee.v2.parsing.inference.field.object_field") field_class = getattr(field_file, FieldType.OBJECT.value) else: raise MindeeApiV2Error(f"Unrecognized field type in {raw_response}.") diff --git a/mindee/parsing/v2/field/field_confidence.py b/mindee/v2/parsing/inference/field/field_confidence.py similarity index 100% rename from mindee/parsing/v2/field/field_confidence.py rename to mindee/v2/parsing/inference/field/field_confidence.py diff --git a/mindee/parsing/v2/field/field_location.py b/mindee/v2/parsing/inference/field/field_location.py similarity index 93% rename from mindee/parsing/v2/field/field_location.py rename to mindee/v2/parsing/inference/field/field_location.py index 31ca7056..8dae3c5f 100644 --- a/mindee/parsing/v2/field/field_location.py +++ b/mindee/v2/parsing/inference/field/field_location.py @@ -1,5 +1,5 @@ from mindee.geometry.polygon import Polygon -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class FieldLocation: diff --git a/mindee/parsing/v2/field/inference_fields.py b/mindee/v2/parsing/inference/field/inference_fields.py similarity index 90% rename from mindee/parsing/v2/field/inference_fields.py rename to mindee/v2/parsing/inference/field/inference_fields.py index 7e6368b0..652c26f6 100644 --- a/mindee/parsing/v2/field/inference_fields.py +++ b/mindee/v2/parsing/inference/field/inference_fields.py @@ -1,7 +1,7 @@ from typing import Dict -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.dynamic_field import ( +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field.dynamic_field import ( FieldType, FieldTypeAlias, get_field_type, diff --git a/mindee/parsing/v2/field/list_field.py b/mindee/v2/parsing/inference/field/list_field.py similarity index 83% rename from mindee/parsing/v2/field/list_field.py rename to mindee/v2/parsing/inference/field/list_field.py index b37f1e2f..6840d5a9 100644 --- a/mindee/parsing/v2/field/list_field.py +++ b/mindee/v2/parsing/inference/field/list_field.py @@ -1,14 +1,14 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.base_field import BaseField -from mindee.parsing.v2.field.dynamic_field import ( +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field.base_field import BaseField +from mindee.v2.parsing.inference.field.dynamic_field import ( DynamicField, FieldType, get_field_type, ) -from mindee.parsing.v2.field.object_field import ObjectField -from mindee.parsing.v2.field.simple_field import SimpleField +from mindee.v2.parsing.inference.field.object_field import ObjectField +from mindee.v2.parsing.inference.field.simple_field import SimpleField class ListField(BaseField): diff --git a/mindee/parsing/v2/field/object_field.py b/mindee/v2/parsing/inference/field/object_field.py similarity index 92% rename from mindee/parsing/v2/field/object_field.py rename to mindee/v2/parsing/inference/field/object_field.py index 564dc8b3..6b2355c9 100644 --- a/mindee/parsing/v2/field/object_field.py +++ b/mindee/v2/parsing/inference/field/object_field.py @@ -1,12 +1,12 @@ from typing import TYPE_CHECKING, Dict, cast -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.base_field import BaseField -from mindee.parsing.v2.field.dynamic_field import FieldType -from mindee.parsing.v2.field.inference_fields import InferenceFields +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field.base_field import BaseField +from mindee.v2.parsing.inference.field.dynamic_field import FieldType +from mindee.v2.parsing.inference.field.inference_fields import InferenceFields if TYPE_CHECKING: - from mindee.parsing.v2.field.list_field import ListField - from mindee.parsing.v2.field.simple_field import SimpleField + from mindee.v2.parsing.inference.field.list_field import ListField + from mindee.v2.parsing.inference.field.simple_field import SimpleField class ObjectField(BaseField): diff --git a/mindee/parsing/v2/field/simple_field.py b/mindee/v2/parsing/inference/field/simple_field.py similarity index 78% rename from mindee/parsing/v2/field/simple_field.py rename to mindee/v2/parsing/inference/field/simple_field.py index 0574093d..0ad97e2a 100644 --- a/mindee/parsing/v2/field/simple_field.py +++ b/mindee/v2/parsing/inference/field/simple_field.py @@ -1,8 +1,8 @@ from typing import Union -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.base_field import BaseField -from mindee.parsing.v2.field.dynamic_field import FieldType +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field.base_field import BaseField +from mindee.v2.parsing.inference.field.dynamic_field import FieldType class SimpleField(BaseField): diff --git a/mindee/parsing/v2/inference_active_options.py b/mindee/v2/parsing/inference/inference_active_options.py similarity index 97% rename from mindee/parsing/v2/inference_active_options.py rename to mindee/v2/parsing/inference/inference_active_options.py index 4c894aef..730eb8b7 100644 --- a/mindee/parsing/v2/inference_active_options.py +++ b/mindee/v2/parsing/inference/inference_active_options.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class DataSchemaActiveOptions: diff --git a/mindee/parsing/v2/inference_file.py b/mindee/v2/parsing/inference/inference_file.py similarity index 93% rename from mindee/parsing/v2/inference_file.py rename to mindee/v2/parsing/inference/inference_file.py index 5cd950f5..98151ec9 100644 --- a/mindee/parsing/v2/inference_file.py +++ b/mindee/v2/parsing/inference/inference_file.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class InferenceFile: diff --git a/mindee/v2/parsing/inference/inference_job.py b/mindee/v2/parsing/inference/inference_job.py index 3315d39c..19519260 100644 --- a/mindee/v2/parsing/inference/inference_job.py +++ b/mindee/v2/parsing/inference/inference_job.py @@ -1,3 +1,14 @@ -from mindee.parsing.v2.inference_job import InferenceJob +from mindee.parsing.common import StringDict -__all__ = ["InferenceJob"] + +class InferenceJob: + """Inference Job info.""" + + id: str + """UUID of the Job.""" + + def __init__(self, raw_response: StringDict) -> None: + self.id = raw_response["id"] + + def __str__(self) -> str: + return f"Job\n===\n:ID: {self.id}" diff --git a/mindee/parsing/v2/inference_model.py b/mindee/v2/parsing/inference/inference_model.py similarity index 82% rename from mindee/parsing/v2/inference_model.py rename to mindee/v2/parsing/inference/inference_model.py index c44c4d0a..a93f65da 100644 --- a/mindee/parsing/v2/inference_model.py +++ b/mindee/v2/parsing/inference/inference_model.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class InferenceModel: diff --git a/mindee/parsing/v2/job.py b/mindee/v2/parsing/inference/job.py similarity index 91% rename from mindee/parsing/v2/job.py rename to mindee/v2/parsing/inference/job.py index 662efbbc..606e96f9 100644 --- a/mindee/parsing/v2/job.py +++ b/mindee/v2/parsing/inference/job.py @@ -1,9 +1,9 @@ from datetime import datetime from typing import List, Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.error_response import ErrorResponse -from mindee.parsing.v2.job_webhook import JobWebhook +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.error_response import ErrorResponse +from mindee.v2.parsing.inference.job_webhook import JobWebhook class Job: diff --git a/mindee/parsing/v2/job_response.py b/mindee/v2/parsing/inference/job_response.py similarity index 64% rename from mindee/parsing/v2/job_response.py rename to mindee/v2/parsing/inference/job_response.py index ae1e3656..cc42c023 100644 --- a/mindee/parsing/v2/job_response.py +++ b/mindee/v2/parsing/inference/job_response.py @@ -1,6 +1,6 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.common_response import CommonResponse -from mindee.parsing.v2.job import Job +from mindee.parsing.common import StringDict +from mindee.parsing.common.common_response import CommonResponse +from mindee.v2.parsing.inference.job import Job class JobResponse(CommonResponse): diff --git a/mindee/parsing/v2/job_webhook.py b/mindee/v2/parsing/inference/job_webhook.py similarity index 89% rename from mindee/parsing/v2/job_webhook.py rename to mindee/v2/parsing/inference/job_webhook.py index daf421e1..f539e60d 100644 --- a/mindee/parsing/v2/job_webhook.py +++ b/mindee/v2/parsing/inference/job_webhook.py @@ -1,8 +1,8 @@ from datetime import datetime from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.error_response import ErrorResponse +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.error_response import ErrorResponse class JobWebhook: diff --git a/mindee/parsing/v2/rag_metadata.py b/mindee/v2/parsing/inference/rag_metadata.py similarity index 82% rename from mindee/parsing/v2/rag_metadata.py rename to mindee/v2/parsing/inference/rag_metadata.py index 04f875af..40eb00a9 100644 --- a/mindee/parsing/v2/rag_metadata.py +++ b/mindee/v2/parsing/inference/rag_metadata.py @@ -1,6 +1,6 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class RagMetadata: diff --git a/mindee/parsing/v2/raw_text.py b/mindee/v2/parsing/inference/raw_text.py similarity index 82% rename from mindee/parsing/v2/raw_text.py rename to mindee/v2/parsing/inference/raw_text.py index 7f6c0d54..61dd6b26 100644 --- a/mindee/parsing/v2/raw_text.py +++ b/mindee/v2/parsing/inference/raw_text.py @@ -1,7 +1,7 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.raw_text_page import RawTextPage +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.raw_text_page import RawTextPage class RawText: diff --git a/mindee/parsing/v2/raw_text_page.py b/mindee/v2/parsing/inference/raw_text_page.py similarity index 79% rename from mindee/parsing/v2/raw_text_page.py rename to mindee/v2/parsing/inference/raw_text_page.py index b10c68c7..e3eaf041 100644 --- a/mindee/parsing/v2/raw_text_page.py +++ b/mindee/v2/parsing/inference/raw_text_page.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict class RawTextPage: diff --git a/mindee/v2/product/__init__.py b/mindee/v2/product/__init__.py index 6d5b3bc3..63daf638 100644 --- a/mindee/v2/product/__init__.py +++ b/mindee/v2/product/__init__.py @@ -1,14 +1,14 @@ -from mindee.v2.product.classification.classification_parameters import ( +from mindee.v2.product.classification.param.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( ClassificationResponse, ) -from mindee.v2.product.crop.crop_parameters import CropParameters +from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse -from mindee.v2.product.ocr.ocr_parameters import OCRParameters +from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse -from mindee.v2.product.split.split_parameters import SplitParameters +from mindee.v2.product.split.params.split_parameters import SplitParameters from mindee.v2.product.split.split_response import SplitResponse __all__ = [ diff --git a/mindee/v2/product/classification/__init__.py b/mindee/v2/product/classification/__init__.py index 61fddbf5..ee60dadf 100644 --- a/mindee/v2/product/classification/__init__.py +++ b/mindee/v2/product/classification/__init__.py @@ -4,7 +4,7 @@ from mindee.v2.product.classification.classification_inference import ( ClassificationInference, ) -from mindee.v2.product.classification.classification_parameters import ( +from mindee.v2.product.classification.param.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( diff --git a/mindee/v2/product/classification/classification_classifier.py b/mindee/v2/product/classification/classification_classifier.py index fb3c3e8e..c196290e 100644 --- a/mindee/v2/product/classification/classification_classifier.py +++ b/mindee/v2/product/classification/classification_classifier.py @@ -1,7 +1,7 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.inference_response import InferenceResponse +from mindee.parsing.common import StringDict +from mindee.v2.product.extraction.inference_response import InferenceResponse class ClassificationClassifier: diff --git a/mindee/v2/product/classification/classification_inference.py b/mindee/v2/product/classification/classification_inference.py index 274be69e..7953059e 100644 --- a/mindee/v2/product/classification/classification_inference.py +++ b/mindee/v2/product/classification/classification_inference.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_inference import BaseInference +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_inference import BaseInference from mindee.v2.product.classification.classification_result import ClassificationResult diff --git a/mindee/v2/product/classification/classification_response.py b/mindee/v2/product/classification/classification_response.py index 78d7e520..2e5380ed 100644 --- a/mindee/v2/product/classification/classification_response.py +++ b/mindee/v2/product/classification/classification_response.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_response import BaseResponse +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_response import BaseResponse from mindee.v2.product.classification.classification_inference import ( ClassificationInference, ) diff --git a/mindee/v2/product/classification/classification_result.py b/mindee/v2/product/classification/classification_result.py index 2d314ffb..9bad332c 100644 --- a/mindee/v2/product/classification/classification_result.py +++ b/mindee/v2/product/classification/classification_result.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.product.classification.classification_classifier import ( ClassificationClassifier, ) diff --git a/mindee/v2/product/classification/param/__init__.py b/mindee/v2/product/classification/param/__init__.py new file mode 100644 index 00000000..3d594b77 --- /dev/null +++ b/mindee/v2/product/classification/param/__init__.py @@ -0,0 +1,5 @@ +from mindee.v2.product.classification.param.classification_parameters import ( + ClassificationParameters, +) + +__all__ = ["ClassificationParameters"] diff --git a/mindee/v2/product/classification/classification_parameters.py b/mindee/v2/product/classification/param/classification_parameters.py similarity index 75% rename from mindee/v2/product/classification/classification_parameters.py rename to mindee/v2/product/classification/param/classification_parameters.py index e09cf319..86194d80 100644 --- a/mindee/v2/product/classification/classification_parameters.py +++ b/mindee/v2/product/classification/param/classification_parameters.py @@ -1,4 +1,4 @@ -from mindee.input.base_parameters import BaseParameters +from mindee.v2.input.base_parameters import BaseParameters class ClassificationParameters(BaseParameters): diff --git a/mindee/v2/product/crop/__init__.py b/mindee/v2/product/crop/__init__.py index 9a8d525c..70cabc23 100644 --- a/mindee/v2/product/crop/__init__.py +++ b/mindee/v2/product/crop/__init__.py @@ -1,7 +1,7 @@ from mindee.v2.product.crop.crop_box import CropBox from mindee.v2.product.crop.crop_inference import CropInference from mindee.v2.product.crop.crop_item import CropItem -from mindee.v2.product.crop.crop_parameters import CropParameters +from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse from mindee.v2.product.crop.crop_result import CropResult diff --git a/mindee/v2/product/crop/crop_box.py b/mindee/v2/product/crop/crop_box.py index 68c461dd..4508575f 100644 --- a/mindee/v2/product/crop/crop_box.py +++ b/mindee/v2/product/crop/crop_box.py @@ -1,10 +1,10 @@ from typing import Optional from mindee.extraction import ExtractedImage, extract_multiple_images_from_source -from mindee.input import LocalInputSource -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field import FieldLocation -from mindee.parsing.v2.inference_response import InferenceResponse +from mindee.input.sources.local_input_source import LocalInputSource +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field import FieldLocation +from mindee.v2.product.extraction.inference_response import InferenceResponse class CropBox: diff --git a/mindee/v2/product/crop/crop_inference.py b/mindee/v2/product/crop/crop_inference.py index 25298d9f..9ac140e0 100644 --- a/mindee/v2/product/crop/crop_inference.py +++ b/mindee/v2/product/crop/crop_inference.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_inference import BaseInference +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_inference import BaseInference from mindee.v2.product.crop.crop_result import CropResult diff --git a/mindee/v2/product/crop/crop_response.py b/mindee/v2/product/crop/crop_response.py index f63a1fcc..253fe36d 100644 --- a/mindee/v2/product/crop/crop_response.py +++ b/mindee/v2/product/crop/crop_response.py @@ -1,7 +1,7 @@ from mindee.input.sources.local_input_source import LocalInputSource -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.file_operations.crop_files import CropFiles -from mindee.parsing.v2.base_response import BaseResponse +from mindee.v2.parsing.inference.base_response import BaseResponse from mindee.v2.product.crop.crop_inference import CropInference diff --git a/mindee/v2/product/crop/crop_result.py b/mindee/v2/product/crop/crop_result.py index f74521dc..5701e2da 100644 --- a/mindee/v2/product/crop/crop_result.py +++ b/mindee/v2/product/crop/crop_result.py @@ -1,6 +1,6 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.product.crop.crop_item import CropItem diff --git a/mindee/v2/product/crop/params/__init__.py b/mindee/v2/product/crop/params/__init__.py new file mode 100644 index 00000000..17148f2f --- /dev/null +++ b/mindee/v2/product/crop/params/__init__.py @@ -0,0 +1,3 @@ +from mindee.v2.product.crop.params.crop_parameters import CropParameters + +__all__ = ["CropParameters"] diff --git a/mindee/v2/product/crop/crop_parameters.py b/mindee/v2/product/crop/params/crop_parameters.py similarity index 71% rename from mindee/v2/product/crop/crop_parameters.py rename to mindee/v2/product/crop/params/crop_parameters.py index 070b2ded..a48b86c5 100644 --- a/mindee/v2/product/crop/crop_parameters.py +++ b/mindee/v2/product/crop/params/crop_parameters.py @@ -1,4 +1,4 @@ -from mindee.input.base_parameters import BaseParameters +from mindee.v2.input.base_parameters import BaseParameters class CropParameters(BaseParameters): diff --git a/mindee/v2/product/extraction/__init__.py b/mindee/v2/product/extraction/__init__.py new file mode 100644 index 00000000..9362a5d8 --- /dev/null +++ b/mindee/v2/product/extraction/__init__.py @@ -0,0 +1,19 @@ +from mindee.v2.product.extraction.inference import Inference +from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.inference_result import InferenceResult +from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters +from mindee.v2.product.extraction.params.data_schema import DataSchema +from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace +from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField +from mindee.v2.product.extraction.params.string_data_class import StringDataClass + +__all__ = [ + "Inference", + "InferenceParameters", + "InferenceResponse", + "InferenceResult", + "DataSchemaField", + "DataSchema", + "DataSchemaReplace", + "StringDataClass", +] diff --git a/mindee/parsing/v2/inference.py b/mindee/v2/product/extraction/inference.py similarity index 72% rename from mindee/parsing/v2/inference.py rename to mindee/v2/product/extraction/inference.py index 1009c101..7da58d41 100644 --- a/mindee/parsing/v2/inference.py +++ b/mindee/v2/product/extraction/inference.py @@ -1,7 +1,7 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_inference import BaseInference -from mindee.parsing.v2.inference_active_options import InferenceActiveOptions -from mindee.parsing.v2.inference_result import InferenceResult +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_inference import BaseInference +from mindee.v2.parsing.inference.inference_active_options import InferenceActiveOptions +from mindee.v2.product.extraction.inference_result import InferenceResult class Inference(BaseInference): diff --git a/mindee/parsing/v2/inference_response.py b/mindee/v2/product/extraction/inference_response.py similarity index 77% rename from mindee/parsing/v2/inference_response.py rename to mindee/v2/product/extraction/inference_response.py index 20a20975..4f84be15 100644 --- a/mindee/parsing/v2/inference_response.py +++ b/mindee/v2/product/extraction/inference_response.py @@ -1,6 +1,6 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_response import BaseResponse -from mindee.parsing.v2.inference import Inference +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_response import BaseResponse +from mindee.v2.product.extraction.inference import Inference class InferenceResponse(BaseResponse): diff --git a/mindee/parsing/v2/inference_result.py b/mindee/v2/product/extraction/inference_result.py similarity index 76% rename from mindee/parsing/v2/inference_result.py rename to mindee/v2/product/extraction/inference_result.py index 8359fb71..c0ba3dda 100644 --- a/mindee/parsing/v2/inference_result.py +++ b/mindee/v2/product/extraction/inference_result.py @@ -1,9 +1,9 @@ from typing import Optional -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.field.inference_fields import InferenceFields -from mindee.parsing.v2.rag_metadata import RagMetadata -from mindee.parsing.v2.raw_text import RawText +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.field import InferenceFields +from mindee.v2.parsing.inference.rag_metadata import RagMetadata +from mindee.v2.parsing.inference.raw_text import RawText class InferenceResult: diff --git a/mindee/v2/product/extraction/params/__init__.py b/mindee/v2/product/extraction/params/__init__.py new file mode 100644 index 00000000..5553ba80 --- /dev/null +++ b/mindee/v2/product/extraction/params/__init__.py @@ -0,0 +1,13 @@ +from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField +from mindee.v2.product.extraction.params.string_data_class import StringDataClass +from mindee.v2.product.extraction.params.data_schema import DataSchema +from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace +from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters + +__all__ = [ + "InferenceParameters", + "DataSchemaField", + "StringDataClass", + "DataSchema", + "DataSchemaReplace", +] diff --git a/mindee/v2/product/extraction/params/data_schema.py b/mindee/v2/product/extraction/params/data_schema.py new file mode 100644 index 00000000..44633891 --- /dev/null +++ b/mindee/v2/product/extraction/params/data_schema.py @@ -0,0 +1,20 @@ +import json +from dataclasses import dataclass +from typing import Optional, Union + +from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace +from mindee.v2.product.extraction.params.string_data_class import StringDataClass + + +@dataclass +class DataSchema(StringDataClass): + """Modify the Data Schema.""" + + replace: Optional[Union[DataSchemaReplace, dict, str]] = None + """If set, completely replaces the data schema of the model.""" + + def __post_init__(self) -> None: + if isinstance(self.replace, dict): + self.replace = DataSchemaReplace(**self.replace) + elif isinstance(self.replace, str): + self.replace = DataSchemaReplace(**json.loads(self.replace)) diff --git a/mindee/v2/product/extraction/params/data_schema_field.py b/mindee/v2/product/extraction/params/data_schema_field.py new file mode 100644 index 00000000..85907d4d --- /dev/null +++ b/mindee/v2/product/extraction/params/data_schema_field.py @@ -0,0 +1,31 @@ +from dataclasses import dataclass +from typing import List, Optional + +from mindee.v2.product.extraction.params.string_data_class import StringDataClass + + +@dataclass +class DataSchemaField(StringDataClass): + """A field in the data schema.""" + + title: str + """Display name for the field, also impacts inference results.""" + name: str + """Name of the field in the data schema.""" + is_array: bool + """Whether this field can contain multiple values.""" + type: str + """Data type of the field.""" + classification_values: Optional[List[str]] = None + """Allowed values when type is `classification`. Leave empty for other types.""" + unique_values: Optional[bool] = None + """ + Whether to remove duplicate values in the array. + Only applicable if `is_array` is True. + """ + description: Optional[str] = None + """Detailed description of what this field represents.""" + guidelines: Optional[str] = None + """Optional extraction guidelines.""" + nested_fields: Optional[dict] = None + """Subfields when type is `nested_object`. Leave empty for other types.""" diff --git a/mindee/v2/product/extraction/params/data_schema_replace.py b/mindee/v2/product/extraction/params/data_schema_replace.py new file mode 100644 index 00000000..4e3a7ccc --- /dev/null +++ b/mindee/v2/product/extraction/params/data_schema_replace.py @@ -0,0 +1,21 @@ +from dataclasses import dataclass +from typing import List, Union + +from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField +from mindee.v2.product.extraction.params.string_data_class import StringDataClass + + +@dataclass +class DataSchemaReplace(StringDataClass): + """The structure to completely replace the data schema of the model.""" + + fields: List[Union[DataSchemaField, dict]] + + def __post_init__(self) -> None: + if not self.fields: + raise ValueError("Data schema replacement fields cannot be empty.") + if isinstance(self.fields[0], dict): + self.fields = [ + DataSchemaField(**field) # type: ignore[arg-type] + for field in self.fields + ] diff --git a/mindee/v2/product/extraction/params/inference_parameters.py b/mindee/v2/product/extraction/params/inference_parameters.py new file mode 100644 index 00000000..600fcc5c --- /dev/null +++ b/mindee/v2/product/extraction/params/inference_parameters.py @@ -0,0 +1,63 @@ +import json +from dataclasses import dataclass +from typing import Dict, List, Optional, Union + +from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.product.extraction.params.data_schema import DataSchema + + +@dataclass +class InferenceParameters(BaseParameters): + """Inference parameters to set when sending a file.""" + + rag: Optional[bool] = None + """Enhance extraction accuracy with Retrieval-Augmented Generation.""" + raw_text: Optional[bool] = None + """Extract the full text content from the document as strings, and fill the ``raw_text`` attribute.""" + polygon: Optional[bool] = None + """Calculate bounding box polygons for all fields, and fill their ``locations`` attribute.""" + confidence: Optional[bool] = None + """ + Boost the precision and accuracy of all extractions. + Calculate confidence scores for all fields, and fill their ``confidence`` attribute. + """ + text_context: Optional[str] = None + """ + Additional text context used by the model during inference. + Not recommended, for specific use only. + """ + data_schema: Optional[Union[DataSchema, str, dict]] = None + """ + Dynamic changes to the data schema of the model for this inference. + Not recommended, for specific use only. + """ + + _slug: str = "inferences" + """Slug of the endpoint.""" + + def __post_init__(self): + if isinstance(self.data_schema, str): + self.data_schema = DataSchema(**json.loads(self.data_schema)) + elif isinstance(self.data_schema, dict): + self.data_schema = DataSchema(**self.data_schema) + + def get_form_data(self) -> Dict[str, Union[str, List[str]]]: + """ + Return the parameters as a config dictionary. + + :return: A dict of parameters. + """ + data = super().get_form_data() + if self.data_schema is not None: + data["data_schema"] = str(self.data_schema) + if self.rag is not None: + data["rag"] = data["rag"] = str(self.rag).lower() + if self.raw_text is not None: + data["raw_text"] = data["raw_text"] = str(self.raw_text).lower() + if self.polygon is not None: + data["polygon"] = data["polygon"] = str(self.polygon).lower() + if self.confidence is not None: + data["confidence"] = data["confidence"] = str(self.confidence).lower() + if self.text_context is not None: + data["text_context"] = self.text_context + return data diff --git a/mindee/v2/product/extraction/params/string_data_class.py b/mindee/v2/product/extraction/params/string_data_class.py new file mode 100644 index 00000000..05f98d78 --- /dev/null +++ b/mindee/v2/product/extraction/params/string_data_class.py @@ -0,0 +1,17 @@ +import json +from dataclasses import asdict, dataclass + + +@dataclass +class StringDataClass: + """Base class for dataclasses that can be serialized to JSON.""" + + @staticmethod + def _no_none_values(x) -> dict: + """Don't include None values in the JSON output.""" + return {k: v for (k, v) in x if v is not None} + + def __str__(self) -> str: + return json.dumps( + asdict(self, dict_factory=self._no_none_values), indent=None, sort_keys=True + ) diff --git a/mindee/v2/product/ocr/__init__.py b/mindee/v2/product/ocr/__init__.py index b67e467a..821c6954 100644 --- a/mindee/v2/product/ocr/__init__.py +++ b/mindee/v2/product/ocr/__init__.py @@ -1,6 +1,6 @@ from mindee.v2.product.ocr.ocr_inference import OCRInference from mindee.v2.product.ocr.ocr_page import OCRPage -from mindee.v2.product.ocr.ocr_parameters import OCRParameters +from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse from mindee.v2.product.ocr.ocr_result import OCRResult from mindee.v2.product.ocr.ocr_word import OCRWord diff --git a/mindee/v2/product/ocr/ocr_inference.py b/mindee/v2/product/ocr/ocr_inference.py index 8699a2e5..acb7d330 100644 --- a/mindee/v2/product/ocr/ocr_inference.py +++ b/mindee/v2/product/ocr/ocr_inference.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_inference import BaseInference +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_inference import BaseInference from mindee.v2.product.ocr.ocr_result import OCRResult diff --git a/mindee/v2/product/ocr/ocr_page.py b/mindee/v2/product/ocr/ocr_page.py index 6c93bbd4..fa0ca010 100644 --- a/mindee/v2/product/ocr/ocr_page.py +++ b/mindee/v2/product/ocr/ocr_page.py @@ -1,6 +1,6 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.product.ocr.ocr_word import OCRWord diff --git a/mindee/v2/product/ocr/ocr_response.py b/mindee/v2/product/ocr/ocr_response.py index 071ae0f2..32b7d052 100644 --- a/mindee/v2/product/ocr/ocr_response.py +++ b/mindee/v2/product/ocr/ocr_response.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_response import BaseResponse +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_response import BaseResponse from mindee.v2.product.ocr.ocr_inference import OCRInference diff --git a/mindee/v2/product/ocr/ocr_result.py b/mindee/v2/product/ocr/ocr_result.py index 28c837c7..d95a1c24 100644 --- a/mindee/v2/product/ocr/ocr_result.py +++ b/mindee/v2/product/ocr/ocr_result.py @@ -1,6 +1,6 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.product.ocr.ocr_page import OCRPage diff --git a/mindee/v2/product/ocr/params/__init__.py b/mindee/v2/product/ocr/params/__init__.py new file mode 100644 index 00000000..3090f2e1 --- /dev/null +++ b/mindee/v2/product/ocr/params/__init__.py @@ -0,0 +1,3 @@ +from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters + +__all__ = ["OCRParameters"] diff --git a/mindee/v2/product/ocr/ocr_parameters.py b/mindee/v2/product/ocr/params/ocr_parameters.py similarity index 70% rename from mindee/v2/product/ocr/ocr_parameters.py rename to mindee/v2/product/ocr/params/ocr_parameters.py index 2e8ecb06..b976760d 100644 --- a/mindee/v2/product/ocr/ocr_parameters.py +++ b/mindee/v2/product/ocr/params/ocr_parameters.py @@ -1,4 +1,4 @@ -from mindee.input.base_parameters import BaseParameters +from mindee.v2.input.base_parameters import BaseParameters class OCRParameters(BaseParameters): diff --git a/mindee/v2/product/split/__init__.py b/mindee/v2/product/split/__init__.py index 9284c63e..5ab84925 100644 --- a/mindee/v2/product/split/__init__.py +++ b/mindee/v2/product/split/__init__.py @@ -1,5 +1,5 @@ from mindee.v2.product.split.split_inference import SplitInference -from mindee.v2.product.split.split_parameters import SplitParameters +from mindee.v2.product.split.params.split_parameters import SplitParameters from mindee.v2.product.split.split_response import SplitResponse from mindee.v2.product.split.split_result import SplitResult from mindee.v2.product.split.split_range import SplitRange diff --git a/mindee/v2/product/split/params/__init__.py b/mindee/v2/product/split/params/__init__.py new file mode 100644 index 00000000..b95e8f16 --- /dev/null +++ b/mindee/v2/product/split/params/__init__.py @@ -0,0 +1,3 @@ +from mindee.v2.product.split.params.split_parameters import SplitParameters + +__all__ = ["SplitParameters"] diff --git a/mindee/v2/product/split/split_parameters.py b/mindee/v2/product/split/params/split_parameters.py similarity index 71% rename from mindee/v2/product/split/split_parameters.py rename to mindee/v2/product/split/params/split_parameters.py index ec377dfe..ec57afea 100644 --- a/mindee/v2/product/split/split_parameters.py +++ b/mindee/v2/product/split/params/split_parameters.py @@ -1,4 +1,4 @@ -from mindee.input.base_parameters import BaseParameters +from mindee.v2.input.base_parameters import BaseParameters class SplitParameters(BaseParameters): diff --git a/mindee/v2/product/split/split_inference.py b/mindee/v2/product/split/split_inference.py index 28a0d434..7540f1fc 100644 --- a/mindee/v2/product/split/split_inference.py +++ b/mindee/v2/product/split/split_inference.py @@ -1,5 +1,5 @@ -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_inference import BaseInference +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_inference import BaseInference from mindee.v2.product.split.split_result import SplitResult diff --git a/mindee/v2/product/split/split_range.py b/mindee/v2/product/split/split_range.py index 59e61462..d63d4547 100644 --- a/mindee/v2/product/split/split_range.py +++ b/mindee/v2/product/split/split_range.py @@ -1,9 +1,9 @@ from typing import List, Optional -from mindee.parsing.v2.inference_response import InferenceResponse +from mindee.v2.product.extraction.inference_response import InferenceResponse from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf from mindee.input.sources.local_input_source import LocalInputSource -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.file_operations.split import extract_single_split diff --git a/mindee/v2/product/split/split_response.py b/mindee/v2/product/split/split_response.py index a00b868e..b46a58ac 100644 --- a/mindee/v2/product/split/split_response.py +++ b/mindee/v2/product/split/split_response.py @@ -1,6 +1,6 @@ from mindee.input.sources.local_input_source import LocalInputSource -from mindee.parsing.common.string_dict import StringDict -from mindee.parsing.v2.base_response import BaseResponse +from mindee.parsing.common import StringDict +from mindee.v2.parsing.inference.base_response import BaseResponse from mindee.v2.file_operations.split_files import SplitFiles from mindee.v2.product.split.split_inference import SplitInference diff --git a/mindee/v2/product/split/split_result.py b/mindee/v2/product/split/split_result.py index efb63060..04c8a0f6 100644 --- a/mindee/v2/product/split/split_result.py +++ b/mindee/v2/product/split/split_result.py @@ -1,6 +1,6 @@ from typing import List -from mindee.parsing.common.string_dict import StringDict +from mindee.parsing.common import StringDict from mindee.v2.product.split.split_range import SplitRange diff --git a/tests/v1/api/test_async_response.py b/tests/v1/api/test_async_response.py index 5ca97391..139034b9 100644 --- a/tests/v1/api/test_async_response.py +++ b/tests/v1/api/test_async_response.py @@ -3,12 +3,12 @@ import pytest import requests -from mindee.client import Client +from mindee.v1.client import Client from mindee.input.sources.path_input import PathInput from mindee.mindee_http.response_validation import is_valid_async_response -from mindee.parsing.common.api_request import RequestStatus -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.parsing.common import RequestStatus +from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 from tests.utils import V1_DATA_DIR, V1_PRODUCT_DATA_DIR ASYNC_DIR = V1_DATA_DIR / "async" diff --git a/tests/v1/api/test_feedback_response.py b/tests/v1/api/test_feedback_response.py index a6c3def2..f638d88b 100644 --- a/tests/v1/api/test_feedback_response.py +++ b/tests/v1/api/test_feedback_response.py @@ -1,6 +1,6 @@ import json -from mindee.parsing.common.feedback_response import FeedbackResponse +from mindee.v1.parsing.common.feedback_response import FeedbackResponse from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/api/test_response.py b/tests/v1/api/test_response.py index 2782d955..2b666fb2 100644 --- a/tests/v1/api/test_response.py +++ b/tests/v1/api/test_response.py @@ -1,19 +1,21 @@ import json -from mindee.parsing.common.predict_response import PredictResponse -from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 -from mindee.product.financial_document.financial_document_v1_document import ( +from mindee.v1.parsing.common import PredictResponse +from mindee.v1.product.financial_document.financial_document_v1 import ( + FinancialDocumentV1, +) +from mindee.v1.product.financial_document.financial_document_v1_document import ( FinancialDocumentV1Document, ) -from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import IdCardV2Document -from mindee.product.fr.id_card.id_card_v2_page import IdCardV2Page -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice.invoice_v4_document import InvoiceV4Document -from mindee.product.passport.passport_v1 import PassportV1 -from mindee.product.passport.passport_v1_document import PassportV1Document -from mindee.product.receipt.receipt_v5 import ReceiptV5 -from mindee.product.receipt.receipt_v5_document import ReceiptV5Document +from mindee.v1.product.fr.id_card.id_card_v2 import IdCardV2 +from mindee.v1.product.fr.id_card.id_card_v2_document import IdCardV2Document +from mindee.v1.product.fr.id_card.id_card_v2_page import IdCardV2Page +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice.invoice_v4_document import InvoiceV4Document +from mindee.v1.product.passport import PassportV1 +from mindee.v1.product.passport.passport_v1_document import PassportV1Document +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.product.receipt.receipt_v5_document import ReceiptV5Document from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extraction/test_image_extractor.py b/tests/v1/extraction/test_image_extractor.py index 87147ca3..77223152 100644 --- a/tests/v1/extraction/test_image_extractor.py +++ b/tests/v1/extraction/test_image_extractor.py @@ -5,7 +5,7 @@ from mindee.extraction.common.image_extractor import extract_multiple_images_from_source from mindee.input.sources.path_input import PathInput -from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 +from mindee.v1.product.barcode_reader import BarcodeReaderV1 from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extraction/test_invoice_splitter_auto_extraction.py b/tests/v1/extraction/test_invoice_splitter_auto_extraction.py index 6ecf7693..640ccc12 100644 --- a/tests/v1/extraction/test_invoice_splitter_auto_extraction.py +++ b/tests/v1/extraction/test_invoice_splitter_auto_extraction.py @@ -2,12 +2,12 @@ import pytest -from mindee import Client +from mindee.v1.client import Client from mindee.extraction.pdf_extractor.pdf_extractor import PdfExtractor from mindee.input.sources.path_input import PathInput -from mindee.parsing.common.document import Document -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.parsing.common import Document +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 from tests.utils import V1_PRODUCT_DATA_DIR, levenshtein_ratio from tests.v1.product import get_id, get_version diff --git a/tests/v1/extraction/test_multi_receipts_extractor.py b/tests/v1/extraction/test_multi_receipts_extractor.py index f1c36451..bdc2ba5e 100644 --- a/tests/v1/extraction/test_multi_receipts_extractor.py +++ b/tests/v1/extraction/test_multi_receipts_extractor.py @@ -7,7 +7,7 @@ extract_receipts, ) from mindee.input.sources.path_input import PathInput -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( MultiReceiptsDetectorV1, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extraction/test_pdf_extractor.py b/tests/v1/extraction/test_pdf_extractor.py index 1359e1eb..96e0987a 100644 --- a/tests/v1/extraction/test_pdf_extractor.py +++ b/tests/v1/extraction/test_pdf_extractor.py @@ -1,11 +1,11 @@ import pytest -from mindee import Client +from mindee.v1.client import Client from mindee.extraction.pdf_extractor.pdf_extractor import PdfExtractor from mindee.input.local_response import LocalResponse from mindee.input.sources.path_input import PathInput -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 -from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( InvoiceSplitterV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extras/test_extras_integration.py b/tests/v1/extras/test_extras_integration.py index 9c669cc3..4e7b83b9 100644 --- a/tests/v1/extras/test_extras_integration.py +++ b/tests/v1/extras/test_extras_integration.py @@ -1,8 +1,8 @@ import pytest -from mindee import Client -from mindee.product.international_id.international_id_v2 import InternationalIdV2 -from mindee.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.client import Client +from mindee.v1.product.international_id import InternationalIdV2 +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extras/test_full_text_ocr.py b/tests/v1/extras/test_full_text_ocr.py index f1013efb..e2afcb72 100644 --- a/tests/v1/extras/test_full_text_ocr.py +++ b/tests/v1/extras/test_full_text_ocr.py @@ -2,8 +2,8 @@ import pytest -from mindee.parsing.common.async_predict_response import AsyncPredictResponse -from mindee.product.international_id.international_id_v2 import InternationalIdV2 +from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse +from mindee.v1.product.international_id import InternationalIdV2 from tests.utils import V1_EXTRAS_DIR # NOTE: Implementing extras per pages without content (like the Java library) diff --git a/tests/v1/input/test_url_input_source_integration.py b/tests/v1/input/test_url_input_source_integration.py index 82c81b11..9d688c41 100644 --- a/tests/v1/input/test_url_input_source_integration.py +++ b/tests/v1/input/test_url_input_source_integration.py @@ -3,8 +3,8 @@ import pytest -from mindee import Client -from mindee.product.invoice import InvoiceV4 +from mindee.v1.client import Client +from mindee.v1.product.invoice import InvoiceV4 from tests.utils import cleanup_output_files diff --git a/tests/v1/mindee_http/test_error.py b/tests/v1/mindee_http/test_error.py index 108cd332..b929122f 100644 --- a/tests/v1/mindee_http/test_error.py +++ b/tests/v1/mindee_http/test_error.py @@ -2,7 +2,8 @@ import pytest -from mindee import Client, product +from mindee.v1.client import Client +from mindee.v1 import product from mindee.error.mindee_http_error import ( MindeeHTTPClientError, MindeeHTTPServerError, diff --git a/tests/v1/parsing/common/test_ocr.py b/tests/v1/parsing/common/test_ocr.py index 56c9a75c..daa8706a 100644 --- a/tests/v1/parsing/common/test_ocr.py +++ b/tests/v1/parsing/common/test_ocr.py @@ -1,6 +1,6 @@ import json -from mindee.parsing.common.ocr.ocr import Ocr +from mindee.v1.parsing.common import Ocr from tests.utils import V1_DATA_DIR diff --git a/tests/v1/parsing/common/test_orientation.py b/tests/v1/parsing/common/test_orientation.py index d6740774..4fd488d8 100644 --- a/tests/v1/parsing/common/test_orientation.py +++ b/tests/v1/parsing/common/test_orientation.py @@ -1,4 +1,4 @@ -from mindee.parsing.common.orientation import OrientationField +from mindee.v1.parsing.common import OrientationField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_amount.py b/tests/v1/parsing/standard/test_amount.py index 0940175f..bee6c84c 100644 --- a/tests/v1/parsing/standard/test_amount.py +++ b/tests/v1/parsing/standard/test_amount.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.amount import AmountField +from mindee.v1.parsing.standard import AmountField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_date.py b/tests/v1/parsing/standard/test_date.py index ba790fef..33f7ae88 100644 --- a/tests/v1/parsing/standard/test_date.py +++ b/tests/v1/parsing/standard/test_date.py @@ -1,6 +1,6 @@ import datetime -from mindee.parsing.standard.date import DateField +from mindee.v1.parsing.standard import DateField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_field.py b/tests/v1/parsing/standard/test_field.py index 23c750c4..b05fc64d 100644 --- a/tests/v1/parsing/standard/test_field.py +++ b/tests/v1/parsing/standard/test_field.py @@ -1,13 +1,13 @@ import pytest -from mindee.parsing.standard.base import ( +from mindee.v1.parsing.standard import ( BaseField, field_array_confidence, field_array_sum, float_to_string, ) -from mindee.parsing.standard.company_registration import CompanyRegistrationField -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.company_registration import CompanyRegistrationField +from mindee.v1.parsing.standard.text import StringField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_locale.py b/tests/v1/parsing/standard/test_locale.py index f5cd30fb..819179b9 100644 --- a/tests/v1/parsing/standard/test_locale.py +++ b/tests/v1/parsing/standard/test_locale.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.locale import LocaleField +from mindee.v1.parsing.standard import LocaleField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_payment_details.py b/tests/v1/parsing/standard/test_payment_details.py index 8bb61ced..92538394 100644 --- a/tests/v1/parsing/standard/test_payment_details.py +++ b/tests/v1/parsing/standard/test_payment_details.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.payment_details import PaymentDetailsField +from mindee.v1.parsing.standard import PaymentDetailsField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_position.py b/tests/v1/parsing/standard/test_position.py index 78bf912d..cb406740 100644 --- a/tests/v1/parsing/standard/test_position.py +++ b/tests/v1/parsing/standard/test_position.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.position import PositionField +from mindee.v1.parsing.standard import PositionField def test_constructor(): diff --git a/tests/v1/parsing/standard/test_string.py b/tests/v1/parsing/standard/test_string.py index c6f44b60..4d10b509 100644 --- a/tests/v1/parsing/standard/test_string.py +++ b/tests/v1/parsing/standard/test_string.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.text import StringField +from mindee.v1.parsing.standard.text import StringField def test_constructor_no_raw_value(): diff --git a/tests/v1/parsing/standard/test_tax.py b/tests/v1/parsing/standard/test_tax.py index a9c7b984..015d0154 100644 --- a/tests/v1/parsing/standard/test_tax.py +++ b/tests/v1/parsing/standard/test_tax.py @@ -1,4 +1,4 @@ -from mindee.parsing.standard.tax import TaxField +from mindee.v1.parsing.standard import TaxField def test_constructor(): diff --git a/tests/v1/product/barcode_reader/test_barcode_reader_v1.py b/tests/v1/product/barcode_reader/test_barcode_reader_v1.py index c79a97de..97f2c535 100644 --- a/tests/v1/product/barcode_reader/test_barcode_reader_v1.py +++ b/tests/v1/product/barcode_reader/test_barcode_reader_v1.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 -from mindee.product.barcode_reader.barcode_reader_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.barcode_reader import BarcodeReaderV1 +from mindee.v1.product.barcode_reader.barcode_reader_v1_document import ( BarcodeReaderV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/barcode_reader/test_barcode_reader_v1_regression.py b/tests/v1/product/barcode_reader/test_barcode_reader_v1_regression.py index 18683dfc..834aa11c 100644 --- a/tests/v1/product/barcode_reader/test_barcode_reader_v1_regression.py +++ b/tests/v1/product/barcode_reader/test_barcode_reader_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.barcode_reader.barcode_reader_v1 import BarcodeReaderV1 +from mindee.v1.client import Client +from mindee.v1.product.barcode_reader import BarcodeReaderV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/cropper/test_cropper_v1.py b/tests/v1/product/cropper/test_cropper_v1.py index 84fc9986..02f57062 100644 --- a/tests/v1/product/cropper/test_cropper_v1.py +++ b/tests/v1/product/cropper/test_cropper_v1.py @@ -2,13 +2,13 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.cropper.cropper_v1 import CropperV1 -from mindee.product.cropper.cropper_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.cropper.cropper_v1 import CropperV1 +from mindee.v1.product.cropper import ( CropperV1Document, ) -from mindee.product.cropper.cropper_v1_page import ( +from mindee.v1.product.cropper.cropper_v1_page import ( CropperV1Page, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/cropper/test_cropper_v1_regression.py b/tests/v1/product/cropper/test_cropper_v1_regression.py index 5b1f0c2f..dc5096bb 100644 --- a/tests/v1/product/cropper/test_cropper_v1_regression.py +++ b/tests/v1/product/cropper/test_cropper_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.cropper.cropper_v1 import CropperV1 +from mindee.v1.client import Client +from mindee.v1.product.cropper.cropper_v1 import CropperV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/custom/test_custom_v1.py b/tests/v1/product/custom/test_custom_v1.py index 5f9d6bac..48f236e5 100644 --- a/tests/v1/product/custom/test_custom_v1.py +++ b/tests/v1/product/custom/test_custom_v1.py @@ -3,13 +3,13 @@ import pytest from mindee.geometry.quadrilateral import Quadrilateral -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.parsing.custom.classification import ClassificationField -from mindee.parsing.custom.list import ListField, ListFieldValue -from mindee.product.custom.custom_v1 import CustomV1 -from mindee.product.custom.custom_v1_document import CustomV1Document -from mindee.product.custom.custom_v1_page import CustomV1Page +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.parsing.custom import ClassificationField +from mindee.v1.parsing.custom import ListField, ListFieldValue +from mindee.v1.product.custom.custom_v1 import CustomV1 +from mindee.v1.product.custom.custom_v1_document import CustomV1Document +from mindee.v1.product.custom.custom_v1_page import CustomV1Page from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/custom/test_custom_v1_line_items.py b/tests/v1/product/custom/test_custom_v1_line_items.py index 435546b6..6de91978 100644 --- a/tests/v1/product/custom/test_custom_v1_line_items.py +++ b/tests/v1/product/custom/test_custom_v1_line_items.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.custom.custom_v1 import CustomV1 -from mindee.product.custom.custom_v1_page import CustomV1Page +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.custom.custom_v1 import CustomV1 +from mindee.v1.product.custom.custom_v1_page import CustomV1Page from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/custom/test_custom_v1_v2.py b/tests/v1/product/custom/test_custom_v1_v2.py index 3b7fa0f5..297cf9cd 100644 --- a/tests/v1/product/custom/test_custom_v1_v2.py +++ b/tests/v1/product/custom/test_custom_v1_v2.py @@ -3,13 +3,13 @@ import pytest from mindee.geometry.quadrilateral import Quadrilateral -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.parsing.custom.classification import ClassificationField -from mindee.parsing.custom.list import ListField, ListFieldValue -from mindee.product.custom.custom_v1 import CustomV1 -from mindee.product.custom.custom_v1_document import CustomV1Document -from mindee.product.custom.custom_v1_page import CustomV1Page +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.parsing.custom import ClassificationField +from mindee.v1.parsing.custom import ListField, ListFieldValue +from mindee.v1.product.custom.custom_v1 import CustomV1 +from mindee.v1.product.custom.custom_v1_document import CustomV1Document +from mindee.v1.product.custom.custom_v1_page import CustomV1Page from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/financial_document/test_financial_document_v1.py b/tests/v1/product/financial_document/test_financial_document_v1.py index 5fa5b4b1..a60b6558 100644 --- a/tests/v1/product/financial_document/test_financial_document_v1.py +++ b/tests/v1/product/financial_document/test_financial_document_v1.py @@ -2,10 +2,12 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 -from mindee.product.financial_document.financial_document_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.financial_document.financial_document_v1 import ( + FinancialDocumentV1, +) +from mindee.v1.product.financial_document.financial_document_v1_document import ( FinancialDocumentV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/financial_document/test_financial_document_v1_regression.py b/tests/v1/product/financial_document/test_financial_document_v1_regression.py index 59396583..a08f9cc1 100644 --- a/tests/v1/product/financial_document/test_financial_document_v1_regression.py +++ b/tests/v1/product/financial_document/test_financial_document_v1_regression.py @@ -1,7 +1,9 @@ import pytest -from mindee.client import Client -from mindee.product.financial_document.financial_document_v1 import FinancialDocumentV1 +from mindee.v1.client import Client +from mindee.v1.product.financial_document.financial_document_v1 import ( + FinancialDocumentV1, +) from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1.py b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1.py index d6649163..c9fcecb6 100644 --- a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1.py +++ b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1.py @@ -2,12 +2,12 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr.bank_account_details.bank_account_details_v1 import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1 import ( BankAccountDetailsV1, ) -from mindee.product.fr.bank_account_details.bank_account_details_v1_document import ( +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1_document import ( BankAccountDetailsV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1_regression.py b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1_regression.py index 8a452d7f..11fa0940 100644 --- a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1_regression.py +++ b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.fr.bank_account_details.bank_account_details_v1 import ( +from mindee.v1.client import Client +from mindee.v1.product.fr.bank_account_details.bank_account_details_v1 import ( BankAccountDetailsV1, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2.py b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2.py index 56e29397..2bb9678e 100644 --- a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2.py +++ b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2.py @@ -2,12 +2,12 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr.bank_account_details.bank_account_details_v2 import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2 import ( BankAccountDetailsV2, ) -from mindee.product.fr.bank_account_details.bank_account_details_v2_document import ( +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2_document import ( BankAccountDetailsV2Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2_regression.py b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2_regression.py index 66ded383..e65d1d4c 100644 --- a/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2_regression.py +++ b/tests/v1/product/fr/bank_account_details/test_bank_account_details_v2_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.fr.bank_account_details.bank_account_details_v2 import ( +from mindee.v1.client import Client +from mindee.v1.product.fr.bank_account_details.bank_account_details_v2 import ( BankAccountDetailsV2, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/carte_grise/test_carte_grise_v1.py b/tests/v1/product/fr/carte_grise/test_carte_grise_v1.py index f643a8f9..4aa556e3 100644 --- a/tests/v1/product/fr/carte_grise/test_carte_grise_v1.py +++ b/tests/v1/product/fr/carte_grise/test_carte_grise_v1.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 -from mindee.product.fr.carte_grise.carte_grise_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 +from mindee.v1.product.fr.carte_grise.carte_grise_v1_document import ( CarteGriseV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/carte_grise/test_carte_grise_v1_regression.py b/tests/v1/product/fr/carte_grise/test_carte_grise_v1_regression.py index b4b3380f..56fbbb45 100644 --- a/tests/v1/product/fr/carte_grise/test_carte_grise_v1_regression.py +++ b/tests/v1/product/fr/carte_grise/test_carte_grise_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 +from mindee.v1.client import Client +from mindee.v1.product.fr.carte_grise.carte_grise_v1 import CarteGriseV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/fr/id_card/test_id_card_v1.py b/tests/v1/product/fr/id_card/test_id_card_v1.py index 84507a3d..7cdb57d7 100644 --- a/tests/v1/product/fr/id_card/test_id_card_v1.py +++ b/tests/v1/product/fr/id_card/test_id_card_v1.py @@ -2,13 +2,13 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr.id_card.id_card_v1 import IdCardV1 -from mindee.product.fr.id_card.id_card_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.fr.id_card.id_card_v1 import IdCardV1 +from mindee.v1.product.fr.id_card.id_card_v1_document import ( IdCardV1Document, ) -from mindee.product.fr.id_card.id_card_v1_page import ( +from mindee.v1.product.fr.id_card.id_card_v1_page import ( IdCardV1Page, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/id_card/test_id_card_v1_regression.py b/tests/v1/product/fr/id_card/test_id_card_v1_regression.py index 00bb5588..ab1986bb 100644 --- a/tests/v1/product/fr/id_card/test_id_card_v1_regression.py +++ b/tests/v1/product/fr/id_card/test_id_card_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.fr.id_card.id_card_v1 import IdCardV1 +from mindee.v1.client import Client +from mindee.v1.product.fr.id_card.id_card_v1 import IdCardV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/fr/id_card/test_id_card_v2.py b/tests/v1/product/fr/id_card/test_id_card_v2.py index a603e275..116ebb4d 100644 --- a/tests/v1/product/fr/id_card/test_id_card_v2.py +++ b/tests/v1/product/fr/id_card/test_id_card_v2.py @@ -2,13 +2,13 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.fr.id_card.id_card_v2 import IdCardV2 -from mindee.product.fr.id_card.id_card_v2_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.fr.id_card.id_card_v2 import IdCardV2 +from mindee.v1.product.fr.id_card.id_card_v2_document import ( IdCardV2Document, ) -from mindee.product.fr.id_card.id_card_v2_page import ( +from mindee.v1.product.fr.id_card.id_card_v2_page import ( IdCardV2Page, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/fr/id_card/test_id_card_v2_regression.py b/tests/v1/product/fr/id_card/test_id_card_v2_regression.py index b44b14b8..6f29a5d1 100644 --- a/tests/v1/product/fr/id_card/test_id_card_v2_regression.py +++ b/tests/v1/product/fr/id_card/test_id_card_v2_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.fr.id_card.id_card_v2 import IdCardV2 +from mindee.v1.client import Client +from mindee.v1.product.fr.id_card.id_card_v2 import IdCardV2 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/generated/test_generated_v1.py b/tests/v1/product/generated/test_generated_v1.py index f5a1f465..8aa6d332 100644 --- a/tests/v1/product/generated/test_generated_v1.py +++ b/tests/v1/product/generated/test_generated_v1.py @@ -2,15 +2,15 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.parsing.generated.generated_list import GeneratedListField -from mindee.parsing.generated.generated_object import GeneratedObjectField -from mindee.parsing.standard.position import PositionField -from mindee.parsing.standard.text import StringField -from mindee.product.generated.generated_v1 import GeneratedV1 -from mindee.product.generated.generated_v1_document import GeneratedV1Document -from mindee.product.generated.generated_v1_page import GeneratedV1Page +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.parsing.generated import GeneratedListField +from mindee.v1.parsing.generated import GeneratedObjectField +from mindee.v1.parsing.standard import PositionField +from mindee.v1.parsing.standard.text import StringField +from mindee.v1.product.generated import GeneratedV1 +from mindee.v1.product.generated import GeneratedV1Document +from mindee.v1.product.generated.generated_v1_page import GeneratedV1Page from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/international_id/test_international_id_v2.py b/tests/v1/product/international_id/test_international_id_v2.py index cd09a400..e334da9b 100644 --- a/tests/v1/product/international_id/test_international_id_v2.py +++ b/tests/v1/product/international_id/test_international_id_v2.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.international_id.international_id_v2 import InternationalIdV2 -from mindee.product.international_id.international_id_v2_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.international_id import InternationalIdV2 +from mindee.v1.product.international_id.international_id_v2_document import ( InternationalIdV2Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/invoice/test_invoice_v4.py b/tests/v1/product/invoice/test_invoice_v4.py index d63614e3..706cc73b 100644 --- a/tests/v1/product/invoice/test_invoice_v4.py +++ b/tests/v1/product/invoice/test_invoice_v4.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice.invoice_v4_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice.invoice_v4_document import ( InvoiceV4Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/invoice/test_invoice_v4_regression.py b/tests/v1/product/invoice/test_invoice_v4_regression.py index 7dd012ca..c29d2887 100644 --- a/tests/v1/product/invoice/test_invoice_v4_regression.py +++ b/tests/v1/product/invoice/test_invoice_v4_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.client import Client +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/invoice_splitter/test_invoice_splitter_v1.py b/tests/v1/product/invoice_splitter/test_invoice_splitter_v1.py index aeb62c65..ef34e745 100644 --- a/tests/v1/product/invoice_splitter/test_invoice_splitter_v1.py +++ b/tests/v1/product/invoice_splitter/test_invoice_splitter_v1.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 -from mindee.product.invoice_splitter.invoice_splitter_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( InvoiceSplitterV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/invoice_splitter/test_invoice_splitter_v1_regression.py b/tests/v1/product/invoice_splitter/test_invoice_splitter_v1_regression.py index 7908fa7f..277f5214 100644 --- a/tests/v1/product/invoice_splitter/test_invoice_splitter_v1_regression.py +++ b/tests/v1/product/invoice_splitter/test_invoice_splitter_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.client import Client +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1.py b/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1.py index 0a6ed38e..27d41d69 100644 --- a/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1.py +++ b/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1.py @@ -2,12 +2,12 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( MultiReceiptsDetectorV1, ) -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1_document import ( MultiReceiptsDetectorV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1_regression.py b/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1_regression.py index 5c94f1bc..0c221973 100644 --- a/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1_regression.py +++ b/tests/v1/product/multi_receipts_detector/test_multi_receipts_detector_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.multi_receipts_detector.multi_receipts_detector_v1 import ( +from mindee.v1.client import Client +from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( MultiReceiptsDetectorV1, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/passport/test_passport_v1.py b/tests/v1/product/passport/test_passport_v1.py index 690fefed..a34286f4 100644 --- a/tests/v1/product/passport/test_passport_v1.py +++ b/tests/v1/product/passport/test_passport_v1.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.passport.passport_v1 import PassportV1 -from mindee.product.passport.passport_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.passport import PassportV1 +from mindee.v1.product.passport.passport_v1_document import ( PassportV1Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/passport/test_passport_v1_regression.py b/tests/v1/product/passport/test_passport_v1_regression.py index 836a639b..0c95e07a 100644 --- a/tests/v1/product/passport/test_passport_v1_regression.py +++ b/tests/v1/product/passport/test_passport_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.passport.passport_v1 import PassportV1 +from mindee.v1.client import Client +from mindee.v1.product.passport import PassportV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/receipt/test_receipt_v5.py b/tests/v1/product/receipt/test_receipt_v5.py index 807d32e3..b24a738e 100644 --- a/tests/v1/product/receipt/test_receipt_v5.py +++ b/tests/v1/product/receipt/test_receipt_v5.py @@ -2,10 +2,10 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.receipt.receipt_v5 import ReceiptV5 -from mindee.product.receipt.receipt_v5_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.product.receipt.receipt_v5_document import ( ReceiptV5Document, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/receipt/test_receipt_v5_regression.py b/tests/v1/product/receipt/test_receipt_v5_regression.py index 7279c997..7792d8e1 100644 --- a/tests/v1/product/receipt/test_receipt_v5_regression.py +++ b/tests/v1/product/receipt/test_receipt_v5_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.client import Client +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/product/us/bank_check/test_bank_check_v1.py b/tests/v1/product/us/bank_check/test_bank_check_v1.py index 087f2d82..422a78eb 100644 --- a/tests/v1/product/us/bank_check/test_bank_check_v1.py +++ b/tests/v1/product/us/bank_check/test_bank_check_v1.py @@ -2,13 +2,13 @@ import pytest -from mindee.parsing.common.document import Document -from mindee.parsing.common.page import Page -from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 -from mindee.product.us.bank_check.bank_check_v1_document import ( +from mindee.v1.parsing.common import Document +from mindee.v1.parsing.common.page import Page +from mindee.v1.product.us.bank_check.bank_check_v1 import BankCheckV1 +from mindee.v1.product.us.bank_check import ( BankCheckV1Document, ) -from mindee.product.us.bank_check.bank_check_v1_page import ( +from mindee.v1.product.us.bank_check.bank_check_v1_page import ( BankCheckV1Page, ) from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/product/us/bank_check/test_bank_check_v1_regression.py b/tests/v1/product/us/bank_check/test_bank_check_v1_regression.py index 58deddb0..9063e712 100644 --- a/tests/v1/product/us/bank_check/test_bank_check_v1_regression.py +++ b/tests/v1/product/us/bank_check/test_bank_check_v1_regression.py @@ -1,7 +1,7 @@ import pytest -from mindee.client import Client -from mindee.product.us.bank_check.bank_check_v1 import BankCheckV1 +from mindee.v1.client import Client +from mindee.v1.product.us.bank_check.bank_check_v1 import BankCheckV1 from tests.utils import V1_PRODUCT_DATA_DIR from tests.v1.product import get_id, get_version diff --git a/tests/v1/test_client.py b/tests/v1/test_client.py index 923f6416..62f2ffb6 100644 --- a/tests/v1/test_client.py +++ b/tests/v1/test_client.py @@ -2,16 +2,22 @@ import pytest -from mindee import AsyncPredictResponse, Client, PageOptions, PredictResponse, product +from mindee.v1 import ( + AsyncPredictResponse, + Client, + PageOptions, + PredictResponse, + product, +) from mindee.error.mindee_error import MindeeClientError, MindeeError from mindee.error.mindee_http_error import MindeeHTTPError from mindee.input.local_response import LocalResponse from mindee.input.sources.local_input_source import LocalInputSource -from mindee.product import MultiReceiptsDetectorV1 -from mindee.product.international_id.international_id_v2 import InternationalIdV2 -from mindee.product.invoice.invoice_v4 import InvoiceV4 -from mindee.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 -from mindee.product.receipt.receipt_v5 import ReceiptV5 +from mindee.v1.product import MultiReceiptsDetectorV1 +from mindee.v1.product.international_id import InternationalIdV2 +from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 +from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 +from mindee.v1.product.receipt.receipt_v5 import ReceiptV5 from tests.utils import ( FILE_TYPES_DIR, V1_PRODUCT_DATA_DIR, diff --git a/tests/v1/workflows/test_workflow.py b/tests/v1/workflows/test_workflow.py index 74c74034..ee810541 100644 --- a/tests/v1/workflows/test_workflow.py +++ b/tests/v1/workflows/test_workflow.py @@ -2,8 +2,8 @@ import pytest -from mindee.parsing.common.workflow_response import WorkflowResponse -from mindee.product.generated.generated_v1 import GeneratedV1 +from mindee.v1.parsing.common import WorkflowResponse +from mindee.v1.product.generated import GeneratedV1 from tests.utils import V1_DATA_DIR WORKFLOW_DIR = V1_DATA_DIR / "workflows" diff --git a/tests/v1/workflows/test_workflow_integration.py b/tests/v1/workflows/test_workflow_integration.py index 0fdac38b..954ad7c6 100644 --- a/tests/v1/workflows/test_workflow_integration.py +++ b/tests/v1/workflows/test_workflow_integration.py @@ -3,10 +3,10 @@ import pytest -from mindee import Client +from mindee.v1.client import Client from mindee.input import WorkflowOptions -from mindee.parsing.common.execution_priority import ExecutionPriority -from mindee.product import FinancialDocumentV1, GeneratedV1 +from mindee.v1.parsing.common import ExecutionPriority +from mindee.v1.product import FinancialDocumentV1, GeneratedV1 from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v2/file_operations/test_crop_operation_integration.py b/tests/v2/file_operations/test_crop_operation_integration.py index 2c2e1dca..a95bc67f 100644 --- a/tests/v2/file_operations/test_crop_operation_integration.py +++ b/tests/v2/file_operations/test_crop_operation_integration.py @@ -4,12 +4,12 @@ import pytest from mindee import ( - ClientV2, InferenceParameters, InferenceResponse, CropParameters, CropResponse, ) +from mindee.v1.client import Client from mindee.input.sources.path_input import PathInput from mindee.v2.file_operations.crop import extract_crops from tests.utils import OUTPUT_DIR, V2_PRODUCT_DATA_DIR, cleanup_output_files @@ -27,7 +27,7 @@ def check_findoc_return(findoc_response: InferenceResponse): @pytest.mark.integration def test_image_should_extract_crops(): - client = ClientV2() + client = Client() crop_input = PathInput(V2_PRODUCT_DATA_DIR / "crop" / "default_sample.jpg") response = client.enqueue_and_get_result( CropResponse, @@ -51,7 +51,7 @@ def test_image_should_extract_crops(): ) check_findoc_return(invoice_0) extracted_images.save_all_to_disk(OUTPUT_DIR) - assert os.path.getsize(OUTPUT_DIR / "crop_001.jpg") == 187601 + assert os.path.getsize(OUTPUT_DIR / "crop_001.jpg") in (187601, 199685) assert os.path.getsize(OUTPUT_DIR / "crop_002.jpg") == 197978 diff --git a/tests/v2/file_operations/test_split_operation_integration.py b/tests/v2/file_operations/test_split_operation_integration.py index edc319fa..8b78b24b 100644 --- a/tests/v2/file_operations/test_split_operation_integration.py +++ b/tests/v2/file_operations/test_split_operation_integration.py @@ -3,12 +3,12 @@ import pytest from mindee import ( - ClientV2, InferenceParameters, InferenceResponse, SplitParameters, SplitResponse, ) +from mindee.v1.client import Client from mindee.input.sources.path_input import PathInput from tests.utils import OUTPUT_DIR, V2_PRODUCT_DATA_DIR, cleanup_output_files @@ -25,7 +25,7 @@ def check_findoc_return(findoc_response: InferenceResponse): @pytest.mark.integration def test_pdf_should_extract_splits(): - client = ClientV2() + client = Client() split_input = PathInput(V2_PRODUCT_DATA_DIR / "split" / "default_sample.pdf") response = client.enqueue_and_get_result( SplitResponse, diff --git a/tests/v2/input/test_inference_parameters.py b/tests/v2/input/test_inference_parameters.py index 3f527afa..094888ff 100644 --- a/tests/v2/input/test_inference_parameters.py +++ b/tests/v2/input/test_inference_parameters.py @@ -3,11 +3,9 @@ import pytest from mindee import InferenceParameters -from mindee.input.inference_parameters import ( - DataSchema, - DataSchemaReplace, - DataSchemaField, -) +from mindee.v2.product.extraction.params.data_schema import DataSchema +from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField +from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace from tests.utils import V2_PRODUCT_DATA_DIR expected_data_schema_dict = json.loads( diff --git a/tests/v2/parsing/test_job_response.py b/tests/v2/parsing/test_job_response.py index 022a44c5..9c9afcd5 100644 --- a/tests/v2/parsing/test_job_response.py +++ b/tests/v2/parsing/test_job_response.py @@ -4,7 +4,8 @@ import pytest from mindee import JobResponse -from mindee.parsing.v2 import ErrorItem, ErrorResponse +from mindee.v2.parsing.inference.error_item import ErrorItem +from mindee.v2.parsing.inference.error_response import ErrorResponse from tests.utils import V2_DATA_DIR diff --git a/tests/v2/product/classification/test_classification_integration.py b/tests/v2/product/classification/test_classification_integration.py index a16f1269..1c749bb8 100644 --- a/tests/v2/product/classification/test_classification_integration.py +++ b/tests/v2/product/classification/test_classification_integration.py @@ -2,7 +2,8 @@ import pytest -from mindee import ClientV2, PathInput +from mindee.v1.client import Client +from mindee.input.sources.path_input import PathInput from mindee.v2 import ClassificationParameters, ClassificationResponse from tests.utils import V2_PRODUCT_DATA_DIR @@ -14,15 +15,13 @@ def classification_model_id() -> str: @pytest.fixture(scope="session") -def v2_client() -> ClientV2: - return ClientV2() +def v2_client() -> Client: + return Client() @pytest.mark.integration @pytest.mark.v2 -def test_classification_default_sample( - v2_client: ClientV2, classification_model_id: str -): +def test_classification_default_sample(v2_client: Client, classification_model_id: str): input_source = PathInput( V2_PRODUCT_DATA_DIR / "classification" / "default_sample.jpg" ) diff --git a/tests/v2/product/crop/test_crop_integration.py b/tests/v2/product/crop/test_crop_integration.py index 1b0032c5..db707cc9 100644 --- a/tests/v2/product/crop/test_crop_integration.py +++ b/tests/v2/product/crop/test_crop_integration.py @@ -2,7 +2,8 @@ import pytest -from mindee import ClientV2, PathInput +from mindee.v1.client import Client +from mindee.input.sources.path_input import PathInput from mindee.v2 import CropParameters, CropResponse from tests.utils import V2_PRODUCT_DATA_DIR @@ -14,13 +15,13 @@ def crop_model_id() -> str: @pytest.fixture(scope="session") -def v2_client() -> ClientV2: - return ClientV2() +def v2_client() -> Client: + return Client() @pytest.mark.integration @pytest.mark.v2 -def test_crop_default_sample(v2_client: ClientV2, crop_model_id: str): +def test_crop_default_sample(v2_client: Client, crop_model_id: str): input_source = PathInput(V2_PRODUCT_DATA_DIR / "crop" / "default_sample.jpg") response = v2_client.enqueue_and_get_result( CropResponse, input_source, CropParameters(crop_model_id) diff --git a/tests/v2/product/extraction/test_extraction_response.py b/tests/v2/product/extraction/test_extraction_response.py index 3d0a06a3..b35124ea 100644 --- a/tests/v2/product/extraction/test_extraction_response.py +++ b/tests/v2/product/extraction/test_extraction_response.py @@ -3,16 +3,16 @@ import pytest from mindee import InferenceResponse -from mindee.parsing.v2 import InferenceActiveOptions -from mindee.parsing.v2.field.field_confidence import FieldConfidence -from mindee.parsing.v2.field.list_field import ListField -from mindee.parsing.v2.field.object_field import ObjectField -from mindee.parsing.v2.field.simple_field import SimpleField -from mindee.parsing.v2.field.inference_fields import InferenceFields -from mindee.parsing.v2.inference import Inference -from mindee.parsing.v2.inference_file import InferenceFile -from mindee.parsing.v2.inference_model import InferenceModel -from mindee.parsing.v2.rag_metadata import RagMetadata +from mindee.v2.parsing.inference.inference_active_options import InferenceActiveOptions +from mindee.v2.parsing.inference.field import FieldConfidence +from mindee.v2.parsing.inference.field import ListField +from mindee.v2.parsing.inference.field.object_field import ObjectField +from mindee.v2.parsing.inference.field.simple_field import SimpleField +from mindee.v2.parsing.inference.field import InferenceFields +from mindee.v2.product.extraction.inference import Inference +from mindee.v2.parsing.inference.inference_file import InferenceFile +from mindee.v2.parsing.inference.inference_model import InferenceModel +from mindee.v2.parsing.inference.rag_metadata import RagMetadata from tests.utils import V2_PRODUCT_DATA_DIR from tests.v2.product.utils import get_product_samples diff --git a/tests/v2/product/ocr/test_ocr_integration.py b/tests/v2/product/ocr/test_ocr_integration.py index abd3362c..b9f94666 100644 --- a/tests/v2/product/ocr/test_ocr_integration.py +++ b/tests/v2/product/ocr/test_ocr_integration.py @@ -2,7 +2,8 @@ import pytest -from mindee import ClientV2, PathInput +from mindee.v1.client import Client +from mindee.input.sources.path_input import PathInput from mindee.v2 import OCRParameters, OCRResponse from mindee.v2.product.ocr import OCRInference, OCRResult from tests.utils import V2_PRODUCT_DATA_DIR @@ -15,13 +16,13 @@ def ocr_model_id() -> str: @pytest.fixture(scope="session") -def v2_client() -> ClientV2: - return ClientV2() +def v2_client() -> Client: + return Client() @pytest.mark.integration @pytest.mark.v2 -def test_ocr_default_sample(v2_client: ClientV2, ocr_model_id: str): +def test_ocr_default_sample(v2_client: Client, ocr_model_id: str): input_source = PathInput(V2_PRODUCT_DATA_DIR / "ocr" / "default_sample.jpg") response = v2_client.enqueue_and_get_result( OCRResponse, input_source, OCRParameters(ocr_model_id) diff --git a/tests/v2/product/split/test_split_integration.py b/tests/v2/product/split/test_split_integration.py index b0e1c83f..daf2f2ef 100644 --- a/tests/v2/product/split/test_split_integration.py +++ b/tests/v2/product/split/test_split_integration.py @@ -2,7 +2,8 @@ import pytest -from mindee import ClientV2, PathInput +from mindee.v1.client import Client +from mindee.input.sources.path_input import PathInput from mindee.v2 import SplitParameters, SplitResponse from tests.utils import V2_PRODUCT_DATA_DIR @@ -14,13 +15,13 @@ def split_model_id() -> str: @pytest.fixture(scope="session") -def v2_client() -> ClientV2: - return ClientV2() +def v2_client() -> Client: + return Client() @pytest.mark.integration @pytest.mark.v2 -def test_split_default_sample(v2_client: ClientV2, split_model_id: str): +def test_split_default_sample(v2_client: Client, split_model_id: str): input_source = PathInput(V2_PRODUCT_DATA_DIR / "split" / "default_sample.pdf") response = v2_client.enqueue_and_get_result( SplitResponse, input_source, SplitParameters(split_model_id) diff --git a/tests/v2/test_base_classes.py b/tests/v2/test_base_classes.py index 77f28911..3a95966e 100644 --- a/tests/v2/test_base_classes.py +++ b/tests/v2/test_base_classes.py @@ -1,8 +1,8 @@ -from mindee.parsing.v2.base_inference import BaseInference -from mindee.parsing.v2.base_response import BaseResponse -from mindee.parsing.v2.inference_file import InferenceFile -from mindee.parsing.v2.inference_job import InferenceJob -from mindee.parsing.v2.inference_model import InferenceModel +from mindee.v2.parsing.inference.base_inference import BaseInference +from mindee.v2.parsing.inference.base_response import BaseResponse +from mindee.v2.parsing.inference.inference_file import InferenceFile +from mindee.v2.parsing.inference.inference_job import InferenceJob +from mindee.v2.parsing.inference.inference_model import InferenceModel def test_inference_job(): diff --git a/tests/v2/test_client.py b/tests/v2/test_client.py index 5eb0d3fa..f30c1915 100644 --- a/tests/v2/test_client.py +++ b/tests/v2/test_client.py @@ -3,26 +3,27 @@ import pytest -from mindee import ClientV2, InferenceParameters, InferenceResponse, LocalResponse +from mindee import InferenceParameters, InferenceResponse, LocalResponse +from mindee.v2.client import Client from mindee.error.mindee_error import MindeeApiV2Error, MindeeError -from mindee.error.mindee_http_error_v2 import MindeeHTTPErrorV2 +from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.path_input import PathInput from mindee.mindee_http.base_settings import USER_AGENT -from mindee.parsing.v2.inference import Inference -from mindee.parsing.v2.job import Job -from mindee.parsing.v2.job_response import JobResponse +from mindee.v2.product.extraction.inference import Inference +from mindee.v2.parsing.inference.job import Job +from mindee.v2.parsing.inference.job_response import JobResponse from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR, V2_DATA_DIR, dummy_envvars @pytest.fixture -def env_client(monkeypatch) -> ClientV2: +def env_client(monkeypatch) -> Client: dummy_envvars(monkeypatch) - return ClientV2("dummy") + return Client("dummy") @pytest.fixture -def custom_base_url_client(monkeypatch) -> ClientV2: +def custom_base_url_client(monkeypatch) -> Client: class _FakePostRespError: status_code = 400 # any non-2xx will do ok = False @@ -102,7 +103,7 @@ def _fake_ok_get_inference(*args, **kwargs): raising=True, ) - return ClientV2("dummy") + return Client("dummy") @pytest.fixture @@ -114,7 +115,7 @@ def env_no_key(monkeypatch): @pytest.mark.v2 def test_parse_path_without_token(env_no_key): with pytest.raises(MindeeApiV2Error): - ClientV2() + Client() @pytest.mark.v2 diff --git a/tests/v2/test_client_integration.py b/tests/v2/test_client_integration.py index 42c7605f..9b130193 100644 --- a/tests/v2/test_client_integration.py +++ b/tests/v2/test_client_integration.py @@ -3,10 +3,13 @@ import pytest -from mindee import ClientV2, InferenceParameters, PathInput, UrlInputSource -from mindee.error.mindee_http_error_v2 import MindeeHTTPErrorV2 -from mindee.parsing.v2 import InferenceActiveOptions -from mindee.parsing.v2.inference_response import InferenceResponse +from mindee import InferenceParameters +from mindee.v1.client import Client +from mindee.input.sources.path_input import PathInput +from mindee.input.sources.url_input_source import UrlInputSource +from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 +from mindee.v2.parsing import InferenceActiveOptions +from mindee.v2.product.extraction.inference_response import InferenceResponse from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR @@ -17,8 +20,8 @@ def findoc_model_id() -> str: @pytest.fixture(scope="session") -def v2_client() -> ClientV2: - return ClientV2() +def v2_client() -> Client: + return Client() def _basic_assert_success( @@ -40,7 +43,7 @@ def _basic_assert_success( @pytest.mark.integration @pytest.mark.v2 def test_parse_file_empty_multiple_pages_must_succeed( - v2_client: ClientV2, findoc_model_id: str + v2_client: Client, findoc_model_id: str ) -> None: """ Upload a 2-page almost blank PDF and make sure the returned inference contains the @@ -83,7 +86,7 @@ def test_parse_file_empty_multiple_pages_must_succeed( @pytest.mark.integration @pytest.mark.v2 def test_parse_file_empty_single_page_options_must_succeed( - v2_client: ClientV2, findoc_model_id: str + v2_client: Client, findoc_model_id: str ) -> None: """ Upload a blank PDF and make sure the options are set correctly. @@ -118,7 +121,7 @@ def test_parse_file_empty_single_page_options_must_succeed( @pytest.mark.integration @pytest.mark.v2 def test_parse_file_filled_single_page_must_succeed( - v2_client: ClientV2, findoc_model_id: str + v2_client: Client, findoc_model_id: str ) -> None: """ Upload a filled single-page JPEG and verify that common fields are present. @@ -168,7 +171,7 @@ def test_parse_file_filled_single_page_must_succeed( @pytest.mark.integration @pytest.mark.v2 -def test_invalid_uuid_must_throw_error(v2_client: ClientV2) -> None: +def test_invalid_uuid_must_throw_error(v2_client: Client) -> None: """ Using an invalid model identifier must trigger a 422 HTTP error. """ @@ -191,7 +194,7 @@ def test_invalid_uuid_must_throw_error(v2_client: ClientV2) -> None: @pytest.mark.integration @pytest.mark.v2 -def test_unknown_model_must_throw_error(v2_client: ClientV2) -> None: +def test_unknown_model_must_throw_error(v2_client: Client) -> None: """ Using an unknown model identifier must trigger a 404 HTTP error. """ @@ -213,7 +216,7 @@ def test_unknown_model_must_throw_error(v2_client: ClientV2) -> None: @pytest.mark.integration @pytest.mark.v2 def test_unknown_webhook_ids_must_throw_error( - v2_client: ClientV2, findoc_model_id: str + v2_client: Client, findoc_model_id: str ) -> None: """ Using an unknown webhook identifier must trigger an error. @@ -247,7 +250,7 @@ def test_unknown_webhook_ids_must_throw_error( @pytest.mark.integration @pytest.mark.v2 def test_blank_url_input_source_must_succeed( - v2_client: ClientV2, + v2_client: Client, findoc_model_id: str, ) -> None: """ @@ -274,7 +277,7 @@ def test_blank_url_input_source_must_succeed( @pytest.mark.integration @pytest.mark.v2 def test_data_schema_must_succeed( - v2_client: ClientV2, + v2_client: Client, findoc_model_id: str, ) -> None: """ From 2af9dddfe9f51cd4b9aea0ee3a6f673d7115d58a Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Mon, 1 Jun 2026 16:06:00 +0200 Subject: [PATCH 2/3] :boom: :recycle: rename inference product to extraction and move internals --- .gitignore | 1 + .../extras/code_samples/v2_classification.txt | 12 +- docs/extras/code_samples/v2_crop.txt | 12 +- docs/extras/code_samples/v2_extraction.txt | 18 +-- docs/extras/code_samples/v2_ocr.txt | 12 +- docs/extras/code_samples/v2_split.txt | 12 +- mindee/__init__.py | 15 ++- mindee/client_mixin.py | 22 ++-- mindee/error/mindee_http_error.py | 12 +- mindee/error/v2/mindee_http_error_v2.py | 2 +- mindee/extraction/common/extracted_image.py | 10 +- mindee/extraction/common/image_extractor.py | 28 ++--- .../multi_receipts_extractor.py | 4 +- .../extraction/pdf_extractor/extracted_pdf.py | 3 +- .../extraction/pdf_extractor/pdf_extractor.py | 8 +- mindee/geometry/bbox.py | 6 +- mindee/geometry/minmax.py | 4 +- mindee/geometry/polygon.py | 16 +-- mindee/geometry/polygon_utils.py | 14 +-- mindee/geometry/quadrilateral.py | 4 +- mindee/image_operations/image_compressor.py | 8 +- mindee/input/local_response.py | 8 +- mindee/input/sources/base_64_input.py | 4 +- mindee/input/sources/bytes_input.py | 4 +- mindee/input/sources/file_input.py | 2 +- mindee/input/sources/local_input_source.py | 16 +-- mindee/input/sources/path_input.py | 2 +- mindee/input/sources/url_input_source.py | 56 ++++----- mindee/mindee_http/base_endpoint.py | 2 +- mindee/mindee_http/endpoint.py | 60 +++++----- mindee/mindee_http/mindee_api_v2.py | 12 +- mindee/mindee_http/response_validation.py | 6 +- mindee/mindee_http/response_validation_v2.py | 4 +- mindee/mindee_http/workflow_endpoint.py | 6 +- mindee/pdf/pdf_compressor.py | 34 +++--- mindee/pdf/pdf_utils.py | 62 +++++----- mindee/v1/client.py | 108 +++++++++--------- .../parsing/common/async_predict_response.py | 4 +- mindee/v1/parsing/common/extras/extras.py | 2 +- mindee/v1/parsing/common/inference.py | 2 +- mindee/v1/parsing/common/job.py | 2 +- mindee/v1/parsing/common/orientation.py | 8 +- mindee/v1/parsing/common/predict_response.py | 4 +- mindee/v1/parsing/common/prediction.py | 4 +- mindee/v1/parsing/custom/line_items.py | 16 +-- mindee/v1/parsing/custom/list.py | 2 +- mindee/v1/parsing/generated/generated_list.py | 2 +- .../v1/parsing/generated/generated_object.py | 4 +- mindee/v1/parsing/standard/address.py | 6 +- mindee/v1/parsing/standard/amount.py | 6 +- mindee/v1/parsing/standard/base.py | 18 +-- mindee/v1/parsing/standard/boolean.py | 8 +- mindee/v1/parsing/standard/classification.py | 8 +- mindee/v1/parsing/standard/date.py | 6 +- mindee/v1/parsing/standard/locale.py | 6 +- mindee/v1/parsing/standard/payment_details.py | 16 +-- mindee/v1/parsing/standard/position.py | 8 +- mindee/v1/parsing/standard/tax.py | 8 +- mindee/v1/parsing/standard/text.py | 8 +- .../barcode_reader/barcode_reader_v1.py | 2 +- .../barcode_reader_v1_document.py | 4 +- mindee/v1/product/cropper/cropper_v1.py | 2 +- mindee/v1/product/cropper/cropper_v1_page.py | 4 +- mindee/v1/product/custom/custom_v1.py | 2 +- .../v1/product/custom/custom_v1_document.py | 8 +- mindee/v1/product/custom/custom_v1_page.py | 8 +- .../financial_document_v1.py | 2 +- .../financial_document_v1_document.py | 4 +- .../bank_account_details_v1.py | 2 +- .../bank_account_details_v1_document.py | 4 +- .../bank_account_details_v2.py | 2 +- .../bank_account_details_v2_document.py | 4 +- .../product/fr/carte_grise/carte_grise_v1.py | 2 +- .../fr/carte_grise/carte_grise_v1_document.py | 4 +- mindee/v1/product/fr/id_card/id_card_v1.py | 2 +- .../product/fr/id_card/id_card_v1_document.py | 4 +- .../v1/product/fr/id_card/id_card_v1_page.py | 4 +- mindee/v1/product/fr/id_card/id_card_v2.py | 2 +- .../product/fr/id_card/id_card_v2_document.py | 4 +- .../v1/product/fr/id_card/id_card_v2_page.py | 4 +- mindee/v1/product/generated/generated_v1.py | 2 +- .../generated/generated_v1_document.py | 2 +- .../v1/product/generated/generated_v1_page.py | 2 +- .../generated/generated_v1_prediction.py | 2 +- .../international_id/international_id_v2.py | 2 +- .../international_id_v2_document.py | 4 +- mindee/v1/product/invoice/invoice_v4.py | 2 +- .../v1/product/invoice/invoice_v4_document.py | 4 +- .../invoice_splitter/invoice_splitter_v1.py | 2 +- .../invoice_splitter_v1_document.py | 4 +- .../multi_receipts_detector_v1.py | 2 +- .../multi_receipts_detector_v1_document.py | 4 +- mindee/v1/product/passport/passport_v1.py | 2 +- .../product/passport/passport_v1_document.py | 4 +- mindee/v1/product/receipt/receipt_v5.py | 2 +- .../v1/product/receipt/receipt_v5_document.py | 4 +- .../v1/product/us/bank_check/bank_check_v1.py | 2 +- .../us/bank_check/bank_check_v1_document.py | 4 +- .../us/bank_check/bank_check_v1_page.py | 4 +- mindee/v2/__init__.py | 8 +- mindee/v2/client.py | 42 ++----- mindee/v2/commands/cli_parser.py | 8 +- mindee/v2/file_operations/crop.py | 8 +- mindee/v2/file_operations/crop_files.py | 4 +- mindee/v2/file_operations/split.py | 8 +- mindee/v2/file_operations/split_files.py | 4 +- mindee/v2/parsing/__init__.py | 12 +- .../parsing/inference/field/field_location.py | 2 +- .../parsing/inference/field/object_field.py | 6 +- mindee/v2/product/__init__.py | 2 +- mindee/v2/product/classification/__init__.py | 2 +- .../classification_classifier.py | 6 +- .../product/classification/param/__init__.py | 5 - .../product/classification/params/__init__.py | 5 + .../classification_parameters.py | 0 mindee/v2/product/crop/crop_box.py | 8 +- mindee/v2/product/crop/crop_response.py | 2 +- mindee/v2/product/extraction/__init__.py | 18 +-- .../{inference.py => extraction_inference.py} | 8 +- ...nce_response.py => extraction_response.py} | 8 +- ...ference_result.py => extraction_result.py} | 2 +- .../v2/product/extraction/params/__init__.py | 6 +- ...parameters.py => extraction_parameters.py} | 2 +- mindee/v2/product/split/split_range.py | 8 +- mindee/v2/product/split/split_response.py | 2 +- tests/utils.py | 4 +- .../test_crop_operation_integration.py | 10 +- .../test_split_operation_integration.py | 10 +- tests/v2/input/test_inference_parameters.py | 18 +-- tests/v2/input/test_local_response.py | 8 +- .../test_classification_response.py | 4 +- tests/v2/product/crop/test_crop_response.py | 6 +- .../extraction/test_extraction_response.py | 40 +++---- tests/v2/product/split/test_split_response.py | 6 +- tests/v2/test_client.py | 22 ++-- tests/v2/test_client_integration.py | 42 +++---- 136 files changed, 622 insertions(+), 619 deletions(-) delete mode 100644 mindee/v2/product/classification/param/__init__.py create mode 100644 mindee/v2/product/classification/params/__init__.py rename mindee/v2/product/classification/{param => params}/classification_parameters.py (100%) rename mindee/v2/product/extraction/{inference.py => extraction_inference.py} (79%) rename mindee/v2/product/extraction/{inference_response.py => extraction_response.py} (71%) rename mindee/v2/product/extraction/{inference_result.py => extraction_result.py} (97%) rename mindee/v2/product/extraction/params/{inference_parameters.py => extraction_parameters.py} (98%) diff --git a/.gitignore b/.gitignore index 7c39c10e..53ef3307 100644 --- a/.gitignore +++ b/.gitignore @@ -137,5 +137,6 @@ dmypy.json *.swp *-swp _test.py +_test*.py _test.json local_test diff --git a/docs/extras/code_samples/v2_classification.txt b/docs/extras/code_samples/v2_classification.txt index f064cc33..58874405 100644 --- a/docs/extras/code_samples/v2_classification.txt +++ b/docs/extras/code_samples/v2_classification.txt @@ -1,8 +1,8 @@ -from mindee import ( - ClientV2, - PathInput, - ClassificationParameters, - ClassificationResponse, +from mindee import PathInput +from mindee.v2 import ( + Client, + ClassificationParameters, + ClassificationResponse, ) input_path = "/path/to/the/file.ext" @@ -10,7 +10,7 @@ api_key = "MY_API_KEY" model_id = "MY_MODEL_ID" # Init a new client -mindee_client = ClientV2(api_key) +mindee_client = Client(api_key) # Set parameters params = ClassificationParameters( diff --git a/docs/extras/code_samples/v2_crop.txt b/docs/extras/code_samples/v2_crop.txt index e13a4142..69841d89 100644 --- a/docs/extras/code_samples/v2_crop.txt +++ b/docs/extras/code_samples/v2_crop.txt @@ -1,8 +1,8 @@ -from mindee import ( - ClientV2, - PathInput, - CropParameters, - CropResponse, +from mindee import PathInput +from mindee.v2 import ( + Client, + CropParameters, + CropResponse, ) input_path = "/path/to/the/file.ext" @@ -10,7 +10,7 @@ api_key = "MY_API_KEY" model_id = "MY_MODEL_ID" # Init a new client -mindee_client = ClientV2(api_key) +mindee_client = Client(api_key) # Set parameters params = CropParameters( diff --git a/docs/extras/code_samples/v2_extraction.txt b/docs/extras/code_samples/v2_extraction.txt index 30ecd7a8..5dda5e32 100644 --- a/docs/extras/code_samples/v2_extraction.txt +++ b/docs/extras/code_samples/v2_extraction.txt @@ -1,8 +1,8 @@ -from mindee import ( - ClientV2, - InferenceParameters, - InferenceResponse, - PathInput, +from mindee import PathInput +from mindee.v2 import ( + Client, + ExtractionParameters, + ExtractionResponse, ) input_path = "/path/to/the/file.ext" @@ -10,10 +10,10 @@ api_key = "MY_API_KEY" model_id = "MY_MODEL_ID" # Init a new client -mindee_client = ClientV2(api_key) +mindee_client = Client(api_key) -# Set inference parameters -params = InferenceParameters( +# Set extraction parameters +params = ExtractionParameters( # ID of the model, required. model_id=model_id, @@ -35,7 +35,7 @@ input_source = PathInput(input_path) # Send for processing response = mindee_client.enqueue_and_get_result( - InferenceResponse, + ExtractionResponse, input_source, params, ) diff --git a/docs/extras/code_samples/v2_ocr.txt b/docs/extras/code_samples/v2_ocr.txt index 0c022ea5..061ed7c9 100644 --- a/docs/extras/code_samples/v2_ocr.txt +++ b/docs/extras/code_samples/v2_ocr.txt @@ -1,8 +1,8 @@ -from mindee import ( - ClientV2, - PathInput, - OCRParameters, - OCRResponse, +from mindee import PathInput +from mindee.v2 import ( + Client, + OCRParameters, + OCRResponse, ) input_path = "/path/to/the/file.ext" @@ -10,7 +10,7 @@ api_key = "MY_API_KEY" model_id = "MY_MODEL_ID" # Init a new client -mindee_client = ClientV2(api_key) +mindee_client = Client(api_key) # Set parameters params = OCRParameters( diff --git a/docs/extras/code_samples/v2_split.txt b/docs/extras/code_samples/v2_split.txt index 08511d63..917c1b9e 100644 --- a/docs/extras/code_samples/v2_split.txt +++ b/docs/extras/code_samples/v2_split.txt @@ -1,8 +1,8 @@ -from mindee import ( - ClientV2, - PathInput, - SplitParameters, - SplitResponse, +from mindee import PathInput +from mindee.v2 import ( + Client, + SplitParameters, + SplitResponse, ) input_path = "/path/to/the/file.ext" @@ -10,7 +10,7 @@ api_key = "MY_API_KEY" model_id = "MY_MODEL_ID" # Init a new client -mindee_client = ClientV2(api_key) +mindee_client = Client(api_key) # Set parameters params = SplitParameters( diff --git a/mindee/__init__.py b/mindee/__init__.py index 330cdf0d..09020cd4 100644 --- a/mindee/__init__.py +++ b/mindee/__init__.py @@ -1,6 +1,9 @@ from mindee.v1 import product from mindee.input import LocalResponse, PageOptions, PollingOptions -from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters +from mindee.v2.parsing.inference.job_response import JobResponse +from mindee.v2.product.extraction.params.extraction_parameters import ( + ExtractionParameters, +) from mindee.input.sources import ( Base64Input, BytesInput, @@ -8,8 +11,7 @@ PathInput, UrlInputSource, ) -from mindee.v2.parsing import InferenceResponse, JobResponse -from mindee.v2.product.classification.param.classification_parameters import ( +from mindee.v2.product.classification.params.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( @@ -17,6 +19,8 @@ ) from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse +from mindee.v2.product.extraction.extraction_result import ExtractionResult from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse from mindee.v2.product.split.params.split_parameters import SplitParameters @@ -30,8 +34,9 @@ "CropParameters", "CropResponse", "FileInput", - "InferenceParameters", - "InferenceResponse", + "ExtractionParameters", + "ExtractionResponse", + "ExtractionResult", "JobResponse", "LocalResponse", "OCRParameters", diff --git a/mindee/client_mixin.py b/mindee/client_mixin.py index 514a91ac..849e3a35 100644 --- a/mindee/client_mixin.py +++ b/mindee/client_mixin.py @@ -19,8 +19,8 @@ def source_from_path( """ Load a document from a path, as a string or a `Path` object. - :param input_path: Path of file to open - :param fix_pdf: Whether to attempt fixing PDF files before sending. + :params input_path: Path of file to open + :params fix_pdf: Whether to attempt fixing PDF files before sending. Setting this to `True` can modify the data sent to Mindee. """ input_doc = PathInput(input_path) @@ -33,8 +33,8 @@ def source_from_file(input_file: BinaryIO, fix_pdf: bool = False) -> FileInput: """ Load a document from a normal Python file object/handle. - :param input_file: Input file handle - :param fix_pdf: Whether to attempt fixing PDF files before sending. + :params input_file: Input file handle + :params fix_pdf: Whether to attempt fixing PDF files before sending. Setting this to `True` can modify the data sent to Mindee. """ input_doc = FileInput(input_file) @@ -49,9 +49,9 @@ def source_from_b64string( """ Load a document from a base64 encoded string. - :param input_string: Input to parse as base64 string - :param filename: The name of the file (without the path) - :param fix_pdf: Whether to attempt fixing PDF files before sending. + :params input_string: Input to parse as base64 string + :params filename: The name of the file (without the path) + :params fix_pdf: Whether to attempt fixing PDF files before sending. Setting this to `True` can modify the data sent to Mindee. """ input_doc = Base64Input(input_string, filename) @@ -66,9 +66,9 @@ def source_from_bytes( """ Load a document from raw bytes. - :param input_bytes: Raw byte input - :param filename: The name of the file (without the path) - :param fix_pdf: Whether to attempt fixing PDF files before sending. + :params input_bytes: Raw byte input + :params filename: The name of the file (without the path) + :params fix_pdf: Whether to attempt fixing PDF files before sending. Setting this to `True` can modify the data sent to Mindee. """ input_doc = BytesInput(input_bytes, filename) @@ -101,7 +101,7 @@ def source_from_url( """ Load a document from a URL. - :param url: Raw byte input + :params url: Raw byte input """ return UrlInputSource( url, diff --git a/mindee/error/mindee_http_error.py b/mindee/error/mindee_http_error.py index bff2c5d5..c7f75099 100644 --- a/mindee/error/mindee_http_error.py +++ b/mindee/error/mindee_http_error.py @@ -16,9 +16,9 @@ def __init__(self, http_error: StringDict, url: str, code: int) -> None: """ Base exception for HTTP calls. - :param http_error: formatted & parsed error - :param url: url/endpoint the exception was raised on - :param code: HTTP code for the error + :params http_error: formatted & parsed error + :params url: url/endpoint the exception was raised on + :params code: HTTP code for the error """ self.status_code = code self.api_code = http_error["code"] if "code" in http_error else None @@ -33,7 +33,7 @@ def create_error_obj(response: Union[StringDict, str]) -> StringDict: """ Creates an error object based on a requests' payload. - :param response: response as sent by the server, as a dict. + :params response: response as sent by the server, as a dict. In _very_ rare instances, this can be an html string. """ if not isinstance(response, str): @@ -92,8 +92,8 @@ def handle_error(url: str, response: StringDict) -> MindeeHTTPError: """ Creates an appropriate HTTP error exception, based on retrieved HTTP error code. - :param url: url of the product - :param response: StringDict + :params url: url of the product + :params response: StringDict """ error_obj = create_error_obj(response) if not isinstance(response, str) and ( # type: ignore diff --git a/mindee/error/v2/mindee_http_error_v2.py b/mindee/error/v2/mindee_http_error_v2.py index 0d4b73ad..a1b5c9e8 100644 --- a/mindee/error/v2/mindee_http_error_v2.py +++ b/mindee/error/v2/mindee_http_error_v2.py @@ -12,7 +12,7 @@ def __init__(self, response: ErrorResponse) -> None: """ Base exception for HTTP calls. - :param response: + :params response: """ self.status = response.status self.title = response.title diff --git a/mindee/extraction/common/extracted_image.py b/mindee/extraction/common/extracted_image.py index 65acb81c..6fd88743 100644 --- a/mindee/extraction/common/extracted_image.py +++ b/mindee/extraction/common/extracted_image.py @@ -26,9 +26,9 @@ def __init__( """ Initialize the ExtractedImage with a buffer and an internal file name. - :param input_source: Local source for input. - :param page_id: ID of the page the element was found on. - :param element_id: ID of the element in a page. + :params input_source: Local source for input. + :params page_id: ID of the page the element was found on. + :params element_id: ID of the element in a page. """ self.buffer = io.BytesIO(input_source.file_object.read()) self.buffer.name = input_source.filename @@ -52,8 +52,8 @@ def save_to_file( """ Saves the document to a file. - :param output_path: Path to save the file to. - :param file_format: Optional PIL-compatible format for the file. Inferred from file extension if not provided. + :params output_path: Path to save the file to. + :params file_format: Optional PIL-compatible format for the file. Inferred from file extension if not provided. :raises MindeeError: If an invalid path or filename is provided. """ try: diff --git a/mindee/extraction/common/image_extractor.py b/mindee/extraction/common/image_extractor.py index 52c57d0d..08ea11e3 100644 --- a/mindee/extraction/common/image_extractor.py +++ b/mindee/extraction/common/image_extractor.py @@ -18,7 +18,7 @@ def attach_image_as_new_file( # type: ignore """ Attaches an image as a new page in a PdfDocument object. - :param input_buffer: Input buffer. + :params input_buffer: Input buffer. :return: A PdfDocument handle. """ # Create a new page in the PdfDocument @@ -54,11 +54,11 @@ def extract_image_from_polygon( """ Crops the image from the given polygon. - :param page_content: Contents of the page as a Pillow object. - :param polygon: Polygon coordinates for the image. - :param width: Width of the generated image. - :param height: Height of the generated image. - :param file_format: Format for the generated file. + :params page_content: Contents of the page as a Pillow object. + :params polygon: Polygon coordinates for the image. + :params width: Width of the generated image. + :params height: Height of the generated image. + :params file_format: Format for the generated file. :return: A generated image as a buffer. """ min_max_x = get_min_max_x(polygon) @@ -78,8 +78,8 @@ def save_image_to_buffer(image: Image.Image, file_format: str) -> bytes: """ Saves an image as a buffer. - :param image: Pillow wrapper for the image. - :param file_format: Format to save the file as. + :params image: Pillow wrapper for the image. + :params file_format: Format to save the file as. :return: A valid buffer. """ buffer = io.BytesIO() @@ -92,7 +92,7 @@ def determine_file_format(input_source: LocalInputSource) -> str: """ Retrieves the file format from an input source. - :param input_source: Local input source to retrieve the format from. + :params input_source: Local input source to retrieve the format from. :return: A valid pillow file format. """ if input_source.is_pdf(): @@ -107,7 +107,7 @@ def get_file_extension(file_format: str): """ Extract the correct file extension. - :param file_format: Format of the file. + :params file_format: Format of the file. :return: A valid file extension. """ return file_format.lower() if file_format != "JPEG" else "jpg" @@ -121,9 +121,9 @@ def extract_multiple_images_from_source( """ Extracts elements from a page based on a list of bounding boxes. - :param input_source: Local Input source to extract elements from. - :param page_id: id of the page to extract from. - :param polygons: List of coordinates to pull the elements from. + :params input_source: Local Input source to extract elements from. + :params page_id: id of the page to extract from. + :params polygons: List of coordinates to pull the elements from. :return: List of byte arrays representing the extracted elements. """ page = load_pdf_doc(input_source).get_page(page_id) @@ -156,7 +156,7 @@ def load_pdf_doc(input_file: LocalInputSource) -> pdfium.PdfDocument: # type: i """ Loads a PDF document from a local input source. - :param input_file: Local input. + :params input_file: Local input. :return: A valid PdfDocument handle. """ if input_file.is_pdf(): diff --git a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py index a5256d9d..e208238a 100644 --- a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py +++ b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py @@ -15,8 +15,8 @@ def extract_receipts( """ Extracts individual receipts from multi-receipts documents. - :param input_source: Local Input Source to extract sub-receipts from. - :param inference: Results of the inference. + :params input_source: Local Input Source to extract sub-receipts from. + :params inference: Results of the inference. :return: Individual extracted receipts as an array of ExtractedMultiReceiptsImage. """ images: List[ExtractedImage] = [] diff --git a/mindee/extraction/pdf_extractor/extracted_pdf.py b/mindee/extraction/pdf_extractor/extracted_pdf.py index f58e75e9..521b9f2b 100644 --- a/mindee/extraction/pdf_extractor/extracted_pdf.py +++ b/mindee/extraction/pdf_extractor/extracted_pdf.py @@ -35,7 +35,8 @@ def save_to_file(self, output_path: Union[Path, str]): """ Writes the contents of the current PDF object to a file. - :param output_path: Path of the destination file. If not extension is provided, pdf will be appended by default. + :params output_path: Path of the destination file. If + not extension is provided, pdf will be appended by default. """ out_path = Path(output_path) if out_path.resolve().is_dir(): diff --git a/mindee/extraction/pdf_extractor/pdf_extractor.py b/mindee/extraction/pdf_extractor/pdf_extractor.py index 40fe60a1..7bc93629 100644 --- a/mindee/extraction/pdf_extractor/pdf_extractor.py +++ b/mindee/extraction/pdf_extractor/pdf_extractor.py @@ -35,7 +35,7 @@ def cut_pages(self, page_indexes: List) -> BinaryIO: """ Create a new PDF from pages and save it into a buffer. - :param page_indexes: List of pages number to use for merging in the original PDF. + :params page_indexes: List of pages number to use for merging in the original PDF. :return: The buffer containing the new PDF. """ self._source_pdf.seek(0) @@ -52,7 +52,7 @@ def extract_sub_documents( """ Extract the sub-documents from the main pdf, based on the given list of page indexes. - :param page_indexes: List of list of numbers, representing page indexes. + :params page_indexes: List of list of numbers, representing page indexes. :return: A list of created PDFS. """ extracted_pdfs: List[ExtractedPdf] = [] @@ -80,8 +80,8 @@ def extract_invoices( """ Extracts invoices as complete PDFs from the document. - :param page_indexes: List of sub-lists of pages to keep. - :param strict: Whether to trust confidence scores above 0.5 (included) or not. + :params page_indexes: List of sub-lists of pages to keep. + :params strict: Whether to trust confidence scores above 0.5 (included) or not. :return: A list of extracted invoices. """ if len(page_indexes) < 1: diff --git a/mindee/geometry/bbox.py b/mindee/geometry/bbox.py index 7f3d4153..b7677280 100644 --- a/mindee/geometry/bbox.py +++ b/mindee/geometry/bbox.py @@ -35,7 +35,7 @@ def get_bbox(points: Points) -> BBox: """ Given a sequence of points, calculate a bbox that encompasses all points. - :param points: Polygon to process. + :params points: Polygon to process. :return: A bbox that encompasses all points """ y_min = min(v[1] for v in points) @@ -59,8 +59,8 @@ def extend_bbox(bbox: BBox, points: Points) -> BBox: """ Given a BBox and a sequence of points, calculate the surrounding bbox that encompasses all. - :param bbox: initial BBox to extend. - :param points: Sequence of points to process. Accepts polygons and similar + :params bbox: initial BBox to extend. + :params points: Sequence of points to process. Accepts polygons and similar """ all_points = [] for point in points: diff --git a/mindee/geometry/minmax.py b/mindee/geometry/minmax.py index 0d82b0eb..22ed8060 100644 --- a/mindee/geometry/minmax.py +++ b/mindee/geometry/minmax.py @@ -16,7 +16,7 @@ def get_min_max_y(points: Points) -> MinMax: """ Get the maximum and minimum Y value given a sequence of points. - :param points: List of points + :params points: List of points """ y_coords = [y for _, y in points] return MinMax(min=min(y_coords), max=max(y_coords)) @@ -26,7 +26,7 @@ def get_min_max_x(points: Points) -> MinMax: """ Get the maximum and minimum Y value given a sequence of points. - :param points: List of points + :params points: List of points """ x_coords = [x for x, _ in points] return MinMax(min=min(x_coords), max=max(x_coords)) diff --git a/mindee/geometry/polygon.py b/mindee/geometry/polygon.py index bd733cfd..da6e9f68 100644 --- a/mindee/geometry/polygon.py +++ b/mindee/geometry/polygon.py @@ -34,7 +34,7 @@ def is_point_in_x(self, point: Point) -> bool: """ Determine if the Point is in the Polygon's X-axis. - :param point: Point to compare + :params point: Point to compare """ self._raise_if_invalid() min_x, max_x = get_min_max_x(self) @@ -44,7 +44,7 @@ def is_point_in_y(self, point: Point) -> bool: """ Determine if the Point is in the Polygon's Y-axis. - :param point: Point to compare + :params point: Point to compare """ self._raise_if_invalid() min_y, max_y = get_min_max_y(self) @@ -60,8 +60,8 @@ def is_point_in_polygon_x(point: Point, polygon: Polygon) -> bool: Determine if the Point is in the Polygon's X-axis. - :param point: Point to compare - :param polygon: Polygon to look into + :params point: Point to compare + :params polygon: Polygon to look into """ min_x, max_x = get_min_max_x(polygon) return is_point_in_x(point, min_x, max_x) @@ -73,8 +73,8 @@ def is_point_in_polygon_y(point: Point, polygon: Polygon) -> bool: Determine if the Point is in the Polygon's Y-axis. - :param point: Point to compare - :param polygon: Polygon to look into + :params point: Point to compare + :params polygon: Polygon to look into """ min_y, max_y = get_min_max_y(polygon) return is_point_in_y(point, min_y, max_y) @@ -86,7 +86,7 @@ def polygon_from_prediction(prediction: Sequence[List[float]]) -> Polygon: Transform a prediction into a Polygon. - :param prediction: API prediction. + :params prediction: API prediction. """ return Polygon([Point(point[0], point[1]) for point in prediction]) @@ -95,7 +95,7 @@ def merge_polygons(vertices: Sequence[Polygon]) -> Polygon: """ Given a sequence of polygons, calculate a polygon box that encompasses all polygons. - :param vertices: List of polygons + :params vertices: List of polygons :return: A bounding box that encompasses all polygons """ y_min = min(y for v in vertices for _, y in v) diff --git a/mindee/geometry/polygon_utils.py b/mindee/geometry/polygon_utils.py index 3d234a0d..8fe6dab6 100644 --- a/mindee/geometry/polygon_utils.py +++ b/mindee/geometry/polygon_utils.py @@ -5,7 +5,7 @@ def get_centroid(points: Points) -> Point: """ Get the central point (centroid) given a sequence of points. - :param points: Polygon to process. + :params points: Polygon to process. :return: The centroid """ vertices_count = len(points) @@ -18,9 +18,9 @@ def is_point_in_y(point: Point, min_y: float, max_y: float) -> bool: """ Determine if the Point is in the Polygon's Y-axis. - :param point: Point to compare - :param min_y: Minimum Y-axis value - :param max_y: Maximum Y-axis value + :params point: Point to compare + :params min_y: Minimum Y-axis value + :params max_y: Maximum Y-axis value """ return min_y <= point.y <= max_y @@ -29,8 +29,8 @@ def is_point_in_x(point: Point, min_x: float, max_x: float) -> bool: """ Determine if the Point is within the X-axis interval. - :param point: Point to compare - :param min_x: Minimum X-axis value - :param max_x: Maximum X-axis value + :params point: Point to compare + :params min_x: Minimum X-axis value + :params max_x: Maximum X-axis value """ return min_x <= point.x <= max_x diff --git a/mindee/geometry/quadrilateral.py b/mindee/geometry/quadrilateral.py index 7034dc4f..dc182fe2 100644 --- a/mindee/geometry/quadrilateral.py +++ b/mindee/geometry/quadrilateral.py @@ -28,7 +28,7 @@ def quadrilateral_from_prediction(prediction: Sequence[list]) -> Quadrilateral: """ Transform a prediction into a Quadrilateral. - :param prediction: API prediction. + :params prediction: API prediction. """ if len(prediction) != 4: raise GeometryError("Prediction must have exactly 4 points") @@ -44,7 +44,7 @@ def get_bounding_box(points: Points) -> Quadrilateral: """ Given a sequence of points, calculate a bounding box that encompasses all points. - :param points: Polygon to process. + :params points: Polygon to process. :return: A bounding box that encompasses all points. """ x_min, y_min, x_max, y_max = get_bbox(points) diff --git a/mindee/image_operations/image_compressor.py b/mindee/image_operations/image_compressor.py index 82b0bf87..9848000d 100644 --- a/mindee/image_operations/image_compressor.py +++ b/mindee/image_operations/image_compressor.py @@ -13,10 +13,10 @@ def compress_image( """ Compresses an image with the given parameters. - :param image_buffer: Buffer representation of an image, also accepts BinaryIO. - :param quality: Quality to apply to the image (JPEG compression). - :param max_width: Maximum bound for the width. - :param max_height: Maximum bound for the height. + :params image_buffer: Buffer representation of an image, also accepts BinaryIO. + :params quality: Quality to apply to the image (JPEG compression). + :params max_width: Maximum bound for the width. + :params max_height: Maximum bound for the height. :return: """ if isinstance(image_buffer, bytes): diff --git a/mindee/input/local_response.py b/mindee/input/local_response.py index 4050ef43..580adec2 100644 --- a/mindee/input/local_response.py +++ b/mindee/input/local_response.py @@ -64,7 +64,7 @@ def _process_secret_key( """ Processes the secret key as a byte array. - :param secret_key: Secret key, either a string or a byte/byte array. + :params secret_key: Secret key, either a string or a byte/byte array. :return: a byte/byte array secret key. """ if isinstance(secret_key, (bytes, bytearray)): @@ -75,7 +75,7 @@ def get_hmac_signature(self, secret_key: Union[str, bytes, bytearray]): """ Returns the hmac signature of the local response, from the secret key provided. - :param secret_key: Secret key, either a string or a byte/byte array. + :params secret_key: Secret key, either a string or a byte/byte array. :return: The hmac signature of the local response. """ algorithm = hashlib.sha256 @@ -98,8 +98,8 @@ def is_valid_hmac_signature( """ Checks if the hmac signature of the local response is valid. - :param secret_key: Secret key, given as a string. - :param signature: HMAC signature, given as a string. + :params secret_key: Secret key, given as a string. + :params signature: HMAC signature, given as a string. :return: True if the HMAC signature is valid. """ return signature == self.get_hmac_signature(secret_key) diff --git a/mindee/input/sources/base_64_input.py b/mindee/input/sources/base_64_input.py index e1f0c892..0438b106 100644 --- a/mindee/input/sources/base_64_input.py +++ b/mindee/input/sources/base_64_input.py @@ -11,8 +11,8 @@ def __init__(self, base64_string: str, filename: str) -> None: """ Input document from a base64 encoded string. - :param base64_string: Raw data as a base64 encoded string - :param filename: File name of the input + :params base64_string: Raw data as a base64 encoded string + :params filename: File name of the input """ self.file_object = io.BytesIO(base64.standard_b64decode(base64_string)) self.filename = filename diff --git a/mindee/input/sources/bytes_input.py b/mindee/input/sources/bytes_input.py index afbd3149..eda582b6 100644 --- a/mindee/input/sources/bytes_input.py +++ b/mindee/input/sources/bytes_input.py @@ -10,8 +10,8 @@ def __init__(self, raw_bytes: bytes, filename: str) -> None: """ Input document from raw bytes (no buffer). - :param raw_bytes: Raw data as bytes - :param filename: File name of the input + :params raw_bytes: Raw data as bytes + :params filename: File name of the input """ self.file_object = io.BytesIO(raw_bytes) self.filename = filename diff --git a/mindee/input/sources/file_input.py b/mindee/input/sources/file_input.py index 8a3cbaef..d8ba7ead 100644 --- a/mindee/input/sources/file_input.py +++ b/mindee/input/sources/file_input.py @@ -13,7 +13,7 @@ def __init__(self, file: BinaryIO) -> None: Note: the calling function is responsible for closing the file. - :param file: FileIO object + :params file: FileIO object """ assert file.name, "File name must be set" diff --git a/mindee/input/sources/local_input_source.py b/mindee/input/sources/local_input_source.py index 9dd3a4b2..af3a44cd 100644 --- a/mindee/input/sources/local_input_source.py +++ b/mindee/input/sources/local_input_source.py @@ -67,7 +67,7 @@ def fix_pdf(self, maximum_offset: int = 500) -> None: or until the maximum offset has been reached. If a tag denoting a PDF file is found, deletes all bytes before it. - :param maximum_offset: maximum byte offset where superfluous headers will be removed. + :params maximum_offset: maximum byte offset where superfluous headers will be removed. Cannot be less than 0. """ if maximum_offset < 0: @@ -172,7 +172,7 @@ def merge_pdf_pages(self, page_numbers: set) -> None: """ Create a new PDF from pages and set it to ``file_object``. - :param page_numbers: List of page numbers to use for merging in the original PDF. + :params page_numbers: List of page numbers to use for merging in the original PDF. :return: None """ self.file_object.seek(0) @@ -202,7 +202,7 @@ def read_contents(self, close_file: bool) -> Tuple[str, bytes]: """ Read the contents of the input file. - :param close_file: whether to close the file after reading + :params close_file: whether to close the file after reading :return: a Tuple with the file name and binary data """ logger.debug("Reading data from: %s", self.filename) @@ -239,12 +239,12 @@ def compress( """ Compresses the file object, either as a PDF or an image. - :param quality: Quality of the compression. For images, this is the JPEG quality. + :params quality: Quality of the compression. For images, this is the JPEG quality. For PDFs, this affects image quality within the PDF. - :param max_width: Maximum width for image resizing. Ignored for PDFs. - :param max_height: Maximum height for image resizing. Ignored for PDFs. - :param force_source_text: For PDFs, whether to force compression even if source text is present. - :param disable_source_text: For PDFs, whether to disable source text during compression. + :params max_width: Maximum width for image resizing. Ignored for PDFs. + :params max_height: Maximum height for image resizing. Ignored for PDFs. + :params force_source_text: For PDFs, whether to force compression even if source text is present. + :params disable_source_text: For PDFs, whether to disable source text during compression. """ new_file_bytes: bytes if self.is_pdf(): diff --git a/mindee/input/sources/path_input.py b/mindee/input/sources/path_input.py index 4da49e3f..255d5fa6 100644 --- a/mindee/input/sources/path_input.py +++ b/mindee/input/sources/path_input.py @@ -12,7 +12,7 @@ def __init__(self, filepath: Union[Path, str]) -> None: """ Input document from a path. - :param filepath: Path to open + :params filepath: Path to open """ self.file_object = open(filepath, "rb") # pylint: disable=consider-using-with self.filename = os.path.basename(filepath) diff --git a/mindee/input/sources/url_input_source.py b/mindee/input/sources/url_input_source.py index 8c681bba..222e1eba 100644 --- a/mindee/input/sources/url_input_source.py +++ b/mindee/input/sources/url_input_source.py @@ -23,7 +23,7 @@ def __init__(self, url: str) -> None: """ Input document from a base64 encoded string. - :param url: URL to send, must be HTTPS. + :params url: URL to send, must be HTTPS. """ if not url.lower().startswith("https"): raise MindeeSourceError("URL must be HTTPS") @@ -43,11 +43,11 @@ def __fetch_file_content( """ Fetch the content of the file from the URL. - :param username: Optional username for authentication. - :param password: Optional password for authentication. - :param token: Optional token for authentication. - :param headers: Optional additional headers for the request. - :param max_redirects: Maximum number of redirects to follow. + :params username: Optional username for authentication. + :params password: Optional password for authentication. + :params token: Optional token for authentication. + :params headers: Optional additional headers for the request. + :params max_redirects: Maximum number of redirects to follow. :return: The content of the file as bytes. """ if not headers: @@ -75,13 +75,13 @@ def save_to_file( """ Save the content of the URL to a file. - :param filepath: Path to save the content to. - :param filename: Optional filename to give to the file. - :param username: Optional username for authentication. - :param password: Optional password for authentication. - :param token: Optional token for authentication. - :param headers: Optional additional headers for the request. - :param max_redirects: Maximum number of redirects to follow. + :params filepath: Path to save the content to. + :params filename: Optional filename to give to the file. + :params username: Optional username for authentication. + :params password: Optional password for authentication. + :params token: Optional token for authentication. + :params headers: Optional additional headers for the request. + :params max_redirects: Maximum number of redirects to follow. :return: The path to the saved file. """ response = self.__fetch_file_content( @@ -105,12 +105,12 @@ def as_local_input_source( """ Convert the URL content to a BytesInput object. - :param filename: Optional filename for the BytesInput. - :param username: Optional username for authentication. - :param password: Optional password for authentication. - :param token: Optional token for authentication. - :param headers: Optional additional headers for the request. - :param max_redirects: Maximum number of redirects to follow. + :params filename: Optional filename for the BytesInput. + :params username: Optional username for authentication. + :params password: Optional password for authentication. + :params token: Optional token for authentication. + :params headers: Optional additional headers for the request. + :params max_redirects: Maximum number of redirects to follow. :return: A BytesInput object containing the file content. """ response = self.__fetch_file_content( @@ -125,7 +125,7 @@ def __extract_filename_from_url(uri) -> str: """ Extract the filename from a given URL. - :param uri: The URL to extract the filename from. + :params uri: The URL to extract the filename from. :return: The extracted filename or an empty string if not found. """ filename = os.path.basename(urlparse(uri).path) @@ -136,7 +136,7 @@ def __generate_file_name(extension=".tmp") -> str: """ Generate a unique filename with a timestamp and random string. - :param extension: The file extension to use (default is '.tmp'). + :params extension: The file extension to use (default is '.tmp'). :return: A generated filename. """ random_string = "".join( @@ -150,7 +150,7 @@ def __get_file_extension(filename) -> Optional[str]: """ Get the extension from a filename. - :param filename: The filename to extract the extension from. + :params filename: The filename to extract the extension from. :return: The lowercase file extension or None if not found. """ ext = os.path.splitext(filename)[1] @@ -160,7 +160,7 @@ def __fill_filename(self, filename=None) -> str: """ Fill in a filename if not provided or incomplete. - :param filename: Optional filename to use. + :params filename: Optional filename to use. :return: A complete filename. """ if filename is None: @@ -178,11 +178,11 @@ def __make_request(url, auth, headers, redirects, max_redirects) -> bytes: """ Makes an HTTP request to the given URL, while following redirections. - :param url: The URL to request. - :param auth: Authentication tuple (username, password). - :param headers: Headers for the request. - :param redirects: Current number of redirects. - :param max_redirects: Maximum number of redirects to follow. + :params url: The URL to request. + :params auth: Authentication tuple (username, password). + :params headers: Headers for the request. + :params redirects: Current number of redirects. + :params max_redirects: Maximum number of redirects to follow. :return: The content of the response. :raises MindeeSourceError: If max redirects are exceeded or the request fails. """ diff --git a/mindee/mindee_http/base_endpoint.py b/mindee/mindee_http/base_endpoint.py index 51c75f71..ad137407 100644 --- a/mindee/mindee_http/base_endpoint.py +++ b/mindee/mindee_http/base_endpoint.py @@ -10,6 +10,6 @@ def __init__(self, settings: BaseSettings) -> None: """ Base API endpoint class for all endpoints. - :param settings: Settings relating to all endpoints. + :params settings: Settings relating to all endpoints. """ self.settings = settings diff --git a/mindee/mindee_http/endpoint.py b/mindee/mindee_http/endpoint.py index 947e3251..1860bd98 100644 --- a/mindee/mindee_http/endpoint.py +++ b/mindee/mindee_http/endpoint.py @@ -22,9 +22,9 @@ def __init__( """ Generic API endpoint for a product. - :param owner: owner of the product - :param url_name: name of the product as it appears in the URL - :param version: interface version + :params owner: owner of the product + :params url_name: name of the product as it appears in the URL + :params version: interface version """ super().__init__(settings) self.owner = owner @@ -42,11 +42,11 @@ def predict_req_post( """ Make a request to POST a document for prediction. - :param input_source: Input object - :param include_words: Include raw OCR words in the response - :param close_file: Whether to `close()` the file after parsing it. - :param cropper: Including Mindee cropping results. - :param full_text: Whether to include the full OCR text response in compatible APIs. + :params input_source: Input object + :params include_words: Include raw OCR words in the response + :params close_file: Whether to `close()` the file after parsing it. + :params cropper: Including Mindee cropping results. + :params full_text: Whether to include the full OCR text response in compatible APIs. :return: requests response """ return self._custom_request( @@ -66,13 +66,13 @@ def predict_async_req_post( """ Make an asynchronous request to POST a document for prediction. - :param input_source: Input object - :param include_words: Include raw OCR words in the response - :param close_file: Whether to `close()` the file after parsing it. - :param cropper: Including Mindee cropping results. - :param full_text: Whether to include the full OCR text response in compatible APIs. - :param workflow_id: Workflow ID. - :param rag: If set, will enable Retrieval-Augmented Generation. + :params input_source: Input object + :params include_words: Include raw OCR words in the response + :params close_file: Whether to `close()` the file after parsing it. + :params cropper: Including Mindee cropping results. + :params full_text: Whether to include the full OCR text response in compatible APIs. + :params workflow_id: Workflow ID. + :params rag: If set, will enable Retrieval-Augmented Generation. :return: requests response """ return self._custom_request( @@ -140,7 +140,7 @@ def document_queue_req_get(self, queue_id: str) -> requests.Response: """ Sends a request matching a given queue_id. Returns either a Job or a Document. - :param queue_id: queue_id received from the API + :params queue_id: queue_id received from the API """ return requests.get( f"{self.settings.url_root}/documents/queue/{queue_id}", @@ -162,8 +162,8 @@ def document_feedback_req_put( """ Send a feedback. - :param document_id: ID of the document to send feedback to. - :param feedback: Feedback object to send. + :params document_id: ID of the document to send feedback to. + :params feedback: Feedback object to send. """ return requests.put( f"{self.settings.base_url}/documents/{document_id}/feedback", @@ -182,9 +182,9 @@ def training_req_post( """ Make a request to POST a document for training. - :param input_source: Input object + :params input_source: Input object :return: requests response - :param close_file: Whether to `close()` the file after parsing it. + :params close_file: Whether to `close()` the file after parsing it. """ files = {"document": input_source.read_contents(close_file)} params = {"training": True, "with_candidates": True} @@ -204,9 +204,9 @@ def training_async_req_post( """ Make a request to POST a document for training without processing. - :param input_source: Input object + :params input_source: Input object :return: requests response - :param close_file: Whether to `close()` the file after parsing it. + :params close_file: Whether to `close()` the file after parsing it. """ files = {"document": input_source.read_contents(close_file)} params = {"training": True, "async": True} @@ -224,7 +224,7 @@ def document_req_del(self, document_id: str) -> requests.Response: """ Make a request to DELETE a document. - :param document_id: ID of the document + :params document_id: ID of the document """ response = requests.delete( f"{self.settings.url_root}/documents/{document_id}", @@ -237,7 +237,7 @@ def documents_req_get(self, page_id: int = 1) -> requests.Response: """ Make a request to GET info on all documents. - :param page_id: Page number + :params page_id: Page number """ params = { "page": page_id, @@ -254,7 +254,7 @@ def document_req_get(self, document_id: str) -> requests.Response: """ Make a request to GET annotations for a document. - :param document_id: ID of the document + :params document_id: ID of the document """ params = { "include_annotations": True, @@ -275,8 +275,8 @@ def annotations_req_post( """ Make a request to POST annotations for a document. - :param document_id: ID of the document to annotate - :param annotations: Annotations object + :params document_id: ID of the document to annotate + :params annotations: Annotations object :return: requests response """ response = requests.post( @@ -293,8 +293,8 @@ def annotations_req_put( """ Make a request to PUT annotations for a document. - :param document_id: ID of the document to annotate - :param annotations: Annotations object + :params document_id: ID of the document to annotate + :params annotations: Annotations object :return: requests response """ response = requests.put( @@ -309,7 +309,7 @@ def annotations_req_del(self, document_id: str) -> requests.Response: """ Make a request to DELETE annotations for a document. - :param document_id: ID of the document to annotate + :params document_id: ID of the document to annotate :return: requests response """ response = requests.delete( diff --git a/mindee/mindee_http/mindee_api_v2.py b/mindee/mindee_http/mindee_api_v2.py index 2ca34a10..cc79ba3b 100644 --- a/mindee/mindee_http/mindee_api_v2.py +++ b/mindee/mindee_http/mindee_api_v2.py @@ -81,9 +81,9 @@ def req_post_inference_enqueue( """ Make an asynchronous request to POST a document for prediction on the V2 API. - :param input_source: Input object. - :param params: Options for the enqueueing of the document. - :param slug: Slug to use for the enqueueing, defaults to 'inferences'. + :params input_source: Input object. + :params params: Options for the enqueueing of the document. + :params slug: Slug to use for the enqueueing, defaults to 'inferences'. :return: requests response. """ data = params.get_form_data() @@ -114,7 +114,7 @@ def req_get_job(self, job_id: str) -> requests.Response: """ Sends a request matching a given queue_id. Returns either a Job or a Document. - :param job_id: Job ID, returned by the enqueue request. + :params job_id: Job ID, returned by the enqueue request. """ return requests.get( f"{self.url_root}/jobs/{job_id}", @@ -127,8 +127,8 @@ def req_get_inference(self, inference_id: str, slug: str) -> requests.Response: """ Sends a request matching a given queue_id. Returns either a Job or a Document. - :param inference_id: Inference ID, returned by the job request. - :param slug: Slug of the inference, defaults to nothing. + :params inference_id: Inference ID, returned by the job request. + :params slug: Slug of the inference, defaults to nothing. """ url = f"{self.url_root}/{slug}/{inference_id}" diff --git a/mindee/mindee_http/response_validation.py b/mindee/mindee_http/response_validation.py index 392c452c..03160fcd 100644 --- a/mindee/mindee_http/response_validation.py +++ b/mindee/mindee_http/response_validation.py @@ -9,7 +9,7 @@ def is_valid_sync_response(response: requests.Response) -> bool: """ Checks if the synchronous response is valid. Returns True if the response is valid. - :param response: a requests response object. + :params response: a requests response object. :return: bool """ if not response or not response.ok: @@ -27,7 +27,7 @@ def is_valid_async_response(response: requests.Response) -> bool: Returns True if the response is valid. - :param response: a requests response object. + :params response: a requests response object. :return: bool """ if not is_valid_sync_response(response): @@ -55,7 +55,7 @@ def clean_request_json(response: requests.Response) -> StringDict: """ Checks and correct the response error format depending on the two possible kind of returns. - :param response: Raw request response. + :params response: Raw request response. :return: Returns the job error if the error is due to parsing, returns the http error otherwise. """ response_json = response.json() diff --git a/mindee/mindee_http/response_validation_v2.py b/mindee/mindee_http/response_validation_v2.py index fdf75d63..b89ce566 100644 --- a/mindee/mindee_http/response_validation_v2.py +++ b/mindee/mindee_http/response_validation_v2.py @@ -9,7 +9,7 @@ def is_valid_post_response(response: requests.Response) -> bool: """ Checks if the POST response is valid and of the expected format. - :param response: HTTP response object. + :params response: HTTP response object. :return: True if the response is valid. """ if not is_valid_sync_response(response): @@ -30,7 +30,7 @@ def is_valid_get_response(response: requests.Response) -> bool: """ Checks if the GET response is valid and of the expected format. - :param response: HTTP response object. + :params response: HTTP response object. :return: True if the response is valid. """ if not is_valid_sync_response(response): diff --git a/mindee/mindee_http/workflow_endpoint.py b/mindee/mindee_http/workflow_endpoint.py index 7a2f05a6..7473192d 100644 --- a/mindee/mindee_http/workflow_endpoint.py +++ b/mindee/mindee_http/workflow_endpoint.py @@ -18,7 +18,7 @@ def __init__(self, settings: WorkflowSettings) -> None: """ Workflow Endpoint. - :param settings: Settings object. + :params settings: Settings object. """ super().__init__(settings) @@ -30,9 +30,9 @@ def workflow_execution_post( """ Sends the document to the workflow. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param options: Options for the workflow. + :params options: Options for the workflow. :return: """ data = {} diff --git a/mindee/pdf/pdf_compressor.py b/mindee/pdf/pdf_compressor.py index c5686838..7a3d5c23 100644 --- a/mindee/pdf/pdf_compressor.py +++ b/mindee/pdf/pdf_compressor.py @@ -29,10 +29,10 @@ def compress_pdf( """ Compresses each page of a provided PDF buffer. - :param pdf_data: The input PDF as bytes. - :param image_quality: Compression quality (70-100 for most JPG images). - :param force_source_text_compression: If true, attempts to re-write detected text. - :param disable_source_text: If true, doesn't re-apply source text to the output PDF. + :params pdf_data: The input PDF as bytes. + :params image_quality: Compression quality (70-100 for most JPG images). + :params force_source_text_compression: If true, attempts to re-write detected text. + :params disable_source_text: If true, doesn't re-apply source text to the output PDF. :return: Compressed PDF as bytes. """ if not isinstance(pdf_data, bytes): @@ -90,8 +90,8 @@ def _compress_pdf_pages( """ Compresses PDF pages and returns an array of compressed page buffers. - :param pdf_data: The input PDF as bytes. - :param image_quality: Initial compression quality. + :params pdf_data: The input PDF as bytes. + :params image_quality: Initial compression quality. :return: List of compressed page buffers, or None if compression fails. """ original_size = len(pdf_data) @@ -119,9 +119,9 @@ def add_text_to_pdf_page( # type: ignore """ Adds text to a PDF page based on the extracted text data. - :param page: The PDFDocument object. - :param page_id: The ID of the page. - :param extracted_text: List of PDFCharData objects containing text and positioning information. + :params page: The PDFDocument object. + :params page_id: The ID of the page. + :params extracted_text: List of PDFCharData objects containing text and positioning information. """ if not extracted_text or not extracted_text[page_id]: return @@ -153,8 +153,8 @@ def _compress_pages_with_quality( """ Compresses pages with a specific quality. - :param pdf_data: The input PDF as bytes. - :param image_quality: Compression quality. + :params pdf_data: The input PDF as bytes. + :params image_quality: Compression quality. :return: List of compressed page buffers. """ pdf_document = pdfium.PdfDocument(pdf_data) @@ -174,9 +174,9 @@ def _is_compression_successful( """ Checks if the compression was successful based on the compressed size and original size. - :param total_compressed_size: Total size of compressed pages. - :param original_size: Original PDF size. - :param image_quality: Compression quality. + :params total_compressed_size: Total size of compressed pages. + :params original_size: Original PDF size. + :params image_quality: Compression quality. :return: True if compression was successful, false otherwise. """ overhead = lerp(0.54, 0.18, image_quality / 100) @@ -190,8 +190,8 @@ def _rasterize_page( # type: ignore """ Rasterizes a PDF page. - :param page: PdfPage object to rasterize. - :param quality: Quality to apply during rasterization. + :params page: PdfPage object to rasterize. + :params quality: Quality to apply during rasterization. :return: Rasterized page as bytes. """ image = page.render().to_pil() @@ -204,7 +204,7 @@ def _collect_images_as_pdf(image_list: List[bytes]) -> pdfium.PdfDocument: # ty """ Converts a list of JPEG images into pages in a PdfDocument. - :param image_list: A list of bytes representing JPEG images. + :params image_list: A list of bytes representing JPEG images. :return: A PdfDocument handle containing the images as pages. """ out_pdf = pdfium.PdfDocument.new() diff --git a/mindee/pdf/pdf_utils.py b/mindee/pdf/pdf_utils.py index 70b7d984..83541280 100644 --- a/mindee/pdf/pdf_utils.py +++ b/mindee/pdf/pdf_utils.py @@ -15,7 +15,7 @@ def has_source_text(pdf_bytes: bytes) -> bool: """ Checks if the provided PDF bytes contain source text. - :param pdf_bytes: Raw bytes representation of a PDF file + :params pdf_bytes: Raw bytes representation of a PDF file :return: """ pdf = pdfium.PdfDocument(pdf_bytes) @@ -29,7 +29,7 @@ def extract_text_from_pdf(pdf_bytes: bytes) -> List[List[PDFCharData]]: """ Extracts the raw text from a given PDF's bytes along with font data. - :param pdf_bytes: Raw bytes representation of a PDF file. + :params pdf_bytes: Raw bytes representation of a PDF file. :return: A list of info regarding each read character. """ pdfium_lock = RLock() @@ -46,9 +46,9 @@ def _process_page(page, page_id: int, pdfium_lock: RLock) -> List[PDFCharData]: """ Processes a single page of the PDF. - :param page: The PDF page to process. - :param page_id: ID of the page. - :param pdfium_lock: Lock for thread-safe operations. + :params page: The PDF page to process. + :params page_id: ID of the page. + :params pdfium_lock: Lock for thread-safe operations. """ char_data_list: List[PDFCharData] = [] internal_height = page.get_height() @@ -82,13 +82,13 @@ def _process_char( """ Processes a single character from the PDF. - :param i: The index of the character. - :param text_handler: The text handler for the current page. - :param page: The current page being processed. - :param pdfium_lock: Lock for thread-safe operations. - :param internal_height: The height of the page. - :param internal_width: The width of the page. - :param page_id: ID of the page the character was found on. + :params i: The index of the character. + :params text_handler: The text handler for the current page. + :params page: The current page being processed. + :params pdfium_lock: Lock for thread-safe operations. + :params internal_height: The height of the page. + :params internal_width: The width of the page. + :params page_id: ID of the page the character was found on. :return: List of character data for a page. """ char_info = _get_char_info(i, text_handler, pdfium_lock) @@ -132,9 +132,9 @@ def _get_char_info(i: int, text_handler, pdfium_lock: RLock) -> dict: """ Retrieves information about a specific character. - :param i: The index of the character. - :param text_handler: The text handler for the current page. - :param pdfium_lock: Lock for thread-safe operations. + :params i: The index of the character. + :params text_handler: The text handler for the current page. + :params pdfium_lock: Lock for thread-safe operations. :return: A dictionary containing character information. """ stroke = (ctypes.c_uint(), ctypes.c_uint(), ctypes.c_uint(), ctypes.c_uint()) @@ -171,8 +171,8 @@ def _get_font_name(text_handler, i: int) -> str: """ Retrieves the font name for a specific character. - :param text_handler: The text handler for the current page. - :param i: The index of the character. + :params text_handler: The text handler for the current page. + :params i: The index of the character. :return: The font name as a string. """ buffer_length = 128 @@ -190,8 +190,8 @@ def _get_font_flags(text_handler, i: int) -> int: """ Retrieves the font flags for a specific character. - :param text_handler: The text handler for the current page. - :param i: The index of the character. + :params text_handler: The text handler for the current page. + :params i: The index of the character. :return: The font flags as an integer. """ flags = c_int(0) @@ -205,9 +205,9 @@ def _get_char_box( """ Retrieves the bounding box for a specific character. - :param i: The index of the character. - :param text_handler: The text handler for the current page. - :param pdfium_lock: Lock for thread-safe operations. + :params i: The index of the character. + :params text_handler: The text handler for the current page. + :params pdfium_lock: Lock for thread-safe operations. :return: A tuple containing left, right, bottom, and top coordinates. """ left, right, bottom, top = (c_double(0), c_double(0), c_double(0), c_double(0)) @@ -222,8 +222,8 @@ def _get_page_rotation(page, pdfium_lock: RLock) -> int: """ Retrieves the rotation value for a specific page. - :param page: The page to get the rotation for. - :param pdfium_lock: Lock for thread-safe operations. + :params page: The page to get the rotation for. + :params pdfium_lock: Lock for thread-safe operations. :return: The rotation value in degrees. """ with pdfium_lock: @@ -241,10 +241,10 @@ def _adjust_char_box( """ Adjusts the character bounding box based on page rotation. - :param char_box: The original character bounding box. - :param rotation: The page rotation in degrees. - :param internal_height: The height of the page. - :param internal_width: The width of the page. + :params char_box: The original character bounding box. + :params rotation: The page rotation in degrees. + :params internal_height: The height of the page. + :params internal_width: The width of the page. :return: The adjusted character bounding box. """ left, right, bottom, top = char_box @@ -269,9 +269,9 @@ def lerp(start: float, end: float, t: float) -> float: """ Performs linear interpolation between two numbers. - :param start: The starting value. - :param end: The ending value. - :param t: The interpolation factor (0 to 1). + :params start: The starting value. + :params end: The ending value. + :params t: The interpolation factor (0 to 1). :return: The interpolated value. """ return start * (1 - t) + end * t diff --git a/mindee/v1/client.py b/mindee/v1/client.py index 47d41e81..403c4350 100644 --- a/mindee/v1/client.py +++ b/mindee/v1/client.py @@ -40,7 +40,7 @@ def _clean_account_name(account_name: str) -> str: """ Checks that an account name is provided for custom products, and sets the default one otherwise. - :param account_name: name of the account's holder. Only needed for custom products. + :params account_name: name of the account's holder. Only needed for custom products. """ if not account_name or len(account_name) < 1: logger.warning( @@ -64,7 +64,7 @@ def __init__(self, api_key: str = "") -> None: """ Mindee API Client. - :param api_key: Your API key for all endpoints + :params api_key: Your API key for all endpoints """ self.api_key = api_key @@ -82,28 +82,28 @@ def parse( """ Call prediction API on the document and parse the results. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param include_words: Whether to include the full text for each page. + :params include_words: Whether to include the full text for each page. This performs a full OCR operation on the server and will increase response time. Only available on financial document APIs. - :param close_file: Whether to ``close()`` the file after parsing it. + :params close_file: Whether to ``close()`` the file after parsing it. Set to ``False`` if you need to access the file after this operation. - :param page_options: If set, remove pages from the document as specified. + :params page_options: If set, remove pages from the document as specified. This is done before sending the file to the server. It is useful to avoid page limitations. - :param cropper: Whether to include cropper results for each page. + :params cropper: Whether to include cropper results for each page. This performs a cropping operation on the server and will increase response time. - :param endpoint: For custom endpoints, an endpoint has to be given. - :param full_text: Whether to include the full OCR text response in compatible APIs. + :params endpoint: For custom endpoints, an endpoint has to be given. + :params full_text: Whether to include the full OCR text response in compatible APIs. """ if input_source is None: raise MindeeClientError("No input document provided.") @@ -145,32 +145,32 @@ def enqueue( """ Enqueues a document to an asynchronous endpoint. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param include_words: Whether to include the full text for each page. + :params include_words: Whether to include the full text for each page. This performs a full OCR operation on the server and will increase response time. - :param close_file: Whether to ``close()`` the file after parsing it. + :params close_file: Whether to ``close()`` the file after parsing it. Set to ``False`` if you need to access the file after this operation. - :param page_options: If set, remove pages from the document as specified. + :params page_options: If set, remove pages from the document as specified. This is done before sending the file to the server. It is useful to avoid page limitations. - :param cropper: Whether to include cropper results for each page. + :params cropper: Whether to include cropper results for each page. This performs a cropping operation on the server and will increase response time. - :param endpoint: For custom endpoints, an endpoint has to be given. + :params endpoint: For custom endpoints, an endpoint has to be given. - :param full_text: Whether to include the full OCR text response in compatible APIs. + :params full_text: Whether to include the full OCR text response in compatible APIs. - :param workflow_id: Workflow ID. + :params workflow_id: Workflow ID. - :param rag: If set, will enable Retrieval-Augmented Generation. + :params rag: If set, will enable Retrieval-Augmented Generation. Only works if a valid ``workflow_id`` is set. """ if input_source is None: @@ -205,8 +205,8 @@ def load_prediction( """ Load a prediction. - :param product_class: Class of the product to use. - :param local_response: Local response to load. + :params product_class: Class of the product to use. + :params local_response: Local response to load. :return: A valid prediction. """ try: @@ -225,10 +225,10 @@ def parse_queued( """ Parses a queued document. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param queue_id: queue_id received from the API. - :param endpoint: For custom endpoints, an endpoint has to be given. + :params queue_id: queue_id received from the API. + :params endpoint: For custom endpoints, an endpoint has to be given. """ if not endpoint: endpoint = self._initialize_ots_endpoint(product_class) @@ -247,13 +247,13 @@ def execute_workflow( """ Send the document to a workflow execution. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param workflow_id: ID of the workflow. - :param page_options: If set, remove pages from the document as specified. + :params workflow_id: ID of the workflow. + :params page_options: If set, remove pages from the document as specified. This is done before sending the file to the server. It is useful to avoid page limitations. - :param options: Options for the workflow. + :params options: Options for the workflow. :return: """ if isinstance(input_source, LocalInputSource): @@ -290,40 +290,40 @@ def enqueue_and_parse( # pylint: disable=too-many-locals """ Enqueues to an asynchronous endpoint and automatically polls for a response. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param include_words: Whether to include the full text for each page. + :params include_words: Whether to include the full text for each page. This performs a full OCR operation on the server and will increase response time. - :param close_file: Whether to ``close()`` the file after parsing it. + :params close_file: Whether to ``close()`` the file after parsing it. Set to ``False`` if you need to access the file after this operation. - :param page_options: If set, remove pages from the document as specified. + :params page_options: If set, remove pages from the document as specified. This is done before sending the file to the server. It is useful to avoid page limitations. - :param cropper: Whether to include cropper results for each page. + :params cropper: Whether to include cropper results for each page. This performs a cropping operation on the server and will increase response time. - :param endpoint: For custom endpoints, an endpoint has to be given. + :params endpoint: For custom endpoints, an endpoint has to be given. - :param initial_delay_sec: Delay between each polling attempts. + :params initial_delay_sec: Delay between each polling attempts. This should not be shorter than 1 second. - :param delay_sec: Delay between each polling attempts. + :params delay_sec: Delay between each polling attempts. This should not be shorter than 1 second. - :param max_retries: Total amount of polling attempts. + :params max_retries: Total amount of polling attempts. - :param full_text: Whether to include the full OCR text response in compatible APIs. + :params full_text: Whether to include the full OCR text response in compatible APIs. - :param workflow_id: Workflow ID. + :params workflow_id: Workflow ID. - :param rag: If set, will enable Retrieval-Augmented Generation. + :params rag: If set, will enable Retrieval-Augmented Generation. Only works if a valid ``workflow_id`` is set. """ self._validate_async_params(initial_delay_sec, delay_sec, max_retries) @@ -378,12 +378,12 @@ def send_feedback( """ Send a feedback for a document. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param document_id: The id of the document to send feedback to. - :param feedback: Feedback to send. - :param endpoint: For custom endpoints, an endpoint has to be given. + :params document_id: The id of the document to send feedback to. + :params feedback: Feedback to send. + :params endpoint: For custom endpoints, an endpoint has to be given. """ if not document_id or len(document_id) == 0: raise MindeeClientError("Invalid document_id.") @@ -467,7 +467,7 @@ def _get_queued_document( """ Fetches a document or a Job from a given queue. - :param queue_id: Queue_id received from the API + :params queue_id: Queue_id received from the API """ queue_response = endpoint.document_queue_req_get(queue_id=queue_id) @@ -490,13 +490,13 @@ def _send_to_workflow( """ Sends a document to a workflow. - :param product_class: The document class to use. + :params product_class: The document class to use. The response object will be instantiated based on this parameter. - :param input_source: The document/source file to use. + :params input_source: The document/source file to use. Has to be created beforehand. - :param workflow_id: ID of the workflow. - :param options: Optional options for the workflow. + :params workflow_id: ID of the workflow. + :params options: Optional options for the workflow. :return: """ if input_source is None: @@ -548,9 +548,9 @@ def create_endpoint( """ Add a custom endpoint, created using the Mindee API Builder. - :param endpoint_name: The "API name" field in the "Settings" page of the API Builder - :param account_name: Your organization's username on the API Builder - :param version: If set, locks the version of the model to use. + :params endpoint_name: The "API name" field in the "Settings" page of the API Builder + :params account_name: Your organization's username on the API Builder + :params version: If set, locks the version of the model to use. If not set, use the latest version of the model. """ if len(endpoint_name) == 0: diff --git a/mindee/v1/parsing/common/async_predict_response.py b/mindee/v1/parsing/common/async_predict_response.py index e4b5f9a6..268ad939 100644 --- a/mindee/v1/parsing/common/async_predict_response.py +++ b/mindee/v1/parsing/common/async_predict_response.py @@ -26,8 +26,8 @@ def __init__( Inherits and instantiates a normal PredictResponse if the product of the current queue is both requested and done. - :param inference_type: Type of the inference. - :param raw_response: json response from HTTP call. + :params inference_type: Type of the inference. + :params raw_response: json response from HTTP call. """ super().__init__(raw_response) self.job = Job(raw_response["job"]) diff --git a/mindee/v1/parsing/common/extras/extras.py b/mindee/v1/parsing/common/extras/extras.py index cc114e47..8dcb589a 100644 --- a/mindee/v1/parsing/common/extras/extras.py +++ b/mindee/v1/parsing/common/extras/extras.py @@ -39,7 +39,7 @@ def add_artificial_extra(self, raw_prediction: StringDict): """ Adds artificial extra data for reconstructed extras. Currently only used for full_text_ocr. - :param raw_prediction: Raw prediction used by the document. + :params raw_prediction: Raw prediction used by the document. """ if "full_text_ocr" in raw_prediction and raw_prediction["full_text_ocr"]: self.full_text_ocr = FullTextOcrExtra(raw_prediction["full_text_ocr"]) diff --git a/mindee/v1/parsing/common/inference.py b/mindee/v1/parsing/common/inference.py index a7192118..0bc32d67 100644 --- a/mindee/v1/parsing/common/inference.py +++ b/mindee/v1/parsing/common/inference.py @@ -67,7 +67,7 @@ def get_endpoint_info(klass: Type["Inference"]) -> Dict[str, str]: Should never retrieve info for CustomV1, as a custom endpoint should be created to use CustomV1. - :param klass: product subclass to access endpoint information. + :params 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/v1/parsing/common/job.py b/mindee/v1/parsing/common/job.py index 486015ee..67287c42 100644 --- a/mindee/v1/parsing/common/job.py +++ b/mindee/v1/parsing/common/job.py @@ -29,7 +29,7 @@ def __init__(self, json_response: dict) -> None: """ Wrapper for the HTTP response sent from the API when a document is enqueued. - :param json_response: JSON response sent by the server + :params json_response: JSON response sent by the server """ self.issued_at = datetime.fromisoformat(json_response["issued_at"]) if json_response.get("available_at"): diff --git a/mindee/v1/parsing/common/orientation.py b/mindee/v1/parsing/common/orientation.py index 54f85cc9..8fa0c0c3 100644 --- a/mindee/v1/parsing/common/orientation.py +++ b/mindee/v1/parsing/common/orientation.py @@ -20,10 +20,10 @@ def __init__( """ Page orientation. - :param raw_prediction: Orientation prediction object from HTTP response - :param value_key: Key to use in the orientation_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Orientation prediction object from HTTP response + :params value_key: Key to use in the orientation_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/common/predict_response.py b/mindee/v1/parsing/common/predict_response.py index 83379e6b..f976bed1 100644 --- a/mindee/v1/parsing/common/predict_response.py +++ b/mindee/v1/parsing/common/predict_response.py @@ -21,8 +21,8 @@ def __init__( """ Container for the raw API response and the parsed document. - :param inference_type: Type of the inference. - :param raw_response: json response from HTTP call. + :params inference_type: Type of the inference. + :params raw_response: json response from HTTP call. """ super().__init__(raw_response) self.document = Document(inference_type, raw_response["document"]) diff --git a/mindee/v1/parsing/common/prediction.py b/mindee/v1/parsing/common/prediction.py index ca0784e8..8bab63cc 100644 --- a/mindee/v1/parsing/common/prediction.py +++ b/mindee/v1/parsing/common/prediction.py @@ -10,8 +10,8 @@ def __init__(self, raw_prediction: StringDict, page_id: Optional[int] = None): """ Base prediction. - :param raw_prediction: a json-equivalent dictionary containing prediction results. - :param page_id: an optional page number for page-level predictions. + :params raw_prediction: a json-equivalent dictionary containing prediction results. + :params page_id: an optional page number for page-level predictions. """ diff --git a/mindee/v1/parsing/custom/line_items.py b/mindee/v1/parsing/custom/line_items.py index c28643a5..fbc55d46 100644 --- a/mindee/v1/parsing/custom/line_items.py +++ b/mindee/v1/parsing/custom/line_items.py @@ -42,8 +42,8 @@ def update_field(self, field_name: str, field_value: ListFieldValue) -> None: """ Updates a field value if it exists. - :param field_name: name of the field to update. - :param field_value: value of the field to set. + :params field_name: name of the field to update. + :params field_value: value of the field to set. """ if field_name in self.fields: existing_field = self.fields[field_name] @@ -74,9 +74,9 @@ def is_box_in_line(line: CustomLine, bbox: BBox, height_line_tolerance: float) - """ Checks if the bbox fits inside the given line. - :param line: Line to check. - :param bbox: Bbox to check. - :param height_line_tolerance: line height tolerance for custom line reconstruction. + :params line: Line to check. + :params bbox: Bbox to check. + :params height_line_tolerance: line height tolerance for custom line reconstruction. """ if abs(bbox.y_min - line.bbox.y_min) <= height_line_tolerance: return True @@ -89,9 +89,9 @@ def prepare( """ Prepares lines before filling them. - :param anchor_name: name of the anchor. - :param fields: fields to build lines from. - :param height_line_tolerance: line height tolerance for custom line reconstruction. + :params anchor_name: name of the anchor. + :params fields: fields to build lines from. + :params height_line_tolerance: line height tolerance for custom line reconstruction. """ lines_prepared: List[CustomLine] = [] try: diff --git a/mindee/v1/parsing/custom/list.py b/mindee/v1/parsing/custom/list.py index b24033a5..01b61018 100644 --- a/mindee/v1/parsing/custom/list.py +++ b/mindee/v1/parsing/custom/list.py @@ -60,7 +60,7 @@ def contents_string(self, separator: str = " ") -> str: """ Return a string representation of all values. - :param separator: Character(s) to use when concatenating fields. + :params separator: Character(s) to use when concatenating fields. """ return separator.join(self.contents_list) diff --git a/mindee/v1/parsing/generated/generated_list.py b/mindee/v1/parsing/generated/generated_list.py index 12071fac..ab19dd3b 100644 --- a/mindee/v1/parsing/generated/generated_list.py +++ b/mindee/v1/parsing/generated/generated_list.py @@ -48,7 +48,7 @@ def contents_string(self, separator: str = " ") -> str: """ Return a string representation of all values. - :param separator: Character(s) to use when concatenating fields. + :params separator: Character(s) to use when concatenating fields. """ return separator.join(self.contents_list) diff --git a/mindee/v1/parsing/generated/generated_object.py b/mindee/v1/parsing/generated/generated_object.py index 78eab0a2..57106756 100644 --- a/mindee/v1/parsing/generated/generated_object.py +++ b/mindee/v1/parsing/generated/generated_object.py @@ -50,7 +50,7 @@ def _str_level(self, level=0) -> str: Takes into account level of indentation & displays elements as list elements. - :param level: level of indent (times 2 spaces). + :params level: level of indent (times 2 spaces). """ indent = " " + " " * level out_str = "" @@ -68,7 +68,7 @@ def is_generated_object(str_dict: StringDict) -> bool: """ Checks whether an field is a custom object or not. - :param str_dict: input dictionary to check. + :params str_dict: input dictionary to check. """ common_keys = [ "value", diff --git a/mindee/v1/parsing/standard/address.py b/mindee/v1/parsing/standard/address.py index b269f72e..0f3a2dbf 100644 --- a/mindee/v1/parsing/standard/address.py +++ b/mindee/v1/parsing/standard/address.py @@ -33,9 +33,9 @@ def __init__( """ Text field object. - :param raw_prediction: Amount prediction object from HTTP response. - :param reconstructed: Bool for reconstructed object (not extracted in the API). - :param page_id: Page number for multi-page document. + :params raw_prediction: Amount prediction object from HTTP response. + :params reconstructed: Bool for reconstructed object (not extracted in the API). + :params page_id: Page number for multi-page document. """ self.value = None super().__init__( diff --git a/mindee/v1/parsing/standard/amount.py b/mindee/v1/parsing/standard/amount.py index 3060deca..b24094da 100644 --- a/mindee/v1/parsing/standard/amount.py +++ b/mindee/v1/parsing/standard/amount.py @@ -23,9 +23,9 @@ def __init__( """ Amount field object. - :param raw_prediction: Amount prediction object from HTTP response - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Amount prediction object from HTTP response + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ self.value = None super().__init__( diff --git a/mindee/v1/parsing/standard/base.py b/mindee/v1/parsing/standard/base.py index 18b46794..6b009877 100644 --- a/mindee/v1/parsing/standard/base.py +++ b/mindee/v1/parsing/standard/base.py @@ -60,10 +60,10 @@ def __init__( """ Base field object. - :param raw_prediction: Prediction object from HTTP response - :param value_key: Key to use in the abstract_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page PDF + :params raw_prediction: Prediction object from HTTP response + :params value_key: Key to use in the abstract_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page PDF """ if page_id is None: try: @@ -104,9 +104,9 @@ def compare_field_arrays( """ Check that all elements are present in both arrays. - :param array1: Array of Fields - :param array2: Array of Fields - :param attr: Attribute to compare + :params array1: Array of Fields + :params array2: Array of Fields + :params attr: Attribute to compare :return: True if all elements in array1 exist in array2, False otherwise """ set1 = {getattr(f1, attr) for f1 in array1} @@ -118,7 +118,7 @@ def field_array_confidence(array: List[Type[BaseField]]) -> float: """ Multiply all Field's confidence in the array. - :param array: Array of fields + :params array: Array of fields :return: Product as float """ product: float = 1 @@ -134,7 +134,7 @@ def field_array_sum(array: List[Type[BaseField]]) -> float: """ Add all the Field values in the array. - :param array: Array of fields + :params array: Array of fields :return: Sum as `float`. """ arr_sum = 0 diff --git a/mindee/v1/parsing/standard/boolean.py b/mindee/v1/parsing/standard/boolean.py index 65e3a275..54bbb4d5 100644 --- a/mindee/v1/parsing/standard/boolean.py +++ b/mindee/v1/parsing/standard/boolean.py @@ -20,10 +20,10 @@ def __init__( """ Boolean field object. - :param raw_prediction: Amount prediction object from HTTP response - :param value_key: Key to use in the amount_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Amount prediction object from HTTP response + :params value_key: Key to use in the amount_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ self.value = None super().__init__( diff --git a/mindee/v1/parsing/standard/classification.py b/mindee/v1/parsing/standard/classification.py index 1b5f6b12..5ca2011f 100644 --- a/mindee/v1/parsing/standard/classification.py +++ b/mindee/v1/parsing/standard/classification.py @@ -20,10 +20,10 @@ def __init__( """ Text field object. - :param raw_prediction: Amount prediction object from HTTP response - :param value_key: Key to use in the amount_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Amount prediction object from HTTP response + :params value_key: Key to use in the amount_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/standard/date.py b/mindee/v1/parsing/standard/date.py index 42ddce34..91c5a4df 100644 --- a/mindee/v1/parsing/standard/date.py +++ b/mindee/v1/parsing/standard/date.py @@ -29,9 +29,9 @@ def __init__( """ Date field object. - :param raw_prediction: Date prediction object from HTTP response - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Date prediction object from HTTP response + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/standard/locale.py b/mindee/v1/parsing/standard/locale.py index c92769a3..75e2965c 100644 --- a/mindee/v1/parsing/standard/locale.py +++ b/mindee/v1/parsing/standard/locale.py @@ -23,9 +23,9 @@ def __init__( """ Locale field object. - :param raw_prediction: Locale prediction object from HTTP response - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Locale prediction object from HTTP response + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ value_key = ( "value" diff --git a/mindee/v1/parsing/standard/payment_details.py b/mindee/v1/parsing/standard/payment_details.py index fcd48c78..11f39dac 100644 --- a/mindee/v1/parsing/standard/payment_details.py +++ b/mindee/v1/parsing/standard/payment_details.py @@ -30,16 +30,16 @@ def __init__( """ Payment details field object. - :param raw_prediction: Payment detail prediction object from HTTP response - :param value_key: Corresponds to iban - :param account_number_key: Key to use for getting the account number in the + :params raw_prediction: Payment detail prediction object from HTTP response + :params value_key: Corresponds to iban + :params account_number_key: Key to use for getting the account number in the payment_details_prediction dict - :param iban_key: Key to use for getting the IBAN in the payment_details_prediction dict - :param routing_number_key: Key to use for getting the Routing number in the + :params iban_key: Key to use for getting the IBAN in the payment_details_prediction dict + :params routing_number_key: Key to use for getting the Routing number in the payment_details_prediction dict - :param swift_key: Key to use for getting the SWIFT in the payment_details_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params swift_key: Key to use for getting the SWIFT in the payment_details_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/standard/position.py b/mindee/v1/parsing/standard/position.py index 16bb35f3..1479e41b 100644 --- a/mindee/v1/parsing/standard/position.py +++ b/mindee/v1/parsing/standard/position.py @@ -31,10 +31,10 @@ def __init__( """ Position field object. - :param raw_prediction: Position prediction object from HTTP response - :param value_key: Key to use in the position_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Position prediction object from HTTP response + :params value_key: Key to use in the position_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/standard/tax.py b/mindee/v1/parsing/standard/tax.py index de917335..afebf06c 100644 --- a/mindee/v1/parsing/standard/tax.py +++ b/mindee/v1/parsing/standard/tax.py @@ -30,10 +30,10 @@ def __init__( """ Tax field object. - :param raw_prediction: Tax prediction object from HTTP response - :param value_key: Key to use in the tax_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi pages document + :params raw_prediction: Tax prediction object from HTTP response + :params value_key: Key to use in the tax_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi pages document """ super().__init__( raw_prediction, diff --git a/mindee/v1/parsing/standard/text.py b/mindee/v1/parsing/standard/text.py index b4bb36d9..c30ec204 100644 --- a/mindee/v1/parsing/standard/text.py +++ b/mindee/v1/parsing/standard/text.py @@ -22,10 +22,10 @@ def __init__( """ Text field object. - :param raw_prediction: Amount prediction object from HTTP response - :param value_key: Key to use in the amount_prediction dict - :param reconstructed: Bool for reconstructed object (not extracted in the API) - :param page_id: Page number for multi-page document + :params raw_prediction: Amount prediction object from HTTP response + :params value_key: Key to use in the amount_prediction dict + :params reconstructed: Bool for reconstructed object (not extracted in the API) + :params page_id: Page number for multi-page document """ self.value = None super().__init__( diff --git a/mindee/v1/product/barcode_reader/barcode_reader_v1.py b/mindee/v1/product/barcode_reader/barcode_reader_v1.py index 91d3185e..8116d09a 100644 --- a/mindee/v1/product/barcode_reader/barcode_reader_v1.py +++ b/mindee/v1/product/barcode_reader/barcode_reader_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Barcode Reader v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py b/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py index daa2756e..82971b86 100644 --- a/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py +++ b/mindee/v1/product/barcode_reader/barcode_reader_v1_document.py @@ -22,8 +22,8 @@ def __init__( """ Barcode Reader document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.codes_1d = [ diff --git a/mindee/v1/product/cropper/cropper_v1.py b/mindee/v1/product/cropper/cropper_v1.py index 5d9c5691..183395f6 100644 --- a/mindee/v1/product/cropper/cropper_v1.py +++ b/mindee/v1/product/cropper/cropper_v1.py @@ -27,7 +27,7 @@ def __init__(self, raw_prediction: StringDict): """ Cropper v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/cropper/cropper_v1_page.py b/mindee/v1/product/cropper/cropper_v1_page.py index 0cfba4c3..c68b342f 100644 --- a/mindee/v1/product/cropper/cropper_v1_page.py +++ b/mindee/v1/product/cropper/cropper_v1_page.py @@ -22,8 +22,8 @@ def __init__( """ Cropper page. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction=raw_prediction, page_id=page_id) self.cropping = [ diff --git a/mindee/v1/product/custom/custom_v1.py b/mindee/v1/product/custom/custom_v1.py index ac530967..ad9cdce1 100644 --- a/mindee/v1/product/custom/custom_v1.py +++ b/mindee/v1/product/custom/custom_v1.py @@ -23,7 +23,7 @@ def __init__(self, raw_prediction: StringDict) -> None: """ Invoice Splitter v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) self.prediction = CustomV1Document(raw_prediction["prediction"]) diff --git a/mindee/v1/product/custom/custom_v1_document.py b/mindee/v1/product/custom/custom_v1_document.py index 62b93575..9c71db5d 100644 --- a/mindee/v1/product/custom/custom_v1_document.py +++ b/mindee/v1/product/custom/custom_v1_document.py @@ -20,7 +20,7 @@ def __init__(self, raw_prediction: StringDict) -> None: """ Custom document. - :param raw_prediction: Dictionary containing the JSON document response + :params raw_prediction: Dictionary containing the JSON document response """ super().__init__(raw_prediction) self.fields = {} @@ -41,9 +41,9 @@ def columns_to_line_items( """ Order column fields into line items. - :param anchor_names: list of possible anchor fields. - :param field_names: list of all column fields. - :param height_tolerance: height tolerance to apply to lines. + :params anchor_names: list of possible anchor fields. + :params field_names: list of all column fields. + :params height_tolerance: height tolerance to apply to lines. """ return get_line_items( anchor_names, diff --git a/mindee/v1/product/custom/custom_v1_page.py b/mindee/v1/product/custom/custom_v1_page.py index 4fb8bb03..c58cf43f 100644 --- a/mindee/v1/product/custom/custom_v1_page.py +++ b/mindee/v1/product/custom/custom_v1_page.py @@ -17,7 +17,7 @@ def __init__(self, raw_prediction: StringDict, page_id: Optional[int]) -> None: """ Custom document object. - :param raw_prediction: Dictionary containing the JSON document response + :params raw_prediction: Dictionary containing the JSON document response """ super().__init__(raw_prediction, page_id) self.fields = {} @@ -33,9 +33,9 @@ def columns_to_line_items( """ Order column fields into line items. - :param anchor_names: list of possible anchor fields. - :param field_names: list of all column fields. - :param height_tolerance: height tolerance to apply to lines. + :params anchor_names: list of possible anchor fields. + :params field_names: list of all column fields. + :params height_tolerance: height tolerance to apply to lines. """ return get_line_items( anchor_names, diff --git a/mindee/v1/product/financial_document/financial_document_v1.py b/mindee/v1/product/financial_document/financial_document_v1.py index dca3d2d6..022d50e4 100644 --- a/mindee/v1/product/financial_document/financial_document_v1.py +++ b/mindee/v1/product/financial_document/financial_document_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Financial Document v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/financial_document/financial_document_v1_document.py b/mindee/v1/product/financial_document/financial_document_v1_document.py index c041fc38..b9051b20 100644 --- a/mindee/v1/product/financial_document/financial_document_v1_document.py +++ b/mindee/v1/product/financial_document/financial_document_v1_document.py @@ -98,8 +98,8 @@ def __init__( """ Financial Document document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.billing_address = AddressField( diff --git a/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py index 639b9b26..0e7a2def 100644 --- a/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Bank Account Details v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py index 9d4c6d2e..93db710c 100644 --- a/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v1_document.py @@ -24,8 +24,8 @@ def __init__( """ Bank Account Details document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.account_holder_name = StringField( diff --git a/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py index eaae960c..59e80306 100644 --- a/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Bank Account Details v2 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py index 24004f09..9d0284ad 100644 --- a/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py +++ b/mindee/v1/product/fr/bank_account_details/bank_account_details_v2_document.py @@ -29,8 +29,8 @@ def __init__( """ Bank Account Details document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.account_holders_names = StringField( diff --git a/mindee/v1/product/fr/carte_grise/carte_grise_v1.py b/mindee/v1/product/fr/carte_grise/carte_grise_v1.py index 7de08ee2..85f71da5 100644 --- a/mindee/v1/product/fr/carte_grise/carte_grise_v1.py +++ b/mindee/v1/product/fr/carte_grise/carte_grise_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Carte Grise v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py b/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py index cd37a33e..1e459c50 100644 --- a/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py +++ b/mindee/v1/product/fr/carte_grise/carte_grise_v1_document.py @@ -101,8 +101,8 @@ def __init__( """ Carte Grise document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.a = StringField( diff --git a/mindee/v1/product/fr/id_card/id_card_v1.py b/mindee/v1/product/fr/id_card/id_card_v1.py index 5aa91667..05f31873 100644 --- a/mindee/v1/product/fr/id_card/id_card_v1.py +++ b/mindee/v1/product/fr/id_card/id_card_v1.py @@ -27,7 +27,7 @@ def __init__(self, raw_prediction: StringDict): """ Carte Nationale d'Identité v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/fr/id_card/id_card_v1_document.py b/mindee/v1/product/fr/id_card/id_card_v1_document.py index 948bee2e..cf589d6d 100644 --- a/mindee/v1/product/fr/id_card/id_card_v1_document.py +++ b/mindee/v1/product/fr/id_card/id_card_v1_document.py @@ -39,8 +39,8 @@ def __init__( """ Carte Nationale d'Identité document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.authority = StringField( diff --git a/mindee/v1/product/fr/id_card/id_card_v1_page.py b/mindee/v1/product/fr/id_card/id_card_v1_page.py index 5b0a5330..9431c99e 100644 --- a/mindee/v1/product/fr/id_card/id_card_v1_page.py +++ b/mindee/v1/product/fr/id_card/id_card_v1_page.py @@ -22,8 +22,8 @@ def __init__( """ Carte Nationale d'Identité page. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction=raw_prediction, page_id=page_id) self.document_side = ClassificationField( diff --git a/mindee/v1/product/fr/id_card/id_card_v2.py b/mindee/v1/product/fr/id_card/id_card_v2.py index 2b8a3df0..31179e80 100644 --- a/mindee/v1/product/fr/id_card/id_card_v2.py +++ b/mindee/v1/product/fr/id_card/id_card_v2.py @@ -27,7 +27,7 @@ def __init__(self, raw_prediction: StringDict): """ Carte Nationale d'Identité v2 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/fr/id_card/id_card_v2_document.py b/mindee/v1/product/fr/id_card/id_card_v2_document.py index 96432f1a..197cdc82 100644 --- a/mindee/v1/product/fr/id_card/id_card_v2_document.py +++ b/mindee/v1/product/fr/id_card/id_card_v2_document.py @@ -49,8 +49,8 @@ def __init__( """ Carte Nationale d'Identité document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.alternate_name = StringField( diff --git a/mindee/v1/product/fr/id_card/id_card_v2_page.py b/mindee/v1/product/fr/id_card/id_card_v2_page.py index 76a5bc0d..738b3c1c 100644 --- a/mindee/v1/product/fr/id_card/id_card_v2_page.py +++ b/mindee/v1/product/fr/id_card/id_card_v2_page.py @@ -24,8 +24,8 @@ def __init__( """ Carte Nationale d'Identité page. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction=raw_prediction, page_id=page_id) self.document_side = ClassificationField( diff --git a/mindee/v1/product/generated/generated_v1.py b/mindee/v1/product/generated/generated_v1.py index 8c984428..d26e9a9d 100644 --- a/mindee/v1/product/generated/generated_v1.py +++ b/mindee/v1/product/generated/generated_v1.py @@ -23,7 +23,7 @@ def __init__(self, raw_prediction: StringDict) -> None: """ Invoice Splitter v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) self.prediction = GeneratedV1Document(raw_prediction["prediction"]) diff --git a/mindee/v1/product/generated/generated_v1_document.py b/mindee/v1/product/generated/generated_v1_document.py index 3b24ec9a..53f6b1ac 100644 --- a/mindee/v1/product/generated/generated_v1_document.py +++ b/mindee/v1/product/generated/generated_v1_document.py @@ -20,7 +20,7 @@ def __init__(self, raw_prediction: StringDict) -> None: """ Generated document. - :param raw_prediction: Dictionary containing the JSON document response + :params raw_prediction: Dictionary containing the JSON document response """ super().__init__(raw_prediction) for field_name, field_contents in raw_prediction.items(): diff --git a/mindee/v1/product/generated/generated_v1_page.py b/mindee/v1/product/generated/generated_v1_page.py index f7b58d05..665a8ad8 100644 --- a/mindee/v1/product/generated/generated_v1_page.py +++ b/mindee/v1/product/generated/generated_v1_page.py @@ -22,7 +22,7 @@ def __init__( """ Generated document object. - :param raw_prediction: Dictionary containing the JSON document response + :params raw_prediction: Dictionary containing the JSON document response """ super().__init__(raw_prediction) for field_name, field_contents in raw_prediction.items(): diff --git a/mindee/v1/product/generated/generated_v1_prediction.py b/mindee/v1/product/generated/generated_v1_prediction.py index c2c934da..d7199dfa 100644 --- a/mindee/v1/product/generated/generated_v1_prediction.py +++ b/mindee/v1/product/generated/generated_v1_prediction.py @@ -19,7 +19,7 @@ def __init__(self, raw_prediction: StringDict) -> None: """ Generated document. - :param raw_prediction: Dictionary containing the JSON document response + :params raw_prediction: Dictionary containing the JSON document response """ super().__init__(raw_prediction) self.fields = {} diff --git a/mindee/v1/product/international_id/international_id_v2.py b/mindee/v1/product/international_id/international_id_v2.py index 55539722..6d60dd7f 100644 --- a/mindee/v1/product/international_id/international_id_v2.py +++ b/mindee/v1/product/international_id/international_id_v2.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ International ID v2 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/international_id/international_id_v2_document.py b/mindee/v1/product/international_id/international_id_v2_document.py index e81188cc..517c3e20 100644 --- a/mindee/v1/product/international_id/international_id_v2_document.py +++ b/mindee/v1/product/international_id/international_id_v2_document.py @@ -54,8 +54,8 @@ def __init__( """ International ID document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.address = StringField( diff --git a/mindee/v1/product/invoice/invoice_v4.py b/mindee/v1/product/invoice/invoice_v4.py index 2b609840..648329d9 100644 --- a/mindee/v1/product/invoice/invoice_v4.py +++ b/mindee/v1/product/invoice/invoice_v4.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Invoice v4 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/invoice/invoice_v4_document.py b/mindee/v1/product/invoice/invoice_v4_document.py index 4498ad96..b5d69a5d 100644 --- a/mindee/v1/product/invoice/invoice_v4_document.py +++ b/mindee/v1/product/invoice/invoice_v4_document.py @@ -85,8 +85,8 @@ def __init__( """ Invoice document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.billing_address = AddressField( diff --git a/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py b/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py index 5f69a606..c68288e1 100644 --- a/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py +++ b/mindee/v1/product/invoice_splitter/invoice_splitter_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Invoice Splitter v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py index 1615b67c..27dd4c42 100644 --- a/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py +++ b/mindee/v1/product/invoice_splitter/invoice_splitter_v1_document.py @@ -22,8 +22,8 @@ def __init__( """ Invoice Splitter document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.invoice_page_groups = [ diff --git a/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py index f728b1cb..1c67f5b4 100644 --- a/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py +++ b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Multi Receipts Detector v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py index 6e62b3ed..2573ab17 100644 --- a/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py +++ b/mindee/v1/product/multi_receipts_detector/multi_receipts_detector_v1_document.py @@ -20,8 +20,8 @@ def __init__( """ Multi Receipts Detector document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.receipts = [ diff --git a/mindee/v1/product/passport/passport_v1.py b/mindee/v1/product/passport/passport_v1.py index acd3dcb5..19d8ac6b 100644 --- a/mindee/v1/product/passport/passport_v1.py +++ b/mindee/v1/product/passport/passport_v1.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Passport v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/passport/passport_v1_document.py b/mindee/v1/product/passport/passport_v1_document.py index 73876de5..7fb0aa10 100644 --- a/mindee/v1/product/passport/passport_v1_document.py +++ b/mindee/v1/product/passport/passport_v1_document.py @@ -41,8 +41,8 @@ def __init__( """ Passport document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.birth_date = DateField( diff --git a/mindee/v1/product/receipt/receipt_v5.py b/mindee/v1/product/receipt/receipt_v5.py index 7c42fca6..060daf80 100644 --- a/mindee/v1/product/receipt/receipt_v5.py +++ b/mindee/v1/product/receipt/receipt_v5.py @@ -24,7 +24,7 @@ def __init__(self, raw_prediction: StringDict): """ Receipt v5 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/receipt/receipt_v5_document.py b/mindee/v1/product/receipt/receipt_v5_document.py index fc9a2c12..323bdf3b 100644 --- a/mindee/v1/product/receipt/receipt_v5_document.py +++ b/mindee/v1/product/receipt/receipt_v5_document.py @@ -59,8 +59,8 @@ def __init__( """ Receipt document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.category = ClassificationField( diff --git a/mindee/v1/product/us/bank_check/bank_check_v1.py b/mindee/v1/product/us/bank_check/bank_check_v1.py index aea6d486..5bcc0f84 100644 --- a/mindee/v1/product/us/bank_check/bank_check_v1.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1.py @@ -27,7 +27,7 @@ def __init__(self, raw_prediction: StringDict): """ Bank Check v1 inference. - :param raw_prediction: Raw prediction from the HTTP response. + :params raw_prediction: Raw prediction from the HTTP response. """ super().__init__(raw_prediction) diff --git a/mindee/v1/product/us/bank_check/bank_check_v1_document.py b/mindee/v1/product/us/bank_check/bank_check_v1_document.py index b23c1072..9c84c1db 100644 --- a/mindee/v1/product/us/bank_check/bank_check_v1_document.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1_document.py @@ -32,8 +32,8 @@ def __init__( """ Bank Check document. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction, page_id) self.account_number = StringField( diff --git a/mindee/v1/product/us/bank_check/bank_check_v1_page.py b/mindee/v1/product/us/bank_check/bank_check_v1_page.py index 334cc55a..8864b09c 100644 --- a/mindee/v1/product/us/bank_check/bank_check_v1_page.py +++ b/mindee/v1/product/us/bank_check/bank_check_v1_page.py @@ -24,8 +24,8 @@ def __init__( """ Bank Check page. - :param raw_prediction: Raw prediction from HTTP response - :param page_id: Page number for multi pages pdf input + :params raw_prediction: Raw prediction from HTTP response + :params page_id: Page number for multi pages pdf input """ super().__init__(raw_prediction=raw_prediction, page_id=page_id) self.check_position = PositionField( diff --git a/mindee/v2/__init__.py b/mindee/v2/__init__.py index 719789b0..d16c51b3 100644 --- a/mindee/v2/__init__.py +++ b/mindee/v2/__init__.py @@ -4,7 +4,7 @@ extract_single_crop, ) from mindee.v2.file_operations.split import extract_splits -from mindee.v2.product.classification.param.classification_parameters import ( +from mindee.v2.product.classification.params.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( @@ -12,6 +12,10 @@ ) from mindee.v2.product.crop.params.crop_parameters import CropParameters from mindee.v2.product.crop.crop_response import CropResponse +from mindee.v2.product.extraction.params.extraction_parameters import ( + ExtractionParameters, +) +from mindee.v2.product.extraction.extraction_response import ExtractionResponse from mindee.v2.product.ocr.params.ocr_parameters import OCRParameters from mindee.v2.product.ocr.ocr_response import OCRResponse from mindee.v2.product.split.params.split_parameters import SplitParameters @@ -27,6 +31,8 @@ "ClassificationParameters", "CropResponse", "CropParameters", + "ExtractionParameters", + "ExtractionResponse", "OCRResponse", "OCRParameters", "SplitResponse", diff --git a/mindee/v2/client.py b/mindee/v2/client.py index 3ea75d1b..635e1d40 100644 --- a/mindee/v2/client.py +++ b/mindee/v2/client.py @@ -7,7 +7,6 @@ from mindee.error.v2.mindee_http_error_v2 import handle_error_v2 from mindee.input import UrlInputSource from mindee.v2.input.base_parameters import BaseParameters -from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters from mindee.input.polling_options import PollingOptions from mindee.input.sources.local_input_source import LocalInputSource from mindee.logger import logger @@ -18,7 +17,7 @@ ) from mindee.parsing.common.common_response import CommonStatus from mindee.v2.parsing.inference.base_response import BaseResponse -from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse from mindee.v2.parsing.inference.job_response import JobResponse TypeBaseResponse = TypeVar("TypeBaseResponse", bound=BaseResponse) @@ -38,7 +37,7 @@ def __init__(self, api_key: Optional[str] = None) -> None: """ Mindee API Client. - :param api_key: Your API key for all endpoints + :params api_key: Your API key for all endpoints """ self.api_key = api_key self.mindee_api = MindeeApiV2(api_key) @@ -66,8 +65,8 @@ def enqueue( """ Enqueues a document to a given model. - :param input_source: The document/source file to use. Can be local or remote. - :param params: Parameters to set when sending a file. + :params input_source: The document/source file to use. Can be local or remote. + :params params: Parameters to set when sending a file. :return: A valid inference response. """ @@ -87,7 +86,7 @@ def get_job(self, job_id: str) -> JobResponse: Can be used for polling. - :param job_id: UUID of the job to retrieve. + :params job_id: UUID of the job to retrieve. :return: A job response. """ logger.debug("Fetching job: %s", job_id) @@ -103,7 +102,7 @@ def get_inference( inference_id: str, ) -> BaseResponse: """[Deprecated] Use `get_result` instead.""" - return self.get_result(InferenceResponse, inference_id) + return self.get_result(ExtractionResponse, inference_id) def get_result( self, @@ -115,8 +114,8 @@ def get_result( The inference will only be available after it has finished processing. - :param inference_id: UUID of the inference to retrieve. - :param response_type: Class of the product to instantiate. + :params inference_id: UUID of the inference to retrieve. + :params response_type: Class of the product to instantiate. :return: An inference response. """ logger.debug("Fetching result: %s", inference_id) @@ -138,9 +137,9 @@ def enqueue_and_get_result( """ Enqueues to an asynchronous endpoint and automatically polls for a response. - :param input_source: The document/source file to use. Can be local or remote. - :param params: Parameters to set when sending a file. - :param response_type: The product class to use for the response object. + :params input_source: The document/source file to use. Can be local or remote. + :params params: Parameters to set when sending a file. + :params response_type: The product class to use for the response object. :return: A valid inference response. """ @@ -175,7 +174,7 @@ def enqueue_and_get_result( job_response.job.completed_at, ) result = self.get_result( - response_type or InferenceResponse, job_response.job.id + response_type or ExtractionResponse, job_response.job.id ) assert isinstance(result, response_type), ( f'Invalid response type "{type(result)}"' @@ -185,20 +184,3 @@ def enqueue_and_get_result( sleep(params.polling_options.delay_sec) raise MindeeError(f"Couldn't retrieve document after {try_counter + 1} tries.") - - def enqueue_and_get_inference( - self, - input_source: Union[LocalInputSource, UrlInputSource], - params: InferenceParameters, - ) -> InferenceResponse: - """[Deprecated] Use `enqueue_and_get_result` instead.""" - warnings.warn( - "enqueue_and_get_inference is deprecated; use enqueue_and_get_result instead", - DeprecationWarning, - stacklevel=2, - ) - response = self.enqueue_and_get_result(InferenceResponse, input_source, params) - assert isinstance(response, InferenceResponse), ( - f'Invalid response type "{type(response)}"' - ) - return response diff --git a/mindee/v2/commands/cli_parser.py b/mindee/v2/commands/cli_parser.py index fc4a895f..11629697 100644 --- a/mindee/v2/commands/cli_parser.py +++ b/mindee/v2/commands/cli_parser.py @@ -3,11 +3,11 @@ from typing import Optional, Type, Union from mindee import ( - InferenceResponse, + ExtractionResponse, CropResponse, SplitResponse, ClassificationResponse, - InferenceParameters, + ExtractionParameters, ClassificationParameters, CropParameters, SplitParameters, @@ -37,8 +37,8 @@ class ProductConfig: params_class=CropParameters, ), "extraction": ProductConfig( - response_class=InferenceResponse, - params_class=InferenceParameters, + response_class=ExtractionResponse, + params_class=ExtractionParameters, ), "split": ProductConfig( response_class=SplitResponse, diff --git a/mindee/v2/file_operations/crop.py b/mindee/v2/file_operations/crop.py index b98ea19a..96116f50 100644 --- a/mindee/v2/file_operations/crop.py +++ b/mindee/v2/file_operations/crop.py @@ -15,8 +15,8 @@ def extract_single_crop( """ Extracts a single crop as complete PDFs from the document. - :param input_source: Local Input Source to extract sub-receipts from. - :param crop: Crop to extract. + :params input_source: Local Input Source to extract sub-receipts from. + :params crop: Crop to extract. :return: ExtractedImage. """ @@ -28,8 +28,8 @@ def extract_crops(input_source: LocalInputSource, crops: List[CropBox]) -> CropF """ Extracts individual receipts from multi-receipts documents. - :param input_source: Local Input Source to extract sub-receipts from. - :param crops: List of crops. + :params input_source: Local Input Source to extract sub-receipts from. + :params crops: List of crops. :return: Individual extracted receipts as an array of ExtractedImage. """ images: List[ExtractedImage] = [] diff --git a/mindee/v2/file_operations/crop_files.py b/mindee/v2/file_operations/crop_files.py index a5e5d131..dafdfde4 100644 --- a/mindee/v2/file_operations/crop_files.py +++ b/mindee/v2/file_operations/crop_files.py @@ -11,8 +11,8 @@ def save_all_to_disk(self, path: Union[Path, str], prefix: str = "crop"): """ Save all extracted crops to disk. - :param path: Path to save the extracted splits to. - :param prefix: Prefix to add to the filename, defaults to 'crop'. + :params path: Path to save the extracted splits to. + :params prefix: Prefix to add to the filename, defaults to 'crop'. """ if isinstance(path, str): path = Path(path) diff --git a/mindee/v2/file_operations/split.py b/mindee/v2/file_operations/split.py index 68b28145..041538c1 100644 --- a/mindee/v2/file_operations/split.py +++ b/mindee/v2/file_operations/split.py @@ -13,8 +13,8 @@ def extract_single_split( """ Extracts a single split as a complete PDF from the document. - :param input_source: Input source to split. - :param split: List of pages to keep. + :params input_source: Input source to split. + :params split: List of pages to keep. :return: Extracted PDF """ return extract_splits(input_source, [split])[0] @@ -27,8 +27,8 @@ def extract_splits( """ Extracts splits as complete PDFs from the document. - :param input_source: Input source to split. - :param splits: List of sub-lists of pages to keep. + :params input_source: Input source to split. + :params splits: List of sub-lists of pages to keep. :return: A list of extracted invoices. """ pdf_extractor = PdfExtractor(input_source) diff --git a/mindee/v2/file_operations/split_files.py b/mindee/v2/file_operations/split_files.py index fe451a77..ab905be7 100644 --- a/mindee/v2/file_operations/split_files.py +++ b/mindee/v2/file_operations/split_files.py @@ -11,8 +11,8 @@ def save_all_to_disk(self, path: Union[str, Path], prefix: str = "split"): """ Save all extracted splits to disk. - :param path: Path to save the extracted splits to. - :param prefix: Prefix to add to the filename, defaults to 'split'. + :params path: Path to save the extracted splits to. + :params prefix: Prefix to add to the filename, defaults to 'split'. """ if isinstance(path, str): path = Path(path) diff --git a/mindee/v2/parsing/__init__.py b/mindee/v2/parsing/__init__.py index 85bf748e..12129a3e 100644 --- a/mindee/v2/parsing/__init__.py +++ b/mindee/v2/parsing/__init__.py @@ -2,23 +2,23 @@ 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.product.extraction.inference import Inference +from mindee.v2.product.extraction.extraction_inference import ExtractionInference 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.product.extraction.inference_response import InferenceResponse -from mindee.v2.product.extraction.inference_result import InferenceResult +from mindee.v2.product.extraction.extraction_response import ExtractionResponse +from mindee.v2.product.extraction.extraction_result import ExtractionResult from mindee.v2.parsing.inference.job_response import JobResponse __all__ = [ "BaseInference", "BaseResponse", - "Inference", + "ExtractionInference", "InferenceActiveOptions", "InferenceFile", "InferenceModel", - "InferenceResponse", - "InferenceResult", + "ExtractionResponse", + "ExtractionResult", "JobResponse", "ErrorResponse", "ErrorItem", diff --git a/mindee/v2/parsing/inference/field/field_location.py b/mindee/v2/parsing/inference/field/field_location.py index 8dae3c5f..acbc490a 100644 --- a/mindee/v2/parsing/inference/field/field_location.py +++ b/mindee/v2/parsing/inference/field/field_location.py @@ -14,7 +14,7 @@ def __init__(self, server_response: StringDict) -> None: """ Initialize FieldLocation from the server response. - :param server_response: Raw server response. + :params server_response: Raw server response. """ self.polygon = Polygon(server_response["polygon"]) self.page = int(server_response["page"]) diff --git a/mindee/v2/parsing/inference/field/object_field.py b/mindee/v2/parsing/inference/field/object_field.py index 6b2355c9..9f201fbd 100644 --- a/mindee/v2/parsing/inference/field/object_field.py +++ b/mindee/v2/parsing/inference/field/object_field.py @@ -88,7 +88,7 @@ def get_simple_field(self, field_name: str) -> "SimpleField": """ Retrieves a SimpleField from the provided field name. - :param field_name: The name of the field to retrieve. + :params field_name: The name of the field to retrieve. :type field_name: str :return: The SimpleField object corresponding to the given field name. :raises ValueError: If the specified field is not of type SimpleField. @@ -101,7 +101,7 @@ def get_list_field(self, field_name: str) -> "ListField": """ Retrieves the ``ListField`` for the specified field name. - :param field_name: The name of the field to retrieve. + :params field_name: The name of the field to retrieve. :type field_name: str :return: The corresponding ``ListField`` for the given field name. :raises ValueError: If the field is not of type ``ListField``. @@ -114,7 +114,7 @@ def get_object_field(self, field_name: str) -> "ObjectField": """ Retrieves the `ObjectField` associated with the specified field name. - :param field_name: The name of the field to retrieve. + :params field_name: The name of the field to retrieve. :type field_name: str :return: The `ObjectField` associated with the given field name. :raises ValueError: If the field specified by `field_name` is not an `ObjectField`. diff --git a/mindee/v2/product/__init__.py b/mindee/v2/product/__init__.py index 63daf638..80ca0d78 100644 --- a/mindee/v2/product/__init__.py +++ b/mindee/v2/product/__init__.py @@ -1,4 +1,4 @@ -from mindee.v2.product.classification.param.classification_parameters import ( +from mindee.v2.product.classification.params.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( diff --git a/mindee/v2/product/classification/__init__.py b/mindee/v2/product/classification/__init__.py index ee60dadf..7132dc06 100644 --- a/mindee/v2/product/classification/__init__.py +++ b/mindee/v2/product/classification/__init__.py @@ -4,7 +4,7 @@ from mindee.v2.product.classification.classification_inference import ( ClassificationInference, ) -from mindee.v2.product.classification.param.classification_parameters import ( +from mindee.v2.product.classification.params.classification_parameters import ( ClassificationParameters, ) from mindee.v2.product.classification.classification_response import ( diff --git a/mindee/v2/product/classification/classification_classifier.py b/mindee/v2/product/classification/classification_classifier.py index c196290e..de612181 100644 --- a/mindee/v2/product/classification/classification_classifier.py +++ b/mindee/v2/product/classification/classification_classifier.py @@ -1,7 +1,7 @@ from typing import Optional from mindee.parsing.common import StringDict -from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse class ClassificationClassifier: @@ -10,13 +10,13 @@ class ClassificationClassifier: document_type: str """The document type, as identified on given classification values.""" - extraction_response: Optional[InferenceResponse] = None + extraction_response: Optional[ExtractionResponse] = None """The extraction response associated with the classification.""" def __init__(self, server_response: StringDict): self.document_type = server_response["document_type"] if server_response.get("extraction_response") is not None: - self.extraction_response = InferenceResponse( + self.extraction_response = ExtractionResponse( server_response["extraction_response"] ) diff --git a/mindee/v2/product/classification/param/__init__.py b/mindee/v2/product/classification/param/__init__.py deleted file mode 100644 index 3d594b77..00000000 --- a/mindee/v2/product/classification/param/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from mindee.v2.product.classification.param.classification_parameters import ( - ClassificationParameters, -) - -__all__ = ["ClassificationParameters"] diff --git a/mindee/v2/product/classification/params/__init__.py b/mindee/v2/product/classification/params/__init__.py new file mode 100644 index 00000000..74f32e42 --- /dev/null +++ b/mindee/v2/product/classification/params/__init__.py @@ -0,0 +1,5 @@ +from mindee.v2.product.classification.params.classification_parameters import ( + ClassificationParameters, +) + +__all__ = ["ClassificationParameters"] diff --git a/mindee/v2/product/classification/param/classification_parameters.py b/mindee/v2/product/classification/params/classification_parameters.py similarity index 100% rename from mindee/v2/product/classification/param/classification_parameters.py rename to mindee/v2/product/classification/params/classification_parameters.py diff --git a/mindee/v2/product/crop/crop_box.py b/mindee/v2/product/crop/crop_box.py index 4508575f..a6f382b5 100644 --- a/mindee/v2/product/crop/crop_box.py +++ b/mindee/v2/product/crop/crop_box.py @@ -4,7 +4,7 @@ from mindee.input.sources.local_input_source import LocalInputSource from mindee.parsing.common import StringDict from mindee.v2.parsing.inference.field import FieldLocation -from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse class CropBox: @@ -16,14 +16,14 @@ class CropBox: object_type: str """Type or classification of the detected object.""" - extraction_response: Optional[InferenceResponse] = None + extraction_response: Optional[ExtractionResponse] = None """The extraction response associated with the crop.""" def __init__(self, server_response: StringDict): self.location = FieldLocation(server_response["location"]) self.object_type = server_response["object_type"] if server_response.get("extraction_response") is not None: - self.extraction_response = InferenceResponse( + self.extraction_response = ExtractionResponse( server_response["extraction_response"] ) @@ -34,7 +34,7 @@ def extract_from_file(self, input_source: LocalInputSource) -> ExtractedImage: """ Apply the split range inference to a file and return a single extracted PDF. - :param input_source: Local file to apply the inference to + :params input_source: Local file to apply the inference to :return: Extracted PDF """ return extract_multiple_images_from_source( diff --git a/mindee/v2/product/crop/crop_response.py b/mindee/v2/product/crop/crop_response.py index 253fe36d..75e4773c 100644 --- a/mindee/v2/product/crop/crop_response.py +++ b/mindee/v2/product/crop/crop_response.py @@ -22,7 +22,7 @@ def extract_from_file(self, input_source: LocalInputSource) -> CropFiles: """ Apply the crop inference to a file and return a list of extracted images. - :param input_source: Local file to apply the inference to + :params input_source: Local file to apply the inference to :return: List of extracted PDFs """ return CropFiles( diff --git a/mindee/v2/product/extraction/__init__.py b/mindee/v2/product/extraction/__init__.py index 9362a5d8..dac3f171 100644 --- a/mindee/v2/product/extraction/__init__.py +++ b/mindee/v2/product/extraction/__init__.py @@ -1,17 +1,19 @@ -from mindee.v2.product.extraction.inference import Inference -from mindee.v2.product.extraction.inference_response import InferenceResponse -from mindee.v2.product.extraction.inference_result import InferenceResult -from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters +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 +from mindee.v2.product.extraction.params.extraction_parameters import ( + ExtractionParameters, +) from mindee.v2.product.extraction.params.data_schema import DataSchema from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField from mindee.v2.product.extraction.params.string_data_class import StringDataClass __all__ = [ - "Inference", - "InferenceParameters", - "InferenceResponse", - "InferenceResult", + "ExtractionInference", + "ExtractionParameters", + "ExtractionResponse", + "ExtractionResult", "DataSchemaField", "DataSchema", "DataSchemaReplace", diff --git a/mindee/v2/product/extraction/inference.py b/mindee/v2/product/extraction/extraction_inference.py similarity index 79% rename from mindee/v2/product/extraction/inference.py rename to mindee/v2/product/extraction/extraction_inference.py index 7da58d41..c7a65aab 100644 --- a/mindee/v2/product/extraction/inference.py +++ b/mindee/v2/product/extraction/extraction_inference.py @@ -1,20 +1,20 @@ from mindee.parsing.common import StringDict from mindee.v2.parsing.inference.base_inference import BaseInference from mindee.v2.parsing.inference.inference_active_options import InferenceActiveOptions -from mindee.v2.product.extraction.inference_result import InferenceResult +from mindee.v2.product.extraction.extraction_result import ExtractionResult -class Inference(BaseInference): +class ExtractionInference(BaseInference): """Inference object for a V2 API return.""" - result: InferenceResult + result: ExtractionResult """Result of the inference.""" active_options: InferenceActiveOptions """Active options for the inference.""" def __init__(self, raw_response: StringDict): super().__init__(raw_response) - self.result = InferenceResult(raw_response["result"]) + self.result = ExtractionResult(raw_response["result"]) self.active_options = InferenceActiveOptions(raw_response["active_options"]) def __str__(self) -> str: diff --git a/mindee/v2/product/extraction/inference_response.py b/mindee/v2/product/extraction/extraction_response.py similarity index 71% rename from mindee/v2/product/extraction/inference_response.py rename to mindee/v2/product/extraction/extraction_response.py index 4f84be15..39c396d8 100644 --- a/mindee/v2/product/extraction/inference_response.py +++ b/mindee/v2/product/extraction/extraction_response.py @@ -1,19 +1,19 @@ from mindee.parsing.common import StringDict from mindee.v2.parsing.inference.base_response import BaseResponse -from mindee.v2.product.extraction.inference import Inference +from mindee.v2.product.extraction.extraction_inference import ExtractionInference -class InferenceResponse(BaseResponse): +class ExtractionResponse(BaseResponse): """Represent an inference response from Mindee V2 API.""" - inference: Inference + inference: ExtractionInference """Inference result.""" _slug: str = "products/extraction/results" """Slug of the inference.""" def __init__(self, raw_response: StringDict) -> None: super().__init__(raw_response) - self.inference = Inference(raw_response["inference"]) + self.inference = ExtractionInference(raw_response["inference"]) def __str__(self) -> str: return str(self.inference) diff --git a/mindee/v2/product/extraction/inference_result.py b/mindee/v2/product/extraction/extraction_result.py similarity index 97% rename from mindee/v2/product/extraction/inference_result.py rename to mindee/v2/product/extraction/extraction_result.py index c0ba3dda..0844007d 100644 --- a/mindee/v2/product/extraction/inference_result.py +++ b/mindee/v2/product/extraction/extraction_result.py @@ -6,7 +6,7 @@ from mindee.v2.parsing.inference.raw_text import RawText -class InferenceResult: +class ExtractionResult: """Inference result info.""" fields: InferenceFields diff --git a/mindee/v2/product/extraction/params/__init__.py b/mindee/v2/product/extraction/params/__init__.py index 5553ba80..82338447 100644 --- a/mindee/v2/product/extraction/params/__init__.py +++ b/mindee/v2/product/extraction/params/__init__.py @@ -2,10 +2,12 @@ from mindee.v2.product.extraction.params.string_data_class import StringDataClass from mindee.v2.product.extraction.params.data_schema import DataSchema from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace -from mindee.v2.product.extraction.params.inference_parameters import InferenceParameters +from mindee.v2.product.extraction.params.extraction_parameters import ( + ExtractionParameters, +) __all__ = [ - "InferenceParameters", + "ExtractionParameters", "DataSchemaField", "StringDataClass", "DataSchema", diff --git a/mindee/v2/product/extraction/params/inference_parameters.py b/mindee/v2/product/extraction/params/extraction_parameters.py similarity index 98% rename from mindee/v2/product/extraction/params/inference_parameters.py rename to mindee/v2/product/extraction/params/extraction_parameters.py index 600fcc5c..8a4cd98f 100644 --- a/mindee/v2/product/extraction/params/inference_parameters.py +++ b/mindee/v2/product/extraction/params/extraction_parameters.py @@ -7,7 +7,7 @@ @dataclass -class InferenceParameters(BaseParameters): +class ExtractionParameters(BaseParameters): """Inference parameters to set when sending a file.""" rag: Optional[bool] = None diff --git a/mindee/v2/product/split/split_range.py b/mindee/v2/product/split/split_range.py index d63d4547..b2f95a67 100644 --- a/mindee/v2/product/split/split_range.py +++ b/mindee/v2/product/split/split_range.py @@ -1,6 +1,6 @@ from typing import List, Optional -from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf from mindee.input.sources.local_input_source import LocalInputSource from mindee.parsing.common import StringDict @@ -19,14 +19,14 @@ class SplitRange: document_type: str """The document type, as identified on given classification values.""" - extraction_response: Optional[InferenceResponse] = None + extraction_response: Optional[ExtractionResponse] = None """The extraction response associated with the split.""" def __init__(self, server_response: StringDict): self.page_range = server_response["page_range"] self.document_type = server_response["document_type"] if server_response.get("extraction_response") is not None: - self.extraction_response = InferenceResponse( + self.extraction_response = ExtractionResponse( server_response["extraction_response"] ) @@ -38,7 +38,7 @@ def extract_from_file(self, input_source: LocalInputSource) -> ExtractedPdf: """ Apply the split range inference to a file and return a single extracted PDF. - :param input_source: Local file to apply the inference to + :params input_source: Local file to apply the inference to :return: Extracted PDF """ return extract_single_split(input_source, self.page_range) diff --git a/mindee/v2/product/split/split_response.py b/mindee/v2/product/split/split_response.py index b46a58ac..5cae909c 100644 --- a/mindee/v2/product/split/split_response.py +++ b/mindee/v2/product/split/split_response.py @@ -22,7 +22,7 @@ def extract_from_file(self, input_source: LocalInputSource) -> SplitFiles: """ Apply the split inference to a file and return a list of extracted PDFs. - :param input_source: Local file to apply the inference to + :params input_source: Local file to apply the inference to :return: List of extracted PDFs """ return SplitFiles( diff --git a/tests/utils.py b/tests/utils.py index 79948522..8de00d8f 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -41,8 +41,8 @@ def dummy_envvars(monkeypatch) -> None: def levenshtein_ratio(ref_str: str, target_str: str) -> float: """ Calculates the Levenshtein ratio between two strings. - :param ref_str: Reference string. - :param target_str: Target String. + :params ref_str: Reference string. + :params target_str: Target String. :return: Ratio between the two strings """ return SequenceMatcher(None, ref_str, target_str).ratio() diff --git a/tests/v2/file_operations/test_crop_operation_integration.py b/tests/v2/file_operations/test_crop_operation_integration.py index a95bc67f..b0c4a873 100644 --- a/tests/v2/file_operations/test_crop_operation_integration.py +++ b/tests/v2/file_operations/test_crop_operation_integration.py @@ -4,8 +4,8 @@ import pytest from mindee import ( - InferenceParameters, - InferenceResponse, + ExtractionParameters, + ExtractionResponse, CropParameters, CropResponse, ) @@ -20,7 +20,7 @@ def crop_sample(): return V2_PRODUCT_DATA_DIR / "crop" / "default_sample.jpg" -def check_findoc_return(findoc_response: InferenceResponse): +def check_findoc_return(findoc_response: ExtractionResponse): assert len(findoc_response.inference.model.id) > 0 assert findoc_response.inference.result.fields.get("total_amount").value > 0 @@ -43,9 +43,9 @@ def test_image_should_extract_crops(): assert extracted_images[1].filename == "default_sample.jpg_page1-1.jpg" invoice_0 = client.enqueue_and_get_result( - InferenceResponse, + ExtractionResponse, extracted_images[0].as_input_source(), - InferenceParameters( + ExtractionParameters( getenv("MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID"), close_file=False ), ) diff --git a/tests/v2/file_operations/test_split_operation_integration.py b/tests/v2/file_operations/test_split_operation_integration.py index 8b78b24b..cc9ac43c 100644 --- a/tests/v2/file_operations/test_split_operation_integration.py +++ b/tests/v2/file_operations/test_split_operation_integration.py @@ -3,8 +3,8 @@ import pytest from mindee import ( - InferenceParameters, - InferenceResponse, + ExtractionParameters, + ExtractionResponse, SplitParameters, SplitResponse, ) @@ -18,7 +18,7 @@ def invoice_splitter_5p_path(): return V2_PRODUCT_DATA_DIR / "split" / "invoice_5p.pdf" -def check_findoc_return(findoc_response: InferenceResponse): +def check_findoc_return(findoc_response: ExtractionResponse): assert len(findoc_response.inference.model.id) > 0 assert findoc_response.inference.result.fields.get("total_amount").value > 0 @@ -44,9 +44,9 @@ def test_pdf_should_extract_splits(): assert extracted_pdfs[1].filename == "default_sample_002-002.pdf" invoice_0 = client.enqueue_and_get_result( - InferenceResponse, + ExtractionResponse, extracted_pdfs[0].as_input_source(), - InferenceParameters( + ExtractionParameters( getenv("MINDEE_V2_SE_TESTS_FINDOC_MODEL_ID"), close_file=False ), ) diff --git a/tests/v2/input/test_inference_parameters.py b/tests/v2/input/test_inference_parameters.py index 094888ff..93c54e45 100644 --- a/tests/v2/input/test_inference_parameters.py +++ b/tests/v2/input/test_inference_parameters.py @@ -2,7 +2,7 @@ import pytest -from mindee import InferenceParameters +from mindee import ExtractionParameters from mindee.v2.product.extraction.params.data_schema import DataSchema from mindee.v2.product.extraction.params.data_schema_field import DataSchemaField from mindee.v2.product.extraction.params.data_schema_replace import DataSchemaReplace @@ -17,26 +17,26 @@ def test_data_schema_replace_none(): - params = InferenceParameters(model_id="test-id") + params = ExtractionParameters(model_id="test-id") assert params.data_schema is None def test_data_schema_replace_str(): - params = InferenceParameters( + params = ExtractionParameters( model_id="test-id", data_schema=expected_data_schema_str ) assert str(params.data_schema) == expected_data_schema_str def test_data_schema_replace_dict(): - params = InferenceParameters( + params = ExtractionParameters( model_id="test-id", data_schema=expected_data_schema_dict ) assert str(params.data_schema) == expected_data_schema_str def test_data_schema_replace_obj_top(): - params = InferenceParameters( + params = ExtractionParameters( model_id="test-id", data_schema=DataSchema(replace=expected_data_schema_dict["replace"]), ) @@ -44,7 +44,7 @@ def test_data_schema_replace_obj_top(): def test_data_schema_replace_obj_fields(): - params = InferenceParameters( + params = ExtractionParameters( model_id="test-id", data_schema=DataSchema( replace=DataSchemaReplace( @@ -59,11 +59,13 @@ def test_data_schema_replace_empty_fields(): with pytest.raises( ValueError, match="Data schema replacement fields cannot be empty" ): - InferenceParameters(model_id="test-id", data_schema={"replace": {"fields": []}}) + ExtractionParameters( + model_id="test-id", data_schema={"replace": {"fields": []}} + ) def test_data_schema_replace_obj_full(): - params = InferenceParameters( + params = ExtractionParameters( model_id="test-id", data_schema=DataSchema( replace=DataSchemaReplace( diff --git a/tests/v2/input/test_local_response.py b/tests/v2/input/test_local_response.py index eaffa455..a45cc6ba 100644 --- a/tests/v2/input/test_local_response.py +++ b/tests/v2/input/test_local_response.py @@ -2,7 +2,7 @@ import pytest -from mindee import InferenceResponse +from mindee import ExtractionResponse from mindee.input import LocalResponse from tests.utils import V2_PRODUCT_DATA_DIR @@ -22,8 +22,10 @@ def _assert_local_response(local_response): ) assert signature == local_response.get_hmac_signature(fake_hmac_signing) assert local_response.is_valid_hmac_signature(fake_hmac_signing, signature) - reponse: InferenceResponse = local_response.deserialize_response(InferenceResponse) - assert isinstance(reponse, InferenceResponse) + reponse: ExtractionResponse = local_response.deserialize_response( + ExtractionResponse + ) + assert isinstance(reponse, ExtractionResponse) assert reponse.inference is not None assert reponse.inference.result is not None assert reponse.inference.result.fields is not None diff --git a/tests/v2/product/classification/test_classification_response.py b/tests/v2/product/classification/test_classification_response.py index 651a0c30..950efde0 100644 --- a/tests/v2/product/classification/test_classification_response.py +++ b/tests/v2/product/classification/test_classification_response.py @@ -1,6 +1,6 @@ import pytest -from mindee import InferenceResponse +from mindee import ExtractionResponse from mindee.v2.product.classification.classification_classifier import ( ClassificationClassifier, ) @@ -41,7 +41,7 @@ def test_classification_with_extraction_result(): ) classification = response.inference.result.classification assert classification.document_type == "invoice" - assert isinstance(classification.extraction_response, InferenceResponse) + assert isinstance(classification.extraction_response, ExtractionResponse) assert ( classification.extraction_response.inference.result.fields.get( "customer_name" diff --git a/tests/v2/product/crop/test_crop_response.py b/tests/v2/product/crop/test_crop_response.py index 761951a8..314e177a 100644 --- a/tests/v2/product/crop/test_crop_response.py +++ b/tests/v2/product/crop/test_crop_response.py @@ -1,6 +1,6 @@ import pytest -from mindee import InferenceResponse +from mindee import ExtractionResponse from mindee.v2.product.crop.crop_box import CropBox from mindee.v2.product.crop import CropInference from mindee.v2.product.crop.crop_response import CropResponse @@ -84,14 +84,14 @@ def test_crop_with_extraction_result(): ) crops = response.inference.result.crops assert crops[0].object_type == "receipt" - assert isinstance(crops[0].extraction_response, InferenceResponse) + assert isinstance(crops[0].extraction_response, ExtractionResponse) assert ( crops[0].extraction_response.inference.result.fields.get("supplier_name").value == "CHEZ ALAIN MIAM MIAM" ) assert crops[1].object_type == "receipt" - assert isinstance(crops[1].extraction_response, InferenceResponse) + assert isinstance(crops[1].extraction_response, ExtractionResponse) assert ( crops[1].extraction_response.inference.result.fields.get("supplier_name").value == "La cerise sur la pizza" diff --git a/tests/v2/product/extraction/test_extraction_response.py b/tests/v2/product/extraction/test_extraction_response.py index b35124ea..7973e02c 100644 --- a/tests/v2/product/extraction/test_extraction_response.py +++ b/tests/v2/product/extraction/test_extraction_response.py @@ -2,14 +2,14 @@ import pytest -from mindee import InferenceResponse +from mindee import ExtractionResponse from mindee.v2.parsing.inference.inference_active_options import InferenceActiveOptions from mindee.v2.parsing.inference.field import FieldConfidence from mindee.v2.parsing.inference.field import ListField from mindee.v2.parsing.inference.field.object_field import ObjectField from mindee.v2.parsing.inference.field.simple_field import SimpleField from mindee.v2.parsing.inference.field import InferenceFields -from mindee.v2.product.extraction.inference import Inference +from mindee.v2.product.extraction.extraction_inference import ExtractionInference from mindee.v2.parsing.inference.inference_file import InferenceFile from mindee.v2.parsing.inference.inference_model import InferenceModel from mindee.v2.parsing.inference.rag_metadata import RagMetadata @@ -22,8 +22,8 @@ def test_deep_nested_fields(): json_sample, _ = get_product_samples( product="extraction", file_name="deep_nested_fields" ) - response = InferenceResponse(json_sample) - assert isinstance(response.inference, Inference) + response = ExtractionResponse(json_sample) + assert isinstance(response.inference, ExtractionInference) assert isinstance(response.inference.result.fields["field_simple"], SimpleField) assert isinstance(response.inference.result.fields["field_object"], ObjectField) assert isinstance( @@ -96,8 +96,8 @@ def test_standard_field_types(): json_sample, rst_sample = get_product_samples( product="extraction", file_name="standard_field_types" ) - response = InferenceResponse(json_sample) - assert isinstance(response.inference, Inference) + response = ExtractionResponse(json_sample) + assert isinstance(response.inference, ExtractionInference) field_simple_string = response.inference.result.fields["field_simple_string"] assert isinstance(field_simple_string, SimpleField) @@ -131,7 +131,7 @@ def test_standard_field_object(): json_sample, _ = get_product_samples( product="extraction", file_name="standard_field_types" ) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) object_field = response.inference.result.fields["field_object"] assert isinstance(object_field, ObjectField) @@ -153,8 +153,8 @@ def test_standard_field_object_list(): json_sample, _ = get_product_samples( product="extraction", file_name="standard_field_types" ) - response = InferenceResponse(json_sample) - assert isinstance(response.inference, Inference) + response = ExtractionResponse(json_sample) + assert isinstance(response.inference, ExtractionInference) field_object_list = response.inference.result.fields["field_object_list"] assert isinstance(field_object_list, ListField) @@ -168,8 +168,8 @@ def test_standard_field_simple_list(): json_sample, _ = get_product_samples( product="extraction", file_name="standard_field_types" ) - response = InferenceResponse(json_sample) - assert isinstance(response.inference, Inference) + response = ExtractionResponse(json_sample) + assert isinstance(response.inference, ExtractionInference) field_simple_list = response.inference.result.fields["field_simple_list"] assert isinstance(field_simple_list, ListField) @@ -181,8 +181,8 @@ def test_standard_field_simple_list(): @pytest.mark.v2 def test_raw_texts(): json_sample, _ = get_product_samples(product="extraction", file_name="raw_texts") - response = InferenceResponse(json_sample) - assert isinstance(response.inference, Inference) + response = ExtractionResponse(json_sample) + assert isinstance(response.inference, ExtractionInference) assert response.inference.result.raw_text assert len(response.inference.result.raw_text.pages) == 2 @@ -197,7 +197,7 @@ def test_raw_texts(): def test_rag_metadata_when_matched(): """RAG metadata when matched.""" json_sample, _ = get_product_samples(product="extraction", file_name="rag_matched") - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) rag = response.inference.result.rag assert isinstance(rag, RagMetadata) assert rag.retrieved_document_id == "12345abc-1234-1234-1234-123456789abc" @@ -210,7 +210,7 @@ def test_rag_metadata_when_not_matched(): json_sample, _ = get_product_samples( product="extraction", file_name="rag_not_matched" ) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) rag = response.inference.result.rag assert isinstance(rag, RagMetadata) assert rag.retrieved_document_id is None @@ -222,9 +222,9 @@ def test_full_inference_response(): json_sample, _ = get_product_samples( product="extraction/financial_document", file_name="complete" ) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) - assert isinstance(response.inference, Inference) + assert isinstance(response.inference, ExtractionInference) assert response.inference.id == "12345678-1234-1234-1234-123456789abc" assert isinstance(response.inference.result.fields["date"], SimpleField) assert response.inference.result.fields["date"].value == "2019-11-02" @@ -259,7 +259,7 @@ def test_field_locations_and_confidence() -> None: product="extraction/financial_document", file_name="complete_with_coordinates" ) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) date_field: SimpleField = response.inference.result.fields["date"] @@ -300,7 +300,7 @@ def test_text_context_field_is_false() -> None: json_sample, _ = get_product_samples( product="extraction/financial_document", file_name="complete" ) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) assert isinstance(response.inference.active_options, InferenceActiveOptions) assert response.inference.active_options.text_context is False @@ -311,6 +311,6 @@ def test_text_context_field_is_true() -> None: V2_PRODUCT_DATA_DIR / "extraction" / "text_context_enabled.json", "r" ) as file: json_sample = json.load(file) - response = InferenceResponse(json_sample) + response = ExtractionResponse(json_sample) assert isinstance(response.inference.active_options, InferenceActiveOptions) assert response.inference.active_options.text_context is True diff --git a/tests/v2/product/split/test_split_response.py b/tests/v2/product/split/test_split_response.py index 8b79f31b..a01c3db8 100644 --- a/tests/v2/product/split/test_split_response.py +++ b/tests/v2/product/split/test_split_response.py @@ -1,6 +1,6 @@ import pytest -from mindee import InferenceResponse +from mindee import ExtractionResponse from mindee.v2.product.split.split_range import SplitRange from mindee.v2.product.split import SplitInference from mindee.v2.product.split.split_response import SplitResponse @@ -61,7 +61,7 @@ def test_split_with_extraction_result(): split = response.inference.result.splits assert split[0].document_type == "invoice" assert split[0].page_range[0] == 0 - assert isinstance(split[0].extraction_response, InferenceResponse) + assert isinstance(split[0].extraction_response, ExtractionResponse) assert ( split[0] .extraction_response.inference.result.fields.get("supplier_phone_number") @@ -71,7 +71,7 @@ def test_split_with_extraction_result(): assert split[1].document_type == "invoice" assert split[1].page_range[0] == 1 - assert isinstance(split[1].extraction_response, InferenceResponse) + assert isinstance(split[1].extraction_response, ExtractionResponse) assert ( split[1] .extraction_response.inference.result.fields.get("supplier_phone_number") diff --git a/tests/v2/test_client.py b/tests/v2/test_client.py index f30c1915..1ccef471 100644 --- a/tests/v2/test_client.py +++ b/tests/v2/test_client.py @@ -3,14 +3,14 @@ import pytest -from mindee import InferenceParameters, InferenceResponse, LocalResponse +from mindee import ExtractionParameters, ExtractionResponse, LocalResponse from mindee.v2.client import Client from mindee.error.mindee_error import MindeeApiV2Error, MindeeError from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 from mindee.input.sources.local_input_source import LocalInputSource from mindee.input.sources.path_input import PathInput from mindee.mindee_http.base_settings import USER_AGENT -from mindee.v2.product.extraction.inference import Inference +from mindee.v2.product.extraction.extraction_inference import ExtractionInference from mindee.v2.parsing.inference.job import Job from mindee.v2.parsing.inference.job_response import JobResponse from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR, V2_DATA_DIR, dummy_envvars @@ -129,7 +129,7 @@ def test_enqueue_path_with_env_token(custom_base_url_client): f"{FILE_TYPES_DIR}/receipt.jpg" ) with pytest.raises(MindeeHTTPErrorV2): - custom_base_url_client.enqueue(input_doc, InferenceParameters("dummy-model")) + custom_base_url_client.enqueue(input_doc, ExtractionParameters("dummy-model")) @pytest.mark.v2 @@ -139,9 +139,9 @@ def test_enqueue_and_parse_path_with_env_token(custom_base_url_client): ) with pytest.raises(MindeeHTTPErrorV2): custom_base_url_client.enqueue_and_get_result( - InferenceResponse, + ExtractionResponse, input_doc, - InferenceParameters( + ExtractionParameters( "dummy-model", text_context="ignore this message", data_schema=json.loads( @@ -155,11 +155,11 @@ def test_enqueue_and_parse_path_with_env_token(custom_base_url_client): ) -def _assert_findoc_inference(response: InferenceResponse): +def _assert_findoc_inference(response: ExtractionResponse): # There are already detailed tests of the inference object. # Here we are just testing whether the client can load OK. - assert isinstance(response, InferenceResponse) - assert isinstance(response.inference, Inference) + assert isinstance(response, ExtractionResponse) + assert isinstance(response.inference, ExtractionInference) assert response.inference.id assert response.inference.model.id assert len(response.inference.result.fields) > 1 @@ -170,7 +170,7 @@ def test_loads_from_prediction(): input_inference = LocalResponse( V2_PRODUCT_DATA_DIR / "extraction" / "financial_document" / "complete.json" ) - response = input_inference.deserialize_response(InferenceResponse) + response = input_inference.deserialize_response(ExtractionResponse) _assert_findoc_inference(response) with pytest.raises(MindeeError): input_inference.deserialize_response(JobResponse) @@ -179,7 +179,7 @@ def test_loads_from_prediction(): @pytest.mark.v2 def test_get_inference(custom_base_url_client): response = custom_base_url_client.get_result( - InferenceResponse, "12345678-1234-1234-1234-123456789ABC" + ExtractionResponse, "12345678-1234-1234-1234-123456789ABC" ) _assert_findoc_inference(response) @@ -194,7 +194,7 @@ def test_error_handling(custom_base_url_client): / "financial_document" / "default_sample.jpg" ), - InferenceParameters("dummy-model"), + ExtractionParameters("dummy-model"), ) assert e.status_code == -1 assert e.detail == "forced failure from test" diff --git a/tests/v2/test_client_integration.py b/tests/v2/test_client_integration.py index 9b130193..226b1e3b 100644 --- a/tests/v2/test_client_integration.py +++ b/tests/v2/test_client_integration.py @@ -3,13 +3,13 @@ import pytest -from mindee import InferenceParameters +from mindee import ExtractionParameters from mindee.v1.client import Client from mindee.input.sources.path_input import PathInput from mindee.input.sources.url_input_source import UrlInputSource from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 from mindee.v2.parsing import InferenceActiveOptions -from mindee.v2.product.extraction.inference_response import InferenceResponse +from mindee.v2.product.extraction.extraction_response import ExtractionResponse from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR @@ -25,7 +25,7 @@ def v2_client() -> Client: def _basic_assert_success( - response: InferenceResponse, page_count: int, model_id: str + response: ExtractionResponse, page_count: int, model_id: str ) -> None: assert response is not None assert response.inference is not None @@ -52,7 +52,7 @@ def test_parse_file_empty_multiple_pages_must_succeed( input_path: Path = FILE_TYPES_DIR / "pdf" / "multipage_cut-2.pdf" input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, rag=False, raw_text=True, @@ -61,8 +61,8 @@ def test_parse_file_empty_multiple_pages_must_succeed( alias="py_integration_empty_multiple", ) - response: InferenceResponse = v2_client.enqueue_and_get_result( - InferenceResponse, input_source, params + response: ExtractionResponse = v2_client.enqueue_and_get_result( + ExtractionResponse, input_source, params ) _basic_assert_success(response=response, page_count=2, model_id=findoc_model_id) @@ -94,7 +94,7 @@ def test_parse_file_empty_single_page_options_must_succeed( input_path: Path = FILE_TYPES_DIR / "pdf" / "blank_1.pdf" input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, rag=True, raw_text=True, @@ -102,8 +102,8 @@ def test_parse_file_empty_single_page_options_must_succeed( confidence=True, alias="py_integration_empty_page_options", ) - response: InferenceResponse = v2_client.enqueue_and_get_result( - InferenceResponse, input_source, params + response: ExtractionResponse = v2_client.enqueue_and_get_result( + ExtractionResponse, input_source, params ) _basic_assert_success(response=response, page_count=1, model_id=findoc_model_id) @@ -131,7 +131,7 @@ def test_parse_file_filled_single_page_must_succeed( ) input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, webhook_ids=[], rag=None, @@ -142,8 +142,8 @@ def test_parse_file_filled_single_page_must_succeed( text_context="this is an invoice.", ) - response: InferenceResponse = v2_client.enqueue_and_get_result( - InferenceResponse, input_source, params + response: ExtractionResponse = v2_client.enqueue_and_get_result( + ExtractionResponse, input_source, params ) _basic_assert_success(response=response, page_count=1, model_id=findoc_model_id) @@ -178,7 +178,7 @@ def test_invalid_uuid_must_throw_error(v2_client: Client) -> None: input_path: Path = FILE_TYPES_DIR / "pdf" / "blank_1.pdf" input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id="INVALID MODEL ID", text_context="ignore this message" ) @@ -201,7 +201,7 @@ def test_unknown_model_must_throw_error(v2_client: Client) -> None: input_path: Path = FILE_TYPES_DIR / "pdf" / "blank_1.pdf" input_source = PathInput(input_path) - params = InferenceParameters(model_id="fc405e37-4ba4-4d03-aeba-533a8d1f0f21") + params = ExtractionParameters(model_id="fc405e37-4ba4-4d03-aeba-533a8d1f0f21") with pytest.raises(MindeeHTTPErrorV2) as exc_info: v2_client.enqueue(input_source, params) @@ -224,7 +224,7 @@ def test_unknown_webhook_ids_must_throw_error( input_path: Path = FILE_TYPES_DIR / "pdf" / "blank_1.pdf" input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, webhook_ids=[ "fc405e37-4ba4-4d03-aeba-533a8d1f0f21", @@ -259,7 +259,7 @@ def test_blank_url_input_source_must_succeed( url = os.getenv("MINDEE_V2_SE_TESTS_BLANK_PDF_URL") input_source = UrlInputSource(url) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, rag=False, raw_text=False, @@ -268,8 +268,8 @@ def test_blank_url_input_source_must_succeed( webhook_ids=[], alias="py_integration_url_source", ) - response: InferenceResponse = v2_client.enqueue_and_get_result( - InferenceResponse, input_source, params + response: ExtractionResponse = v2_client.enqueue_and_get_result( + ExtractionResponse, input_source, params ) _basic_assert_success(response=response, page_count=1, model_id=findoc_model_id) @@ -289,7 +289,7 @@ def test_data_schema_must_succeed( ) input_source = PathInput(input_path) - params = InferenceParameters( + params = ExtractionParameters( model_id=findoc_model_id, rag=False, raw_text=False, @@ -299,8 +299,8 @@ def test_data_schema_must_succeed( data_schema=data_schema_replace_path.read_text(), alias="py_integration_data_schema_replace", ) - response: InferenceResponse = v2_client.enqueue_and_get_result( - InferenceResponse, input_source, params + response: ExtractionResponse = v2_client.enqueue_and_get_result( + ExtractionResponse, input_source, params ) _basic_assert_success(response=response, page_count=1, model_id=findoc_model_id) assert response.inference.active_options.data_schema.replace is True From 689dc2b3cbdc26ab8d706592be821c55dbd941f6 Mon Sep 17 00:00:00 2001 From: sebastianMindee <130448732+sebastianMindee@users.noreply.github.com> Date: Mon, 1 Jun 2026 16:49:26 +0200 Subject: [PATCH 3/3] :boom: :recycle: move more v2 and v1 internals --- .../code_samples/bank_account_details_v1.txt | 2 +- .../code_samples/bank_account_details_v2.txt | 2 +- docs/extras/code_samples/bank_check_v1.txt | 2 +- .../extras/code_samples/barcode_reader_v1.txt | 2 +- docs/extras/code_samples/carte_grise_v1.txt | 2 +- docs/extras/code_samples/cropper_v1.txt | 2 +- docs/extras/code_samples/custom_v1.txt | 2 +- docs/extras/code_samples/default.txt | 2 +- docs/extras/code_samples/default_async.txt | 2 +- .../code_samples/expense_receipts_v5.txt | 2 +- .../expense_receipts_v5_async.txt | 2 +- .../code_samples/financial_document_v1.txt | 2 +- .../financial_document_v1_async.txt | 2 +- docs/extras/code_samples/idcard_fr_v1.txt | 2 +- docs/extras/code_samples/idcard_fr_v2.txt | 2 +- .../international_id_v2_async.txt | 2 +- .../invoice_splitter_v1_async.txt | 2 +- docs/extras/code_samples/invoices_v4.txt | 2 +- .../extras/code_samples/invoices_v4_async.txt | 2 +- .../multi_receipts_detector_v1.txt | 2 +- docs/extras/code_samples/passport_v1.txt | 2 +- .../code_samples/workflow_execution.txt | 4 +-- docs/extras/code_samples/workflow_ots_rag.txt | 2 +- ...uto_invoice_splitter_extraction_example.py | 2 +- mindee/__init__.py | 20 ++++++------ mindee/client_mixin.py | 14 ++++---- .../{error/v2 => client_options}/__init__.py | 0 .../polling_options.py | 0 mindee/commands/cli_parser.py | 6 ++-- mindee/error/__init__.py | 6 ---- mindee/error/mindee_error.py | 12 ------- mindee/extraction/common/extracted_image.py | 4 +-- mindee/extraction/common/image_extractor.py | 4 +-- .../multi_receipts_extractor.py | 2 +- .../extraction/pdf_extractor/extracted_pdf.py | 2 +- .../extraction/pdf_extractor/pdf_extractor.py | 2 +- mindee/image/__init__.py | 3 ++ .../image_compressor.py | 0 mindee/image_operations/__init__.py | 3 -- mindee/input/__init__.py | 18 +++++------ mindee/input/{sources => }/base_64_input.py | 2 +- mindee/input/{sources => }/bytes_input.py | 2 +- mindee/input/{sources => }/file_input.py | 2 +- .../input/{sources => }/local_input_source.py | 2 +- mindee/input/{sources => }/path_input.py | 2 +- mindee/input/sources/__init__.py | 15 --------- .../input/{sources => }/url_input_source.py | 12 +++---- mindee/mindee_http/__init__.py | 11 ------- mindee/parsing/__init__.py | 4 ++- mindee/pdf/pdf_compressor.py | 2 +- mindee/v1/client.py | 32 +++++++++---------- mindee/v1/client_options/__init__.py | 4 +++ .../client_options}/predict_options.py | 0 .../workflow_options.py | 0 mindee/v1/error/__init__.py | 5 +++ mindee/v1/error/mindee_api_error.py | 5 +++ mindee/v1/error/mindee_product_error.py | 5 +++ mindee/v1/mindee_http/__init__.py | 14 ++++++++ mindee/{ => v1}/mindee_http/base_endpoint.py | 2 +- mindee/{ => v1}/mindee_http/base_settings.py | 0 mindee/{ => v1}/mindee_http/endpoint.py | 20 ++++++------ mindee/{ => v1}/mindee_http/mindee_api.py | 8 ++--- .../{ => v1}/mindee_http/workflow_endpoint.py | 14 ++++---- .../{ => v1}/mindee_http/workflow_settings.py | 6 ++-- mindee/v1/parsing/__init__.py | 8 +++++ mindee/v2/client.py | 24 +++++++------- .../input => v2/client_options}/__init__.py | 0 .../base_parameters.py | 2 +- mindee/v2/commands/cli_parser.py | 10 +++--- mindee/v2/error/__init__.py | 4 +++ mindee/v2/error/mindee_api_v2_error.py | 5 +++ .../v2 => v2/error}/mindee_http_error_v2.py | 0 mindee/v2/file_operations/crop.py | 2 +- mindee/v2/file_operations/split.py | 2 +- mindee/v2/{input => mindee_http}/__init__.py | 0 mindee/{ => v2}/mindee_http/mindee_api_v2.py | 20 ++++++------ .../mindee_http/response_validation_v2.py | 0 .../parsing/inference/field/dynamic_field.py | 6 ++-- .../params/classification_parameters.py | 2 +- mindee/v2/product/crop/crop_box.py | 2 +- mindee/v2/product/crop/crop_response.py | 2 +- .../v2/product/crop/params/crop_parameters.py | 2 +- .../params/extraction_parameters.py | 2 +- .../v2/product/ocr/params/ocr_parameters.py | 2 +- .../product/split/params/split_parameters.py | 2 +- mindee/v2/product/split/split_range.py | 2 +- mindee/v2/product/split/split_response.py | 2 +- tests/input/test_apply_page_options.py | 2 +- tests/input/test_compression.py | 4 +-- tests/input/test_inputs.py | 6 ++-- tests/utils.py | 2 +- tests/v1/api/test_async_response.py | 2 +- tests/v1/extraction/test_image_extractor.py | 2 +- .../test_invoice_splitter_auto_extraction.py | 2 +- .../test_multi_receipts_extractor.py | 2 +- tests/v1/extraction/test_pdf_extractor.py | 2 +- tests/v1/mindee_http/test_error.py | 2 +- tests/v1/test_client.py | 2 +- .../v1/workflows/test_workflow_integration.py | 2 +- .../v2/file_operations/test_crop_operation.py | 2 +- .../test_crop_operation_integration.py | 4 +-- .../file_operations/test_split_operation.py | 2 +- .../test_split_operation_integration.py | 4 +-- .../test_classification_integration.py | 4 +-- .../v2/product/crop/test_crop_integration.py | 4 +-- tests/v2/product/ocr/test_ocr_integration.py | 4 +-- .../product/split/test_split_integration.py | 4 +-- tests/v2/test_client.py | 19 +++++------ tests/v2/test_client_integration.py | 10 +++--- 109 files changed, 256 insertions(+), 247 deletions(-) rename mindee/{error/v2 => client_options}/__init__.py (100%) rename mindee/{input => client_options}/polling_options.py (100%) create mode 100644 mindee/image/__init__.py rename mindee/{image_operations => image}/image_compressor.py (100%) delete mode 100644 mindee/image_operations/__init__.py rename mindee/input/{sources => }/base_64_input.py (88%) rename mindee/input/{sources => }/bytes_input.py (86%) rename mindee/input/{sources => }/file_input.py (88%) rename mindee/input/{sources => }/local_input_source.py (99%) rename mindee/input/{sources => }/path_input.py (87%) delete mode 100644 mindee/input/sources/__init__.py rename mindee/input/{sources => }/url_input_source.py (95%) create mode 100644 mindee/v1/client_options/__init__.py rename mindee/{input => v1/client_options}/predict_options.py (100%) rename mindee/v1/{input => client_options}/workflow_options.py (100%) create mode 100644 mindee/v1/error/__init__.py create mode 100644 mindee/v1/error/mindee_api_error.py create mode 100644 mindee/v1/error/mindee_product_error.py create mode 100644 mindee/v1/mindee_http/__init__.py rename mindee/{ => v1}/mindee_http/base_endpoint.py (84%) rename mindee/{ => v1}/mindee_http/base_settings.py (100%) rename mindee/{ => v1}/mindee_http/endpoint.py (95%) rename mindee/{ => v1}/mindee_http/mindee_api.py (81%) rename mindee/{ => v1}/mindee_http/workflow_endpoint.py (80%) rename mindee/{ => v1}/mindee_http/workflow_settings.py (80%) rename mindee/{v1/input => v2/client_options}/__init__.py (100%) rename mindee/v2/{input => client_options}/base_parameters.py (95%) create mode 100644 mindee/v2/error/__init__.py create mode 100644 mindee/v2/error/mindee_api_v2_error.py rename mindee/{error/v2 => v2/error}/mindee_http_error_v2.py (100%) rename mindee/v2/{input => mindee_http}/__init__.py (100%) rename mindee/{ => v2}/mindee_http/mindee_api_v2.py (88%) rename mindee/{ => v2}/mindee_http/response_validation_v2.py (100%) diff --git a/docs/extras/code_samples/bank_account_details_v1.txt b/docs/extras/code_samples/bank_account_details_v1.txt index ff5643f1..efe682b3 100644 --- a/docs/extras/code_samples/bank_account_details_v1.txt +++ b/docs/extras/code_samples/bank_account_details_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/bank_account_details_v2.txt b/docs/extras/code_samples/bank_account_details_v2.txt index d60f2806..87fd38ca 100644 --- a/docs/extras/code_samples/bank_account_details_v2.txt +++ b/docs/extras/code_samples/bank_account_details_v2.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/bank_check_v1.txt b/docs/extras/code_samples/bank_check_v1.txt index 28c77fa9..3fceaa09 100644 --- a/docs/extras/code_samples/bank_check_v1.txt +++ b/docs/extras/code_samples/bank_check_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/barcode_reader_v1.txt b/docs/extras/code_samples/barcode_reader_v1.txt index 06bfaa2d..94983824 100644 --- a/docs/extras/code_samples/barcode_reader_v1.txt +++ b/docs/extras/code_samples/barcode_reader_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/carte_grise_v1.txt b/docs/extras/code_samples/carte_grise_v1.txt index ff44e59d..0b4dedbb 100644 --- a/docs/extras/code_samples/carte_grise_v1.txt +++ b/docs/extras/code_samples/carte_grise_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/cropper_v1.txt b/docs/extras/code_samples/cropper_v1.txt index 5c0633cc..f90d4a10 100644 --- a/docs/extras/code_samples/cropper_v1.txt +++ b/docs/extras/code_samples/cropper_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/custom_v1.txt b/docs/extras/code_samples/custom_v1.txt index 82abd496..2ee216fe 100644 --- a/docs/extras/code_samples/custom_v1.txt +++ b/docs/extras/code_samples/custom_v1.txt @@ -1,4 +1,4 @@ -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/default.txt b/docs/extras/code_samples/default.txt index 83fa2d2c..b5df084c 100644 --- a/docs/extras/code_samples/default.txt +++ b/docs/extras/code_samples/default.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/default_async.txt b/docs/extras/code_samples/default_async.txt index b701a196..790ddfc3 100644 --- a/docs/extras/code_samples/default_async.txt +++ b/docs/extras/code_samples/default_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, AsyncPredictResponse, product +from mindee.v1 import Client, AsyncPredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/expense_receipts_v5.txt b/docs/extras/code_samples/expense_receipts_v5.txt index 2243cc61..cb1b552b 100644 --- a/docs/extras/code_samples/expense_receipts_v5.txt +++ b/docs/extras/code_samples/expense_receipts_v5.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/expense_receipts_v5_async.txt b/docs/extras/code_samples/expense_receipts_v5_async.txt index bf174184..266a0db9 100644 --- a/docs/extras/code_samples/expense_receipts_v5_async.txt +++ b/docs/extras/code_samples/expense_receipts_v5_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/financial_document_v1.txt b/docs/extras/code_samples/financial_document_v1.txt index 67a1f00d..df1e246a 100644 --- a/docs/extras/code_samples/financial_document_v1.txt +++ b/docs/extras/code_samples/financial_document_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/financial_document_v1_async.txt b/docs/extras/code_samples/financial_document_v1_async.txt index 9fb1c123..483a8e3f 100644 --- a/docs/extras/code_samples/financial_document_v1_async.txt +++ b/docs/extras/code_samples/financial_document_v1_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/idcard_fr_v1.txt b/docs/extras/code_samples/idcard_fr_v1.txt index b0087d83..125219b3 100644 --- a/docs/extras/code_samples/idcard_fr_v1.txt +++ b/docs/extras/code_samples/idcard_fr_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/idcard_fr_v2.txt b/docs/extras/code_samples/idcard_fr_v2.txt index 47bcb6b1..1f64f154 100644 --- a/docs/extras/code_samples/idcard_fr_v2.txt +++ b/docs/extras/code_samples/idcard_fr_v2.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/international_id_v2_async.txt b/docs/extras/code_samples/international_id_v2_async.txt index 36a3fa97..5534b626 100644 --- a/docs/extras/code_samples/international_id_v2_async.txt +++ b/docs/extras/code_samples/international_id_v2_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/invoice_splitter_v1_async.txt b/docs/extras/code_samples/invoice_splitter_v1_async.txt index c98da273..9ea947e3 100644 --- a/docs/extras/code_samples/invoice_splitter_v1_async.txt +++ b/docs/extras/code_samples/invoice_splitter_v1_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/invoices_v4.txt b/docs/extras/code_samples/invoices_v4.txt index 848441ed..a903df6f 100644 --- a/docs/extras/code_samples/invoices_v4.txt +++ b/docs/extras/code_samples/invoices_v4.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/invoices_v4_async.txt b/docs/extras/code_samples/invoices_v4_async.txt index a4cbf802..a221fa2a 100644 --- a/docs/extras/code_samples/invoices_v4_async.txt +++ b/docs/extras/code_samples/invoices_v4_async.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/multi_receipts_detector_v1.txt b/docs/extras/code_samples/multi_receipts_detector_v1.txt index 9c50ce44..0537611a 100644 --- a/docs/extras/code_samples/multi_receipts_detector_v1.txt +++ b/docs/extras/code_samples/multi_receipts_detector_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/passport_v1.txt b/docs/extras/code_samples/passport_v1.txt index e0eae0d0..b372ccef 100644 --- a/docs/extras/code_samples/passport_v1.txt +++ b/docs/extras/code_samples/passport_v1.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, PredictResponse, product +from mindee.v1 import Client, PredictResponse, product # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/workflow_execution.txt b/docs/extras/code_samples/workflow_execution.txt index a825a8bf..69f0297d 100644 --- a/docs/extras/code_samples/workflow_execution.txt +++ b/docs/extras/code_samples/workflow_execution.txt @@ -3,8 +3,8 @@ # pip install mindee # -from mindee import Client, WorkflowResponse -from mindee.parsing.common import ExecutionPriority +from mindee.v1 import Client, WorkflowResponse +from mindee.v1.parsing.common import ExecutionPriority # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/docs/extras/code_samples/workflow_ots_rag.txt b/docs/extras/code_samples/workflow_ots_rag.txt index d6cd5de5..b457ff1b 100644 --- a/docs/extras/code_samples/workflow_ots_rag.txt +++ b/docs/extras/code_samples/workflow_ots_rag.txt @@ -3,7 +3,7 @@ # pip install mindee # -from mindee import Client, product, AsyncPredictResponse +from mindee.v1 import Client, product, AsyncPredictResponse # Init a new client mindee_client = Client(api_key="my-api-key") diff --git a/examples/auto_invoice_splitter_extraction_example.py b/examples/auto_invoice_splitter_extraction_example.py index 714f5032..1275af69 100644 --- a/examples/auto_invoice_splitter_extraction_example.py +++ b/examples/auto_invoice_splitter_extraction_example.py @@ -1,6 +1,6 @@ from mindee.v1.client import Client from mindee.extraction.pdf_extractor import PdfExtractor -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 diff --git a/mindee/__init__.py b/mindee/__init__.py index 09020cd4..227ac5d6 100644 --- a/mindee/__init__.py +++ b/mindee/__init__.py @@ -1,16 +1,17 @@ +from mindee.client_options.polling_options import PollingOptions +from mindee.input import PageOptions from mindee.v1 import product -from mindee.input import LocalResponse, PageOptions, PollingOptions from mindee.v2.parsing.inference.job_response import JobResponse from mindee.v2.product.extraction.params.extraction_parameters import ( ExtractionParameters, ) -from mindee.input.sources import ( - Base64Input, - BytesInput, - FileInput, - PathInput, - UrlInputSource, -) +from mindee.input.base_64_input import Base64Input +from mindee.input.bytes_input import BytesInput +from mindee.input.file_input import FileInput +from mindee.input.path_input import PathInput +from mindee.input.url_input_source import URLInputSource +from mindee.input.local_response import LocalResponse +from mindee.input.local_input_source import LocalInputSource from mindee.v2.product.classification.params.classification_parameters import ( ClassificationParameters, ) @@ -39,6 +40,7 @@ "ExtractionResult", "JobResponse", "LocalResponse", + "LocalInputSource", "OCRParameters", "OCRResponse", "PageOptions", @@ -46,6 +48,6 @@ "PollingOptions", "SplitParameters", "SplitResponse", - "UrlInputSource", + "URLInputSource", "product", ] diff --git a/mindee/client_mixin.py b/mindee/client_mixin.py index 849e3a35..632bb641 100644 --- a/mindee/client_mixin.py +++ b/mindee/client_mixin.py @@ -2,11 +2,11 @@ from typing import BinaryIO, Union from mindee.error import MindeeClientError -from mindee.input.sources.base_64_input import Base64Input -from mindee.input.sources.bytes_input import BytesInput -from mindee.input.sources.file_input import FileInput -from mindee.input.sources.path_input import PathInput -from mindee.input.sources.url_input_source import UrlInputSource +from mindee.input.base_64_input import Base64Input +from mindee.input.bytes_input import BytesInput +from mindee.input.file_input import FileInput +from mindee.input.path_input import PathInput +from mindee.input.url_input_source import URLInputSource class ClientMixin: @@ -97,12 +97,12 @@ def _validate_async_params( @staticmethod def source_from_url( url: str, - ) -> UrlInputSource: + ) -> URLInputSource: """ Load a document from a URL. :params url: Raw byte input """ - return UrlInputSource( + return URLInputSource( url, ) diff --git a/mindee/error/v2/__init__.py b/mindee/client_options/__init__.py similarity index 100% rename from mindee/error/v2/__init__.py rename to mindee/client_options/__init__.py diff --git a/mindee/input/polling_options.py b/mindee/client_options/polling_options.py similarity index 100% rename from mindee/input/polling_options.py rename to mindee/client_options/polling_options.py diff --git a/mindee/commands/cli_parser.py b/mindee/commands/cli_parser.py index 0479e8a2..e08799f9 100644 --- a/mindee/commands/cli_parser.py +++ b/mindee/commands/cli_parser.py @@ -2,11 +2,11 @@ from argparse import ArgumentParser, Namespace from typing import Optional, Type, Union +from mindee import LocalInputSource, URLInputSource from mindee.v1.client import Client, Endpoint from mindee.commands.cli_products import PRODUCTS, CommandConfig from mindee.error.mindee_error import MindeeClientError from mindee.input.page_options import PageOptions -from mindee.input.sources import LocalInputSource, UrlInputSource from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse from mindee.v1.parsing.common import Document, serialize_for_json from mindee.v1.parsing.common.inference import Inference @@ -109,7 +109,7 @@ class MindeeParser: """Mindee client""" document_info: CommandConfig """Config of the document.""" - input_doc: Union[LocalInputSource, UrlInputSource] + input_doc: Union[LocalInputSource, URLInputSource] """Document to be parsed.""" product_class: Type[Inference] """Product to parse.""" @@ -261,7 +261,7 @@ def _set_args(self) -> Namespace: parsed_args = self.parser.parse_args() return parsed_args - def _get_input_doc(self) -> Union[LocalInputSource, UrlInputSource]: + def _get_input_doc(self) -> Union[LocalInputSource, URLInputSource]: """Loads an input document.""" if self.parsed_args.input_type == "file": with open(self.parsed_args.path, "rb", buffering=30) as file_handle: diff --git a/mindee/error/__init__.py b/mindee/error/__init__.py index 38d09642..d694ba37 100644 --- a/mindee/error/__init__.py +++ b/mindee/error/__init__.py @@ -1,11 +1,8 @@ from mindee.error.geometry_error import GeometryError from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import ( - MindeeApiError, - MindeeApiV2Error, MindeeClientError, MindeeError, - MindeeProductError, ) from mindee.error.mindee_http_error import ( MindeeHTTPClientError, @@ -18,10 +15,7 @@ __all__ = [ "MindeeError", - "MindeeApiError", - "MindeeApiV2Error", "MindeeClientError", - "MindeeProductError", "MindeeHTTPError", "MindeeHTTPClientError", "MindeeHTTPServerError", diff --git a/mindee/error/mindee_error.py b/mindee/error/mindee_error.py index 5565a1a1..dd23fe89 100644 --- a/mindee/error/mindee_error.py +++ b/mindee/error/mindee_error.py @@ -10,17 +10,5 @@ class MindeeClientError(MindeeError): """ -class MindeeApiError(MindeeError): - """An exception relating to settings of the MindeeClient.""" - - -class MindeeApiV2Error(MindeeError): - """An exception relating to settings of the MindeeClient V2.""" - - class MindeeSourceError(MindeeError): """An exception relating to document loading.""" - - -class MindeeProductError(MindeeApiError): - """An exception relating to the use of an incorrect product/version.""" diff --git a/mindee/extraction/common/extracted_image.py b/mindee/extraction/common/extracted_image.py index 6fd88743..5c968d8a 100644 --- a/mindee/extraction/common/extracted_image.py +++ b/mindee/extraction/common/extracted_image.py @@ -5,8 +5,8 @@ from PIL import Image from mindee.error.mindee_error import MindeeError -from mindee.input.sources.file_input import FileInput -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.file_input import FileInput +from mindee.input.local_input_source import LocalInputSource from mindee.logger import logger diff --git a/mindee/extraction/common/image_extractor.py b/mindee/extraction/common/image_extractor.py index 08ea11e3..6e1b445e 100644 --- a/mindee/extraction/common/image_extractor.py +++ b/mindee/extraction/common/image_extractor.py @@ -8,8 +8,8 @@ from mindee.extraction.common.extracted_image import ExtractedImage from mindee.geometry.point import Point from mindee.geometry.polygon import Polygon, get_min_max_x, get_min_max_y -from mindee.input.sources.bytes_input import BytesInput -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.bytes_input import BytesInput +from mindee.input.local_input_source import LocalInputSource def attach_image_as_new_file( # type: ignore diff --git a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py index e208238a..7d337724 100644 --- a/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py +++ b/mindee/extraction/multi_receipts_extractor/multi_receipts_extractor.py @@ -5,7 +5,7 @@ from mindee.extraction.common.image_extractor import ( extract_multiple_images_from_source, ) -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.v1.parsing.common.inference import Inference diff --git a/mindee/extraction/pdf_extractor/extracted_pdf.py b/mindee/extraction/pdf_extractor/extracted_pdf.py index 521b9f2b..d55a4a90 100644 --- a/mindee/extraction/pdf_extractor/extracted_pdf.py +++ b/mindee/extraction/pdf_extractor/extracted_pdf.py @@ -4,7 +4,7 @@ import pypdfium2 as pdfium from mindee.error.mindee_error import MindeeError -from mindee.input.sources.bytes_input import BytesInput +from mindee.input.bytes_input import BytesInput class ExtractedPdf: diff --git a/mindee/extraction/pdf_extractor/pdf_extractor.py b/mindee/extraction/pdf_extractor/pdf_extractor.py index 7bc93629..6e83e3fa 100644 --- a/mindee/extraction/pdf_extractor/pdf_extractor.py +++ b/mindee/extraction/pdf_extractor/pdf_extractor.py @@ -7,7 +7,7 @@ from mindee.error.mindee_error import MindeeError from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.v1.product.invoice_splitter import InvoiceSplitterV1InvoicePageGroup diff --git a/mindee/image/__init__.py b/mindee/image/__init__.py new file mode 100644 index 00000000..f562ff76 --- /dev/null +++ b/mindee/image/__init__.py @@ -0,0 +1,3 @@ +from mindee.image.image_compressor import compress_image + +__all__ = ["compress_image"] diff --git a/mindee/image_operations/image_compressor.py b/mindee/image/image_compressor.py similarity index 100% rename from mindee/image_operations/image_compressor.py rename to mindee/image/image_compressor.py diff --git a/mindee/image_operations/__init__.py b/mindee/image_operations/__init__.py deleted file mode 100644 index 4821cf3e..00000000 --- a/mindee/image_operations/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from mindee.image_operations.image_compressor import compress_image - -__all__ = ["compress_image"] diff --git a/mindee/input/__init__.py b/mindee/input/__init__.py index 5ba4687f..5e8d77e8 100644 --- a/mindee/input/__init__.py +++ b/mindee/input/__init__.py @@ -1,13 +1,12 @@ from mindee.input.local_response import LocalResponse from mindee.input.page_options import PageOptions -from mindee.input.polling_options import PollingOptions -from mindee.input.sources.base_64_input import Base64Input -from mindee.input.sources.bytes_input import BytesInput -from mindee.input.sources.file_input import FileInput -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.path_input import PathInput -from mindee.input.sources.url_input_source import UrlInputSource -from mindee.v1.input.workflow_options import WorkflowOptions +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 +from mindee.input.local_input_source import LocalInputSource +from mindee.input.path_input import PathInput +from mindee.input.url_input_source import URLInputSource __all__ = [ "Base64Input", @@ -18,6 +17,5 @@ "PageOptions", "PathInput", "PollingOptions", - "UrlInputSource", - "WorkflowOptions", + "URLInputSource", ] diff --git a/mindee/input/sources/base_64_input.py b/mindee/input/base_64_input.py similarity index 88% rename from mindee/input/sources/base_64_input.py rename to mindee/input/base_64_input.py index 0438b106..136c2024 100644 --- a/mindee/input/sources/base_64_input.py +++ b/mindee/input/base_64_input.py @@ -1,7 +1,7 @@ import base64 import io -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource class Base64Input(LocalInputSource): diff --git a/mindee/input/sources/bytes_input.py b/mindee/input/bytes_input.py similarity index 86% rename from mindee/input/sources/bytes_input.py rename to mindee/input/bytes_input.py index eda582b6..77aed5fc 100644 --- a/mindee/input/sources/bytes_input.py +++ b/mindee/input/bytes_input.py @@ -1,6 +1,6 @@ import io -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource class BytesInput(LocalInputSource): diff --git a/mindee/input/sources/file_input.py b/mindee/input/file_input.py similarity index 88% rename from mindee/input/sources/file_input.py rename to mindee/input/file_input.py index d8ba7ead..2c100667 100644 --- a/mindee/input/sources/file_input.py +++ b/mindee/input/file_input.py @@ -1,7 +1,7 @@ import os from typing import BinaryIO -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource class FileInput(LocalInputSource): diff --git a/mindee/input/sources/local_input_source.py b/mindee/input/local_input_source.py similarity index 99% rename from mindee/input/sources/local_input_source.py rename to mindee/input/local_input_source.py index af3a44cd..add5f7a1 100644 --- a/mindee/input/sources/local_input_source.py +++ b/mindee/input/local_input_source.py @@ -7,7 +7,7 @@ from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import MindeeError, MindeeSourceError -from mindee.image_operations.image_compressor import compress_image +from mindee.image import compress_image from mindee.input.page_options import KEEP_ONLY, REMOVE, PageOptions from mindee.logger import logger from mindee.pdf.pdf_compressor import compress_pdf diff --git a/mindee/input/sources/path_input.py b/mindee/input/path_input.py similarity index 87% rename from mindee/input/sources/path_input.py rename to mindee/input/path_input.py index 255d5fa6..dc977e82 100644 --- a/mindee/input/sources/path_input.py +++ b/mindee/input/path_input.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import Union -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource class PathInput(LocalInputSource): diff --git a/mindee/input/sources/__init__.py b/mindee/input/sources/__init__.py deleted file mode 100644 index 9b4d5bbf..00000000 --- a/mindee/input/sources/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -from mindee.input.sources.base_64_input import Base64Input -from mindee.input.sources.bytes_input import BytesInput -from mindee.input.sources.file_input import FileInput -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.path_input import PathInput -from mindee.input.sources.url_input_source import UrlInputSource - -__all__ = [ - "Base64Input", - "BytesInput", - "FileInput", - "LocalInputSource", - "PathInput", - "UrlInputSource", -] diff --git a/mindee/input/sources/url_input_source.py b/mindee/input/url_input_source.py similarity index 95% rename from mindee/input/sources/url_input_source.py rename to mindee/input/url_input_source.py index 222e1eba..470b6b08 100644 --- a/mindee/input/sources/url_input_source.py +++ b/mindee/input/url_input_source.py @@ -9,11 +9,11 @@ import requests from mindee.error.mindee_error import MindeeSourceError -from mindee.input.sources.bytes_input import BytesInput +from mindee.input.bytes_input import BytesInput from mindee.logger import logger -class UrlInputSource: +class URLInputSource: """A local or distant URL input.""" url: str @@ -56,7 +56,7 @@ def __fetch_file_content( headers["Authorization"] = f"Bearer {token}" auth = None if not username or not password else (username, password) - response = UrlInputSource.__make_request( + response = URLInputSource.__make_request( self.url, auth, headers, 0, max_redirects=max_redirects ) @@ -164,11 +164,11 @@ def __fill_filename(self, filename=None) -> str: :return: A complete filename. """ if filename is None: - filename = UrlInputSource.__extract_filename_from_url(self.url) + filename = URLInputSource.__extract_filename_from_url(self.url) if not filename or not os.path.splitext(filename)[1]: filename = self.__generate_file_name( - extension=UrlInputSource.__get_file_extension(filename) + extension=URLInputSource.__get_file_extension(filename) ) return filename @@ -193,7 +193,7 @@ def __make_request(url, auth, headers, redirects, max_redirects) -> bytes: f"Can't reach URL after {redirects} out of {max_redirects} redirects, " f"aborting operation." ) - return UrlInputSource.__make_request( + return URLInputSource.__make_request( redirects.location, auth, headers, redirects + 1, max_redirects ) diff --git a/mindee/mindee_http/__init__.py b/mindee/mindee_http/__init__.py index e8b4cf3d..a7fe6b01 100644 --- a/mindee/mindee_http/__init__.py +++ b/mindee/mindee_http/__init__.py @@ -1,22 +1,11 @@ -from mindee.mindee_http.base_endpoint import BaseEndpoint -from mindee.mindee_http.endpoint import CustomEndpoint, Endpoint -from mindee.mindee_http.mindee_api import MindeeApi from mindee.mindee_http.response_validation import ( clean_request_json, is_valid_async_response, is_valid_sync_response, ) -from mindee.mindee_http.workflow_endpoint import WorkflowEndpoint -from mindee.mindee_http.workflow_settings import WorkflowSettings __all__ = [ - "BaseEndpoint", - "CustomEndpoint", - "Endpoint", - "MindeeApi", "clean_request_json", "is_valid_async_response", "is_valid_sync_response", - "WorkflowEndpoint", - "WorkflowSettings", ] diff --git a/mindee/parsing/__init__.py b/mindee/parsing/__init__.py index d5ae915f..2607a578 100644 --- a/mindee/parsing/__init__.py +++ b/mindee/parsing/__init__.py @@ -1,3 +1,5 @@ -from mindee.parsing import common +from mindee.parsing import ( + common, +) __all__ = ["common"] diff --git a/mindee/pdf/pdf_compressor.py b/mindee/pdf/pdf_compressor.py index 7a3d5c23..b4e0238a 100644 --- a/mindee/pdf/pdf_compressor.py +++ b/mindee/pdf/pdf_compressor.py @@ -8,7 +8,7 @@ import pypdfium2.raw as pdfium_c from PIL import Image -from mindee.image_operations.image_compressor import compress_image +from mindee.image import compress_image from mindee.pdf.pdf_char_data import PDFCharData from mindee.pdf.pdf_utils import ( extract_text_from_pdf, diff --git a/mindee/v1/client.py b/mindee/v1/client.py index 403c4350..8e7e84c9 100644 --- a/mindee/v1/client.py +++ b/mindee/v1/client.py @@ -4,22 +4,22 @@ from mindee.client_mixin import ClientMixin from mindee.error.mindee_error import MindeeClientError, MindeeError from mindee.error.mindee_http_error import handle_error -from mindee.input import WorkflowOptions from mindee.input.local_response import LocalResponse from mindee.input.page_options import PageOptions -from mindee.input.predict_options import AsyncPredictOptions, PredictOptions -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.url_input_source import UrlInputSource +from mindee.v1.client_options.predict_options import AsyncPredictOptions, PredictOptions +from mindee.input.local_input_source import LocalInputSource +from mindee.input.url_input_source import URLInputSource from mindee.logger import logger -from mindee.mindee_http.endpoint import CustomEndpoint, Endpoint -from mindee.mindee_http.mindee_api import MindeeApi +from mindee.v1.mindee_http.endpoint import CustomEndpoint, Endpoint +from mindee.v1.mindee_http.mindee_api import MindeeAPI from mindee.mindee_http.response_validation import ( clean_request_json, is_valid_async_response, is_valid_sync_response, ) -from mindee.mindee_http.workflow_endpoint import WorkflowEndpoint -from mindee.mindee_http.workflow_settings import WorkflowSettings +from mindee.v1.mindee_http.workflow_endpoint import WorkflowEndpoint +from mindee.v1.mindee_http.workflow_settings import WorkflowSettings +from mindee.v1.client_options.workflow_options import WorkflowOptions from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse from mindee.v1.parsing.common.feedback_response import FeedbackResponse from mindee.v1.parsing.common.inference import Inference @@ -71,7 +71,7 @@ def __init__(self, api_key: str = "") -> None: def parse( self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, page_options: Optional[PageOptions] = None, @@ -132,7 +132,7 @@ def parse( def enqueue( self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, page_options: Optional[PageOptions] = None, @@ -239,7 +239,7 @@ def parse_queued( def execute_workflow( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], workflow_id: str, options: Optional[WorkflowOptions] = None, page_options: Optional[PageOptions] = None, @@ -274,7 +274,7 @@ def execute_workflow( def enqueue_and_parse( # pylint: disable=too-many-locals self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, page_options: Optional[PageOptions] = None, @@ -403,7 +403,7 @@ def send_feedback( def _make_request( self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], endpoint: Endpoint, options: PredictOptions, close_file: bool, @@ -428,7 +428,7 @@ def _make_request( def _predict_async( self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], options: AsyncPredictOptions, endpoint: Optional[Endpoint] = None, close_file: bool = True, @@ -483,7 +483,7 @@ def _get_queued_document( def _send_to_workflow( self, product_class: Type[Inference], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], workflow_id: str, options: WorkflowOptions, ) -> WorkflowResponse: @@ -529,7 +529,7 @@ def _initialize_ots_endpoint(self, product_class: Type[Inference]) -> Endpoint: def _build_endpoint( self, endpoint_name: str, account_name: str, version: str ) -> Endpoint: - api_settings = MindeeApi( + api_settings = MindeeAPI( api_key=self.api_key, endpoint_name=endpoint_name, account_name=account_name, diff --git a/mindee/v1/client_options/__init__.py b/mindee/v1/client_options/__init__.py new file mode 100644 index 00000000..ebc6b0cb --- /dev/null +++ b/mindee/v1/client_options/__init__.py @@ -0,0 +1,4 @@ +from mindee.v1.client_options.workflow_options import WorkflowOptions +from mindee.v1.client_options.predict_options import PredictOptions + +__all__ = ["WorkflowOptions", "PredictOptions"] diff --git a/mindee/input/predict_options.py b/mindee/v1/client_options/predict_options.py similarity index 100% rename from mindee/input/predict_options.py rename to mindee/v1/client_options/predict_options.py diff --git a/mindee/v1/input/workflow_options.py b/mindee/v1/client_options/workflow_options.py similarity index 100% rename from mindee/v1/input/workflow_options.py rename to mindee/v1/client_options/workflow_options.py diff --git a/mindee/v1/error/__init__.py b/mindee/v1/error/__init__.py new file mode 100644 index 00000000..f6a4c0cd --- /dev/null +++ b/mindee/v1/error/__init__.py @@ -0,0 +1,5 @@ +from mindee.v1.error.mindee_api_error import MindeeAPIError + +from mindee.v1.error.mindee_product_error import MindeeProductError + +__all__ = ["MindeeAPIError", "MindeeProductError"] diff --git a/mindee/v1/error/mindee_api_error.py b/mindee/v1/error/mindee_api_error.py new file mode 100644 index 00000000..7fa5a661 --- /dev/null +++ b/mindee/v1/error/mindee_api_error.py @@ -0,0 +1,5 @@ +from mindee.error import MindeeError + + +class MindeeAPIError(MindeeError): + """An exception relating to settings of the MindeeClient.""" diff --git a/mindee/v1/error/mindee_product_error.py b/mindee/v1/error/mindee_product_error.py new file mode 100644 index 00000000..e721ddc6 --- /dev/null +++ b/mindee/v1/error/mindee_product_error.py @@ -0,0 +1,5 @@ +from mindee.v1.error.mindee_api_error import MindeeAPIError + + +class MindeeProductError(MindeeAPIError): + """An exception relating to the use of an incorrect product/version.""" diff --git a/mindee/v1/mindee_http/__init__.py b/mindee/v1/mindee_http/__init__.py new file mode 100644 index 00000000..1abe63b5 --- /dev/null +++ b/mindee/v1/mindee_http/__init__.py @@ -0,0 +1,14 @@ +from mindee.v1.mindee_http.base_endpoint import BaseEndpoint +from mindee.v1.mindee_http.endpoint import CustomEndpoint, Endpoint +from mindee.v1.mindee_http.mindee_api import MindeeAPI +from mindee.v1.mindee_http.workflow_endpoint import WorkflowEndpoint +from mindee.v1.mindee_http.workflow_settings import WorkflowSettings + +__all__ = [ + "BaseEndpoint", + "CustomEndpoint", + "Endpoint", + "MindeeAPI", + "WorkflowEndpoint", + "WorkflowSettings", +] diff --git a/mindee/mindee_http/base_endpoint.py b/mindee/v1/mindee_http/base_endpoint.py similarity index 84% rename from mindee/mindee_http/base_endpoint.py rename to mindee/v1/mindee_http/base_endpoint.py index ad137407..2b636049 100644 --- a/mindee/mindee_http/base_endpoint.py +++ b/mindee/v1/mindee_http/base_endpoint.py @@ -1,6 +1,6 @@ from abc import ABC -from mindee.mindee_http.base_settings import BaseSettings +from mindee.v1.mindee_http.base_settings import BaseSettings class BaseEndpoint(ABC): diff --git a/mindee/mindee_http/base_settings.py b/mindee/v1/mindee_http/base_settings.py similarity index 100% rename from mindee/mindee_http/base_settings.py rename to mindee/v1/mindee_http/base_settings.py diff --git a/mindee/mindee_http/endpoint.py b/mindee/v1/mindee_http/endpoint.py similarity index 95% rename from mindee/mindee_http/endpoint.py rename to mindee/v1/mindee_http/endpoint.py index 1860bd98..0dc62ae4 100644 --- a/mindee/mindee_http/endpoint.py +++ b/mindee/v1/mindee_http/endpoint.py @@ -4,20 +4,20 @@ import requests from requests import Response -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.url_input_source import UrlInputSource -from mindee.mindee_http.base_endpoint import BaseEndpoint -from mindee.mindee_http.mindee_api import MindeeApi +from mindee.input.local_input_source import LocalInputSource +from mindee.input.url_input_source import URLInputSource +from mindee.v1.mindee_http.base_endpoint import BaseEndpoint +from mindee.v1.mindee_http.mindee_api import MindeeAPI from mindee.parsing.common import StringDict class Endpoint(BaseEndpoint): """Generic API endpoint for a product.""" - settings: MindeeApi + settings: MindeeAPI def __init__( - self, url_name: str, owner: str, version: str, settings: MindeeApi + self, url_name: str, owner: str, version: str, settings: MindeeAPI ) -> None: """ Generic API endpoint for a product. @@ -33,7 +33,7 @@ def __init__( def predict_req_post( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, cropper: bool = False, @@ -55,7 +55,7 @@ def predict_req_post( def predict_async_req_post( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, cropper: bool = False, @@ -89,7 +89,7 @@ def predict_async_req_post( def _custom_request( self, route: str, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], include_words: bool = False, close_file: bool = True, cropper: bool = False, @@ -114,7 +114,7 @@ def _custom_request( else: url = f"{self.settings.url_root}/{route}" - if isinstance(input_source, UrlInputSource): + if isinstance(input_source, URLInputSource): data["document"] = input_source.url response = requests.post( url=url, diff --git a/mindee/mindee_http/mindee_api.py b/mindee/v1/mindee_http/mindee_api.py similarity index 81% rename from mindee/mindee_http/mindee_api.py rename to mindee/v1/mindee_http/mindee_api.py index 33bfc7d9..91bac530 100644 --- a/mindee/mindee_http/mindee_api.py +++ b/mindee/v1/mindee_http/mindee_api.py @@ -1,12 +1,12 @@ from dataclasses import dataclass from typing import Optional -from mindee.error.mindee_error import MindeeApiError -from mindee.mindee_http.base_settings import API_KEY_ENV_NAME, BaseSettings +from mindee.v1.error.mindee_api_error import MindeeAPIError +from mindee.v1.mindee_http.base_settings import API_KEY_ENV_NAME, BaseSettings @dataclass -class MindeeApi(BaseSettings): +class MindeeAPI(BaseSettings): """Settings class relating to API requests.""" def __init__( @@ -18,7 +18,7 @@ def __init__( ): super().__init__(api_key) if not self.api_key or len(self.api_key) == 0: - raise MindeeApiError( + raise MindeeAPIError( ( f"Missing API key for '{endpoint_name} v{version}' (belonging to {account_name})," " check your Client configuration.\n" diff --git a/mindee/mindee_http/workflow_endpoint.py b/mindee/v1/mindee_http/workflow_endpoint.py similarity index 80% rename from mindee/mindee_http/workflow_endpoint.py rename to mindee/v1/mindee_http/workflow_endpoint.py index 7473192d..b8a19f7a 100644 --- a/mindee/mindee_http/workflow_endpoint.py +++ b/mindee/v1/mindee_http/workflow_endpoint.py @@ -2,11 +2,11 @@ import requests -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.url_input_source import UrlInputSource -from mindee.v1.input.workflow_options import WorkflowOptions -from mindee.mindee_http.base_endpoint import BaseEndpoint -from mindee.mindee_http.workflow_settings import WorkflowSettings +from mindee.input.local_input_source import LocalInputSource +from mindee.input.url_input_source import URLInputSource +from mindee.v1.client_options.workflow_options import WorkflowOptions +from mindee.v1.mindee_http.base_endpoint import BaseEndpoint +from mindee.v1.mindee_http.workflow_settings import WorkflowSettings class WorkflowEndpoint(BaseEndpoint): @@ -24,7 +24,7 @@ def __init__(self, settings: WorkflowSettings) -> None: def workflow_execution_post( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], options: WorkflowOptions, ): """ @@ -50,7 +50,7 @@ def workflow_execution_post( if options.rag: params["rag"] = "true" - if isinstance(input_source, UrlInputSource): + if isinstance(input_source, URLInputSource): data["document"] = input_source.url response = requests.post( self.settings.url_root, diff --git a/mindee/mindee_http/workflow_settings.py b/mindee/v1/mindee_http/workflow_settings.py similarity index 80% rename from mindee/mindee_http/workflow_settings.py rename to mindee/v1/mindee_http/workflow_settings.py index 74668920..bd272159 100644 --- a/mindee/mindee_http/workflow_settings.py +++ b/mindee/v1/mindee_http/workflow_settings.py @@ -1,8 +1,8 @@ from dataclasses import dataclass from typing import Optional -from mindee.error.mindee_error import MindeeApiError -from mindee.mindee_http.base_settings import API_KEY_ENV_NAME, BaseSettings +from mindee.v1.error.mindee_api_error import MindeeAPIError +from mindee.v1.mindee_http.base_settings import API_KEY_ENV_NAME, BaseSettings @dataclass @@ -16,7 +16,7 @@ def __init__( ): super().__init__(api_key) if not self.api_key or len(self.api_key) == 0: - raise MindeeApiError( + raise MindeeAPIError( ( f"Missing API key for workflow '{workflow_id}'," " check your Client configuration.\n" diff --git a/mindee/v1/parsing/__init__.py b/mindee/v1/parsing/__init__.py index e69de29b..52980eef 100644 --- a/mindee/v1/parsing/__init__.py +++ b/mindee/v1/parsing/__init__.py @@ -0,0 +1,8 @@ +from mindee.v1.parsing import ( + common, + custom, + generated, + standard, +) + +__all__ = ["common", "custom", "generated", "standard"] diff --git a/mindee/v2/client.py b/mindee/v2/client.py index 635e1d40..304c149b 100644 --- a/mindee/v2/client.py +++ b/mindee/v2/client.py @@ -4,14 +4,14 @@ from mindee.client_mixin import ClientMixin from mindee.error.mindee_error import MindeeError -from mindee.error.v2.mindee_http_error_v2 import handle_error_v2 -from mindee.input import UrlInputSource -from mindee.v2.input.base_parameters import BaseParameters -from mindee.input.polling_options import PollingOptions -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.v2.error.mindee_http_error_v2 import handle_error_v2 +from mindee.input import URLInputSource +from mindee.v2.client_options.base_parameters import BaseParameters +from mindee.client_options.polling_options import PollingOptions +from mindee.input.local_input_source import LocalInputSource from mindee.logger import logger -from mindee.mindee_http.mindee_api_v2 import MindeeApiV2 -from mindee.mindee_http.response_validation_v2 import ( +from mindee.v2.mindee_http.mindee_api_v2 import MindeeAPIV2 +from mindee.v2.mindee_http.response_validation_v2 import ( is_valid_get_response, is_valid_post_response, ) @@ -31,7 +31,7 @@ class Client(ClientMixin): """ api_key: Optional[str] - mindee_api: MindeeApiV2 + mindee_api: MindeeAPIV2 def __init__(self, api_key: Optional[str] = None) -> None: """ @@ -40,11 +40,11 @@ def __init__(self, api_key: Optional[str] = None) -> None: :params api_key: Your API key for all endpoints """ self.api_key = api_key - self.mindee_api = MindeeApiV2(api_key) + self.mindee_api = MindeeAPIV2(api_key) def enqueue_inference( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], params: BaseParameters, disable_redundant_warnings: bool = False, ) -> JobResponse: @@ -59,7 +59,7 @@ def enqueue_inference( def enqueue( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], params: BaseParameters, ) -> JobResponse: """ @@ -131,7 +131,7 @@ def get_result( def enqueue_and_get_result( self, response_type: Type[TypeBaseResponse], - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], params: BaseParameters, ) -> TypeBaseResponse: """ diff --git a/mindee/v1/input/__init__.py b/mindee/v2/client_options/__init__.py similarity index 100% rename from mindee/v1/input/__init__.py rename to mindee/v2/client_options/__init__.py diff --git a/mindee/v2/input/base_parameters.py b/mindee/v2/client_options/base_parameters.py similarity index 95% rename from mindee/v2/input/base_parameters.py rename to mindee/v2/client_options/base_parameters.py index 77e5bc76..45ce3162 100644 --- a/mindee/v2/input/base_parameters.py +++ b/mindee/v2/client_options/base_parameters.py @@ -2,7 +2,7 @@ from dataclasses import dataclass, field from typing import Dict, Optional, List, Union -from mindee.input.polling_options import PollingOptions +from mindee.client_options.polling_options import PollingOptions @dataclass diff --git a/mindee/v2/commands/cli_parser.py b/mindee/v2/commands/cli_parser.py index 11629697..550a8723 100644 --- a/mindee/v2/commands/cli_parser.py +++ b/mindee/v2/commands/cli_parser.py @@ -12,10 +12,10 @@ CropParameters, SplitParameters, ) +from mindee.input import PathInput, URLInputSource from mindee.v2.client import Client -from mindee.input.sources import PathInput, UrlInputSource -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters from mindee.v2.parsing.inference.base_response import BaseResponse @@ -83,7 +83,7 @@ class MindeeParser: """Stores attributes relating to parsing.""" client: Client """Mindee client""" - input_source: Union[PathInput, UrlInputSource] + input_source: Union[PathInput, URLInputSource] """Document to be parsed.""" def __init__( @@ -130,9 +130,9 @@ def _set_args(self) -> Namespace: parsed_args = self.parser.parse_args() return parsed_args - def _get_input_source(self) -> Union[PathInput, UrlInputSource]: + def _get_input_source(self) -> Union[PathInput, URLInputSource]: """Loads an input document.""" if self.parsed_args.path.lower().startswith("http"): - return UrlInputSource(self.parsed_args.path) + return URLInputSource(self.parsed_args.path) return PathInput(self.parsed_args.path) diff --git a/mindee/v2/error/__init__.py b/mindee/v2/error/__init__.py new file mode 100644 index 00000000..13a5346c --- /dev/null +++ b/mindee/v2/error/__init__.py @@ -0,0 +1,4 @@ +from mindee.v2.error.mindee_api_v2_error import MindeeAPIV2Error +from mindee.v2.error.mindee_http_error_v2 import MindeeHTTPErrorV2 + +__all__ = ["MindeeAPIV2Error", "MindeeHTTPErrorV2"] diff --git a/mindee/v2/error/mindee_api_v2_error.py b/mindee/v2/error/mindee_api_v2_error.py new file mode 100644 index 00000000..61d0bb1e --- /dev/null +++ b/mindee/v2/error/mindee_api_v2_error.py @@ -0,0 +1,5 @@ +from mindee.error import MindeeError + + +class MindeeAPIV2Error(MindeeError): + """An exception relating to settings of the MindeeClient V2.""" diff --git a/mindee/error/v2/mindee_http_error_v2.py b/mindee/v2/error/mindee_http_error_v2.py similarity index 100% rename from mindee/error/v2/mindee_http_error_v2.py rename to mindee/v2/error/mindee_http_error_v2.py diff --git a/mindee/v2/file_operations/crop.py b/mindee/v2/file_operations/crop.py index 96116f50..c6fc3bb7 100644 --- a/mindee/v2/file_operations/crop.py +++ b/mindee/v2/file_operations/crop.py @@ -3,7 +3,7 @@ from mindee.error import MindeeError from mindee.extraction import ExtractedImage, extract_multiple_images_from_source from mindee.geometry import Point, Polygon -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.v2.parsing.inference.field import FieldLocation from mindee.v2.file_operations.crop_files import CropFiles from mindee.v2.product.crop.crop_box import CropBox diff --git a/mindee/v2/file_operations/split.py b/mindee/v2/file_operations/split.py index 041538c1..74a49b81 100644 --- a/mindee/v2/file_operations/split.py +++ b/mindee/v2/file_operations/split.py @@ -3,7 +3,7 @@ from mindee.error import MindeeError from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf from mindee.extraction.pdf_extractor.pdf_extractor import PdfExtractor -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.v2.file_operations.split_files import SplitFiles diff --git a/mindee/v2/input/__init__.py b/mindee/v2/mindee_http/__init__.py similarity index 100% rename from mindee/v2/input/__init__.py rename to mindee/v2/mindee_http/__init__.py diff --git a/mindee/mindee_http/mindee_api_v2.py b/mindee/v2/mindee_http/mindee_api_v2.py similarity index 88% rename from mindee/mindee_http/mindee_api_v2.py rename to mindee/v2/mindee_http/mindee_api_v2.py index cc79ba3b..b8a6d76b 100644 --- a/mindee/mindee_http/mindee_api_v2.py +++ b/mindee/v2/mindee_http/mindee_api_v2.py @@ -3,12 +3,12 @@ import requests -from mindee.error.mindee_error import MindeeApiV2Error -from mindee.v2.input.base_parameters import BaseParameters -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.url_input_source import UrlInputSource +from mindee.v2.error.mindee_api_v2_error import MindeeAPIV2Error +from mindee.v2.client_options.base_parameters import BaseParameters +from mindee.input.local_input_source import LocalInputSource +from mindee.input.url_input_source import URLInputSource from mindee.logger import logger -from mindee.mindee_http.base_settings import USER_AGENT +from mindee.v1.mindee_http.base_settings import USER_AGENT from mindee.mindee_http.settings_mixin import SettingsMixin API_KEY_V2_ENV_NAME = "MINDEE_V2_API_KEY" @@ -21,7 +21,7 @@ TIMEOUT_DEFAULT = 120 -class MindeeApiV2(SettingsMixin): +class MindeeAPIV2(SettingsMixin): """Settings class relating to API V2 requests.""" url_root: str @@ -42,7 +42,7 @@ def __init__( self.set_base_url(BASE_URL_DEFAULT) self.set_from_env() if not self.api_key: - raise MindeeApiV2Error( + raise MindeeAPIV2Error( ( f"Missing API key," " check your Client configuration.\n" @@ -74,7 +74,7 @@ def set_from_env(self) -> None: def req_post_inference_enqueue( self, - input_source: Union[LocalInputSource, UrlInputSource], + input_source: Union[LocalInputSource, URLInputSource], params: BaseParameters, slug: str, ) -> requests.Response: @@ -98,7 +98,7 @@ def req_post_inference_enqueue( data=data, timeout=self.request_timeout, ) - elif isinstance(input_source, UrlInputSource): + elif isinstance(input_source, URLInputSource): data["url"] = input_source.url response = requests.post( url=url, @@ -107,7 +107,7 @@ def req_post_inference_enqueue( timeout=self.request_timeout, ) else: - raise MindeeApiV2Error("Invalid input source.") + raise MindeeAPIV2Error("Invalid input source.") return response def req_get_job(self, job_id: str) -> requests.Response: diff --git a/mindee/mindee_http/response_validation_v2.py b/mindee/v2/mindee_http/response_validation_v2.py similarity index 100% rename from mindee/mindee_http/response_validation_v2.py rename to mindee/v2/mindee_http/response_validation_v2.py diff --git a/mindee/v2/parsing/inference/field/dynamic_field.py b/mindee/v2/parsing/inference/field/dynamic_field.py index 24e27f01..58aba6b1 100644 --- a/mindee/v2/parsing/inference/field/dynamic_field.py +++ b/mindee/v2/parsing/inference/field/dynamic_field.py @@ -2,7 +2,7 @@ from importlib import import_module from typing import TYPE_CHECKING, Union -from mindee.error import MindeeApiV2Error +from mindee.v2.error.mindee_api_v2_error import MindeeAPIV2Error from mindee.parsing.common import StringDict if TYPE_CHECKING: @@ -55,7 +55,7 @@ def get_field_type( field_file = import_module("mindee.v2.parsing.inference.field.object_field") field_class = getattr(field_file, FieldType.OBJECT.value) else: - raise MindeeApiV2Error(f"Unrecognized field type in {raw_response}.") + raise MindeeAPIV2Error(f"Unrecognized field type in {raw_response}.") return field_class(raw_response, indent_level) - raise MindeeApiV2Error(f"Unrecognized field format {raw_response}.") + raise MindeeAPIV2Error(f"Unrecognized field format {raw_response}.") diff --git a/mindee/v2/product/classification/params/classification_parameters.py b/mindee/v2/product/classification/params/classification_parameters.py index 86194d80..8a69975f 100644 --- a/mindee/v2/product/classification/params/classification_parameters.py +++ b/mindee/v2/product/classification/params/classification_parameters.py @@ -1,4 +1,4 @@ -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters class ClassificationParameters(BaseParameters): diff --git a/mindee/v2/product/crop/crop_box.py b/mindee/v2/product/crop/crop_box.py index a6f382b5..8e836a3b 100644 --- a/mindee/v2/product/crop/crop_box.py +++ b/mindee/v2/product/crop/crop_box.py @@ -1,7 +1,7 @@ from typing import Optional from mindee.extraction import ExtractedImage, extract_multiple_images_from_source -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.parsing.common import StringDict from mindee.v2.parsing.inference.field import FieldLocation from mindee.v2.product.extraction.extraction_response import ExtractionResponse diff --git a/mindee/v2/product/crop/crop_response.py b/mindee/v2/product/crop/crop_response.py index 75e4773c..82656e31 100644 --- a/mindee/v2/product/crop/crop_response.py +++ b/mindee/v2/product/crop/crop_response.py @@ -1,4 +1,4 @@ -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.parsing.common import StringDict from mindee.v2.file_operations.crop_files import CropFiles from mindee.v2.parsing.inference.base_response import BaseResponse diff --git a/mindee/v2/product/crop/params/crop_parameters.py b/mindee/v2/product/crop/params/crop_parameters.py index a48b86c5..e46d17c9 100644 --- a/mindee/v2/product/crop/params/crop_parameters.py +++ b/mindee/v2/product/crop/params/crop_parameters.py @@ -1,4 +1,4 @@ -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters class CropParameters(BaseParameters): diff --git a/mindee/v2/product/extraction/params/extraction_parameters.py b/mindee/v2/product/extraction/params/extraction_parameters.py index 8a4cd98f..1700ffde 100644 --- a/mindee/v2/product/extraction/params/extraction_parameters.py +++ b/mindee/v2/product/extraction/params/extraction_parameters.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from typing import Dict, List, Optional, Union -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters from mindee.v2.product.extraction.params.data_schema import DataSchema diff --git a/mindee/v2/product/ocr/params/ocr_parameters.py b/mindee/v2/product/ocr/params/ocr_parameters.py index b976760d..5e8bb449 100644 --- a/mindee/v2/product/ocr/params/ocr_parameters.py +++ b/mindee/v2/product/ocr/params/ocr_parameters.py @@ -1,4 +1,4 @@ -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters class OCRParameters(BaseParameters): diff --git a/mindee/v2/product/split/params/split_parameters.py b/mindee/v2/product/split/params/split_parameters.py index ec57afea..0b9036b2 100644 --- a/mindee/v2/product/split/params/split_parameters.py +++ b/mindee/v2/product/split/params/split_parameters.py @@ -1,4 +1,4 @@ -from mindee.v2.input.base_parameters import BaseParameters +from mindee.v2.client_options.base_parameters import BaseParameters class SplitParameters(BaseParameters): diff --git a/mindee/v2/product/split/split_range.py b/mindee/v2/product/split/split_range.py index b2f95a67..090da4ac 100644 --- a/mindee/v2/product/split/split_range.py +++ b/mindee/v2/product/split/split_range.py @@ -2,7 +2,7 @@ from mindee.v2.product.extraction.extraction_response import ExtractionResponse from mindee.extraction.pdf_extractor.extracted_pdf import ExtractedPdf -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.parsing.common import StringDict from mindee.v2.file_operations.split import extract_single_split diff --git a/mindee/v2/product/split/split_response.py b/mindee/v2/product/split/split_response.py index 5cae909c..7f2f6073 100644 --- a/mindee/v2/product/split/split_response.py +++ b/mindee/v2/product/split/split_response.py @@ -1,4 +1,4 @@ -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.parsing.common import StringDict from mindee.v2.parsing.inference.base_response import BaseResponse from mindee.v2.file_operations.split_files import SplitFiles diff --git a/tests/input/test_apply_page_options.py b/tests/input/test_apply_page_options.py index 6640e544..cc1f6af0 100644 --- a/tests/input/test_apply_page_options.py +++ b/tests/input/test_apply_page_options.py @@ -5,7 +5,7 @@ from mindee.error.mindee_error import MindeeError from mindee.input.page_options import KEEP_ONLY, REMOVE, PageOptions -from mindee.input.sources import ( +from mindee.input import ( Base64Input, BytesInput, FileInput, diff --git a/tests/input/test_compression.py b/tests/input/test_compression.py index fde5d064..90a6ef47 100644 --- a/tests/input/test_compression.py +++ b/tests/input/test_compression.py @@ -5,8 +5,8 @@ import pytest from PIL import Image -from mindee.image_operations.image_compressor import compress_image -from mindee.input.sources import PathInput +from mindee.image import compress_image +from mindee.input import PathInput from mindee.pdf.pdf_compressor import compress_pdf from mindee.pdf.pdf_utils import extract_text_from_pdf from tests.utils import ( diff --git a/tests/input/test_inputs.py b/tests/input/test_inputs.py index b9e38e1a..ece9efa3 100644 --- a/tests/input/test_inputs.py +++ b/tests/input/test_inputs.py @@ -4,13 +4,13 @@ from mindee.error.mimetype_error import MimeTypeError from mindee.error.mindee_error import MindeeSourceError -from mindee.input.sources import ( +from mindee.input import ( Base64Input, BytesInput, FileInput, LocalInputSource, PathInput, - UrlInputSource, + URLInputSource, ) from tests.utils import FILE_TYPES_DIR @@ -44,7 +44,7 @@ def test_pdf_input_from_path(filename, page_count): def test_pdf_input_from_url(): with pytest.raises(MindeeSourceError): - UrlInputSource(url="http://example.com/invoice.pdf") + URLInputSource(url="http://example.com/invoice.pdf") TEST_IMAGES = ( diff --git a/tests/utils.py b/tests/utils.py index 8de00d8f..ec42084c 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -2,7 +2,7 @@ from difflib import SequenceMatcher from pathlib import Path -from mindee.mindee_http.base_settings import ( +from mindee.v1.mindee_http.base_settings import ( API_KEY_ENV_NAME, BASE_URL_ENV_NAME, REQUEST_TIMEOUT_ENV_NAME, diff --git a/tests/v1/api/test_async_response.py b/tests/v1/api/test_async_response.py index 139034b9..efd0f6ca 100644 --- a/tests/v1/api/test_async_response.py +++ b/tests/v1/api/test_async_response.py @@ -4,7 +4,7 @@ import requests from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.mindee_http.response_validation import is_valid_async_response from mindee.v1.parsing.common import RequestStatus from mindee.v1.parsing.common.async_predict_response import AsyncPredictResponse diff --git a/tests/v1/extraction/test_image_extractor.py b/tests/v1/extraction/test_image_extractor.py index 77223152..72981421 100644 --- a/tests/v1/extraction/test_image_extractor.py +++ b/tests/v1/extraction/test_image_extractor.py @@ -4,7 +4,7 @@ from PIL import Image from mindee.extraction.common.image_extractor import extract_multiple_images_from_source -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v1.product.barcode_reader import BarcodeReaderV1 from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v1/extraction/test_invoice_splitter_auto_extraction.py b/tests/v1/extraction/test_invoice_splitter_auto_extraction.py index 640ccc12..b59ee51a 100644 --- a/tests/v1/extraction/test_invoice_splitter_auto_extraction.py +++ b/tests/v1/extraction/test_invoice_splitter_auto_extraction.py @@ -4,7 +4,7 @@ from mindee.v1.client import Client from mindee.extraction.pdf_extractor.pdf_extractor import PdfExtractor -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v1.parsing.common import Document from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 diff --git a/tests/v1/extraction/test_multi_receipts_extractor.py b/tests/v1/extraction/test_multi_receipts_extractor.py index bdc2ba5e..af1124d6 100644 --- a/tests/v1/extraction/test_multi_receipts_extractor.py +++ b/tests/v1/extraction/test_multi_receipts_extractor.py @@ -6,7 +6,7 @@ from mindee.extraction.multi_receipts_extractor.multi_receipts_extractor import ( extract_receipts, ) -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v1.product.multi_receipts_detector.multi_receipts_detector_v1 import ( MultiReceiptsDetectorV1, ) diff --git a/tests/v1/extraction/test_pdf_extractor.py b/tests/v1/extraction/test_pdf_extractor.py index 96e0987a..04197e95 100644 --- a/tests/v1/extraction/test_pdf_extractor.py +++ b/tests/v1/extraction/test_pdf_extractor.py @@ -3,7 +3,7 @@ from mindee.v1.client import Client from mindee.extraction.pdf_extractor.pdf_extractor import PdfExtractor from mindee.input.local_response import LocalResponse -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v1.product.invoice_splitter.invoice_splitter_v1 import InvoiceSplitterV1 from mindee.v1.product.invoice_splitter.invoice_splitter_v1_document import ( InvoiceSplitterV1Document, diff --git a/tests/v1/mindee_http/test_error.py b/tests/v1/mindee_http/test_error.py index b929122f..1115dc84 100644 --- a/tests/v1/mindee_http/test_error.py +++ b/tests/v1/mindee_http/test_error.py @@ -9,7 +9,7 @@ MindeeHTTPServerError, handle_error, ) -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from tests.utils import FILE_TYPES_DIR, clear_envvars, dummy_envvars, V1_ERROR_DATA_DIR diff --git a/tests/v1/test_client.py b/tests/v1/test_client.py index 62f2ffb6..6dc3f5db 100644 --- a/tests/v1/test_client.py +++ b/tests/v1/test_client.py @@ -12,7 +12,7 @@ from mindee.error.mindee_error import MindeeClientError, MindeeError from mindee.error.mindee_http_error import MindeeHTTPError from mindee.input.local_response import LocalResponse -from mindee.input.sources.local_input_source import LocalInputSource +from mindee.input.local_input_source import LocalInputSource from mindee.v1.product import MultiReceiptsDetectorV1 from mindee.v1.product.international_id import InternationalIdV2 from mindee.v1.product.invoice.invoice_v4 import InvoiceV4 diff --git a/tests/v1/workflows/test_workflow_integration.py b/tests/v1/workflows/test_workflow_integration.py index 954ad7c6..9e2807e6 100644 --- a/tests/v1/workflows/test_workflow_integration.py +++ b/tests/v1/workflows/test_workflow_integration.py @@ -4,7 +4,7 @@ import pytest from mindee.v1.client import Client -from mindee.input import WorkflowOptions +from mindee.v1.client_options.workflow_options import WorkflowOptions from mindee.v1.parsing.common import ExecutionPriority from mindee.v1.product import FinancialDocumentV1, GeneratedV1 from tests.utils import V1_PRODUCT_DATA_DIR diff --git a/tests/v2/file_operations/test_crop_operation.py b/tests/v2/file_operations/test_crop_operation.py index 24fb928c..a92380d3 100644 --- a/tests/v2/file_operations/test_crop_operation.py +++ b/tests/v2/file_operations/test_crop_operation.py @@ -4,7 +4,7 @@ from PIL import Image from mindee.v2.file_operations.crop import extract_crops -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v2.product.crop.crop_response import ( CropResponse, ) diff --git a/tests/v2/file_operations/test_crop_operation_integration.py b/tests/v2/file_operations/test_crop_operation_integration.py index b0c4a873..c537efe1 100644 --- a/tests/v2/file_operations/test_crop_operation_integration.py +++ b/tests/v2/file_operations/test_crop_operation_integration.py @@ -9,8 +9,8 @@ CropParameters, CropResponse, ) -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from mindee.v2.file_operations.crop import extract_crops from tests.utils import OUTPUT_DIR, V2_PRODUCT_DATA_DIR, cleanup_output_files diff --git a/tests/v2/file_operations/test_split_operation.py b/tests/v2/file_operations/test_split_operation.py index 60e481d4..cce9707e 100644 --- a/tests/v2/file_operations/test_split_operation.py +++ b/tests/v2/file_operations/test_split_operation.py @@ -2,7 +2,7 @@ import pytest -from mindee.input.sources.path_input import PathInput +from mindee.input.path_input import PathInput from mindee.v2.product.split.split_response import ( SplitResponse, ) diff --git a/tests/v2/file_operations/test_split_operation_integration.py b/tests/v2/file_operations/test_split_operation_integration.py index cc9ac43c..dfbd5db0 100644 --- a/tests/v2/file_operations/test_split_operation_integration.py +++ b/tests/v2/file_operations/test_split_operation_integration.py @@ -8,8 +8,8 @@ SplitParameters, SplitResponse, ) -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from tests.utils import OUTPUT_DIR, V2_PRODUCT_DATA_DIR, cleanup_output_files diff --git a/tests/v2/product/classification/test_classification_integration.py b/tests/v2/product/classification/test_classification_integration.py index 1c749bb8..ab7aeac8 100644 --- a/tests/v2/product/classification/test_classification_integration.py +++ b/tests/v2/product/classification/test_classification_integration.py @@ -2,8 +2,8 @@ import pytest -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from mindee.v2 import ClassificationParameters, ClassificationResponse from tests.utils import V2_PRODUCT_DATA_DIR diff --git a/tests/v2/product/crop/test_crop_integration.py b/tests/v2/product/crop/test_crop_integration.py index db707cc9..bdbd3ab5 100644 --- a/tests/v2/product/crop/test_crop_integration.py +++ b/tests/v2/product/crop/test_crop_integration.py @@ -2,8 +2,8 @@ import pytest -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from mindee.v2 import CropParameters, CropResponse from tests.utils import V2_PRODUCT_DATA_DIR diff --git a/tests/v2/product/ocr/test_ocr_integration.py b/tests/v2/product/ocr/test_ocr_integration.py index b9f94666..ebd6d208 100644 --- a/tests/v2/product/ocr/test_ocr_integration.py +++ b/tests/v2/product/ocr/test_ocr_integration.py @@ -2,8 +2,8 @@ import pytest -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from mindee.v2 import OCRParameters, OCRResponse from mindee.v2.product.ocr import OCRInference, OCRResult from tests.utils import V2_PRODUCT_DATA_DIR diff --git a/tests/v2/product/split/test_split_integration.py b/tests/v2/product/split/test_split_integration.py index daf2f2ef..1819249a 100644 --- a/tests/v2/product/split/test_split_integration.py +++ b/tests/v2/product/split/test_split_integration.py @@ -2,8 +2,8 @@ import pytest -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput +from mindee.v2.client import Client +from mindee.input.path_input import PathInput from mindee.v2 import SplitParameters, SplitResponse from tests.utils import V2_PRODUCT_DATA_DIR diff --git a/tests/v2/test_client.py b/tests/v2/test_client.py index 1ccef471..1fbe533a 100644 --- a/tests/v2/test_client.py +++ b/tests/v2/test_client.py @@ -5,11 +5,12 @@ from mindee import ExtractionParameters, ExtractionResponse, LocalResponse from mindee.v2.client import Client -from mindee.error.mindee_error import MindeeApiV2Error, MindeeError -from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 -from mindee.input.sources.local_input_source import LocalInputSource -from mindee.input.sources.path_input import PathInput -from mindee.mindee_http.base_settings import USER_AGENT +from mindee.error.mindee_error import MindeeError +from mindee.v2.error.mindee_api_v2_error import MindeeAPIV2Error +from mindee.v2.error.mindee_http_error_v2 import MindeeHTTPErrorV2 +from mindee.input.local_input_source import LocalInputSource +from mindee.input.path_input import PathInput +from mindee.v1.mindee_http.base_settings import USER_AGENT from mindee.v2.product.extraction.extraction_inference import ExtractionInference from mindee.v2.parsing.inference.job import Job from mindee.v2.parsing.inference.job_response import JobResponse @@ -86,19 +87,19 @@ def _fake_ok_get_inference(*args, **kwargs): return _FakeOkGetInferenceResp() monkeypatch.setattr( - "mindee.mindee_http.mindee_api_v2.MindeeApiV2.req_post_inference_enqueue", + "mindee.v2.mindee_http.mindee_api_v2.MindeeAPIV2.req_post_inference_enqueue", _fake_error_post_inference_enqueue, raising=True, ) monkeypatch.setattr( - "mindee.mindee_http.mindee_api_v2.MindeeApiV2.req_get_job", + "mindee.v2.mindee_http.mindee_api_v2.MindeeAPIV2.req_get_job", _fake_ok_get_job, raising=True, ) monkeypatch.setattr( - "mindee.mindee_http.mindee_api_v2.MindeeApiV2.req_get_inference", + "mindee.v2.mindee_http.mindee_api_v2.MindeeAPIV2.req_get_inference", _fake_ok_get_inference, raising=True, ) @@ -114,7 +115,7 @@ def env_no_key(monkeypatch): @pytest.mark.v2 def test_parse_path_without_token(env_no_key): - with pytest.raises(MindeeApiV2Error): + with pytest.raises(MindeeAPIV2Error): Client() diff --git a/tests/v2/test_client_integration.py b/tests/v2/test_client_integration.py index 226b1e3b..7892f697 100644 --- a/tests/v2/test_client_integration.py +++ b/tests/v2/test_client_integration.py @@ -4,10 +4,10 @@ import pytest from mindee import ExtractionParameters -from mindee.v1.client import Client -from mindee.input.sources.path_input import PathInput -from mindee.input.sources.url_input_source import UrlInputSource -from mindee.error.v2.mindee_http_error_v2 import MindeeHTTPErrorV2 +from mindee.v2.client import Client +from mindee.input.path_input import PathInput +from mindee.input.url_input_source import URLInputSource +from mindee.v2.error.mindee_http_error_v2 import MindeeHTTPErrorV2 from mindee.v2.parsing import InferenceActiveOptions from mindee.v2.product.extraction.extraction_response import ExtractionResponse from tests.utils import FILE_TYPES_DIR, V2_PRODUCT_DATA_DIR @@ -258,7 +258,7 @@ def test_blank_url_input_source_must_succeed( """ url = os.getenv("MINDEE_V2_SE_TESTS_BLANK_PDF_URL") - input_source = UrlInputSource(url) + input_source = URLInputSource(url) params = ExtractionParameters( model_id=findoc_model_id, rag=False,