diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index a55c1956..c76d52fe 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,7 +1,7 @@ # # Publish Documentation to GitHub pages. # -name: Documentation +name: Publish Documentation on: release: diff --git a/.github/workflows/license.yml b/.github/workflows/license.yml index 659c744a..8a272f4a 100644 --- a/.github/workflows/license.yml +++ b/.github/workflows/license.yml @@ -26,7 +26,7 @@ jobs: uses: actions/cache@v3 with: path: ~/.cache/pip - key: ${{ runner.os }}-lic-${{ hashFiles('**/setup.py') }} + key: ${{ runner.os }}-lic-${{ hashFiles('**/setup.cfg') }} restore-keys: | ${{ runner.os }}-lic- diff --git a/.github/workflows/test-code-samples.yml b/.github/workflows/test-code-samples.yml new file mode 100644 index 00000000..01761ebe --- /dev/null +++ b/.github/workflows/test-code-samples.yml @@ -0,0 +1,46 @@ +name: Test Code Samples + +on: + pull_request: + schedule: + - cron: '0 0 * * *' + + # Allow running this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + test: + name: Run Tests + timeout-minutes: 30 + strategy: + matrix: + python-version: + - "3.7" + - "3.11" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Cache dependencies + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-samples-${{ hashFiles('**/setup.cfg') }} + restore-keys: | + ${{ runner.os }}-samples- + + - name: Install dependencies + run: | + python -m pip install pip + pip install -e . + + - name: Tests code samples + run: | + ./tests/test_code_samples.sh ${{ secrets.MINDEE_ACCOUNT_SE_TESTS }} ${{ secrets.MINDEE_ENDPOINT_SE_TESTS }} ${{ secrets.MINDEE_API_KEY_SE_TESTS }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 65cb16cc..336167cf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: uses: actions/cache@v3 with: path: ~/.cache/pip - key: ${{ runner.os }}-test-${{ hashFiles('**/setup.py') }} + key: ${{ runner.os }}-test-${{ hashFiles('**/setup.cfg') }} restore-keys: | ${{ runner.os }}-test- diff --git a/.gitignore b/.gitignore index 81d982b3..8e35e2ee 100644 --- a/.gitignore +++ b/.gitignore @@ -136,3 +136,4 @@ dmypy.json # Temp files *.swp *-swp +_test.py diff --git a/docs/extras/code_samples/cropper_v1.txt b/docs/extras/code_samples/cropper_v1.txt new file mode 100644 index 00000000..0dcdb3de --- /dev/null +++ b/docs/extras/code_samples/cropper_v1.txt @@ -0,0 +1,13 @@ +from mindee import Client, documents + +# Init a new client +mindee_client = Client(api_key="my-api-key") + +# Load a file from disk +input_doc = mindee_client.doc_from_path("/path/to/the/file.ext") + +# Parse the Cropper by passing the appropriate type +result = input_doc.parse(documents.TypeCropperV1) + +# Print a brief summary of the parsed data +print(result.document) diff --git a/docs/extras/code_samples/custom_v1.txt b/docs/extras/code_samples/custom_v1.txt index e671fad6..f8faf738 100644 --- a/docs/extras/code_samples/custom_v1.txt +++ b/docs/extras/code_samples/custom_v1.txt @@ -7,7 +7,7 @@ mindee_client = Client(api_key="my-api-key").add_endpoint( ) # Load a file from disk and parse it. -# The endpoint name must be specified since it can't be determined from the class. +# The endpoint name must be specified since it cannot be determined from the class. result = mindee_client.doc_from_path( "/path/to/the/file.ext" ).parse(documents.TypeCustomV1, endpoint_name="my-endpoint") diff --git a/docs/extras/code_samples/id_card_v1.txt b/docs/extras/code_samples/idcard_fr_v1.txt similarity index 100% rename from docs/extras/code_samples/id_card_v1.txt rename to docs/extras/code_samples/idcard_fr_v1.txt diff --git a/docs/extras/code_samples/invoice_v3.txt b/docs/extras/code_samples/invoices_v3.txt similarity index 100% rename from docs/extras/code_samples/invoice_v3.txt rename to docs/extras/code_samples/invoices_v3.txt diff --git a/docs/extras/code_samples/invoice_v4.txt b/docs/extras/code_samples/invoices_v4.txt similarity index 100% rename from docs/extras/code_samples/invoice_v4.txt rename to docs/extras/code_samples/invoices_v4.txt diff --git a/docs/extras/code_samples/license_plate_v1.txt b/docs/extras/code_samples/license_plates_v1.txt similarity index 100% rename from docs/extras/code_samples/license_plate_v1.txt rename to docs/extras/code_samples/license_plates_v1.txt diff --git a/docs/extras/code_samples/shipping_container_v1.txt b/docs/extras/code_samples/shipping_containers_v1.txt similarity index 100% rename from docs/extras/code_samples/shipping_container_v1.txt rename to docs/extras/code_samples/shipping_containers_v1.txt diff --git a/docs/predictions/standard/documents/cropper_v1.rst b/docs/predictions/standard/documents/cropper_v1.rst new file mode 100644 index 00000000..ac929938 --- /dev/null +++ b/docs/predictions/standard/documents/cropper_v1.rst @@ -0,0 +1,10 @@ +Cropper V1 +---------- + +**Sample Code:** + +.. literalinclude:: /extras/code_samples/cropper_v1.txt + :language: Python + +.. autoclass:: mindee.documents.CropperV1 + :members: diff --git a/docs/predictions/standard/documents/eu/license_plate_v1.rst b/docs/predictions/standard/documents/eu/license_plate_v1.rst index 4b453e61..33b0b1e3 100644 --- a/docs/predictions/standard/documents/eu/license_plate_v1.rst +++ b/docs/predictions/standard/documents/eu/license_plate_v1.rst @@ -3,7 +3,7 @@ License Plate V1 **Sample Code:** -.. literalinclude:: /extras/code_samples/license_plate_v1.txt +.. literalinclude:: /extras/code_samples/license_plates_v1.txt :language: Python .. autoclass:: mindee.documents.eu.LicensePlateV1 diff --git a/docs/predictions/standard/documents/fr/id_card_v1.rst b/docs/predictions/standard/documents/fr/id_card_v1.rst index cf6ecd26..da8bb18b 100644 --- a/docs/predictions/standard/documents/fr/id_card_v1.rst +++ b/docs/predictions/standard/documents/fr/id_card_v1.rst @@ -3,7 +3,7 @@ Carte Nationale d'Identité V1 **Sample Code:** -.. literalinclude:: /extras/code_samples/id_card_v1.txt +.. literalinclude:: /extras/code_samples/idcard_fr_v1.txt :language: Python .. autoclass:: mindee.documents.fr.IdCardV1 diff --git a/docs/predictions/standard/documents/invoice_v3.rst b/docs/predictions/standard/documents/invoice_v3.rst index 6a44804d..b34aec74 100644 --- a/docs/predictions/standard/documents/invoice_v3.rst +++ b/docs/predictions/standard/documents/invoice_v3.rst @@ -3,7 +3,7 @@ Invoice V3 **Sample Code:** -.. literalinclude:: /extras/code_samples/invoice_v3.txt +.. literalinclude:: /extras/code_samples/invoices_v3.txt :language: Python .. autoclass:: mindee.documents.InvoiceV3 diff --git a/docs/predictions/standard/documents/invoice_v4.rst b/docs/predictions/standard/documents/invoice_v4.rst index 4b7b9ab8..625d2ca2 100644 --- a/docs/predictions/standard/documents/invoice_v4.rst +++ b/docs/predictions/standard/documents/invoice_v4.rst @@ -3,7 +3,7 @@ Invoice V4 **Sample Code:** -.. literalinclude:: /extras/code_samples/invoice_v4.txt +.. literalinclude:: /extras/code_samples/invoices_v4.txt :language: Python .. autoclass:: mindee.documents.InvoiceV4 diff --git a/docs/predictions/standard/documents/shipping_container_v1.rst b/docs/predictions/standard/documents/shipping_container_v1.rst index cc7f2a4c..84467f20 100644 --- a/docs/predictions/standard/documents/shipping_container_v1.rst +++ b/docs/predictions/standard/documents/shipping_container_v1.rst @@ -3,7 +3,7 @@ Shipping Container V1 **Sample Code:** -.. literalinclude:: /extras/code_samples/shipping_container_v1.txt +.. literalinclude:: /extras/code_samples/shipping_containers_v1.txt :language: Python .. autoclass:: mindee.documents.ShippingContainerV1 diff --git a/docs/predictions/standard/international.rst b/docs/predictions/standard/international.rst index e4849498..02eb1b5c 100644 --- a/docs/predictions/standard/international.rst +++ b/docs/predictions/standard/international.rst @@ -10,3 +10,4 @@ International .. include:: ./documents/passport_v1.rst .. include:: ./documents/shipping_container_v1.rst .. include:: ./documents/proof_of_address_v1.rst +.. include:: ./documents/cropper_v1.rst diff --git a/tests/test_code_samples.sh b/tests/test_code_samples.sh new file mode 100755 index 00000000..0e983a52 --- /dev/null +++ b/tests/test_code_samples.sh @@ -0,0 +1,26 @@ +#! /bin/sh +set -e + +OUTPUT_FILE='./_test.py' +ACCOUNT=$1 +ENDPOINT=$2 +API_KEY=$3 + +for f in $(find ./docs/extras/code_samples -maxdepth 1 -name "*.txt" | sort -h) +do + echo + echo "###############################################" + echo "${f}" + echo "###############################################" + echo + + sed "s/my-api-key/${API_KEY}/" "$f" > $OUTPUT_FILE + sed -i 's/\/path\/to\/the\/file.ext/.\/tests\/data\/pdf\/blank_1.pdf/' $OUTPUT_FILE + + if echo "$f" | grep -q "custom_v1.txt" + then + sed -i "s/my-account/$ACCOUNT/g" $OUTPUT_FILE + sed -i "s/my-endpoint/$ENDPOINT/g" $OUTPUT_FILE + fi + python $OUTPUT_FILE +done