Skip to content

[doc translation] poller design samples #17260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ def from_continuation_token(cls, polling_method, continuation_token, **kwargs):

pass # returns the batch ID

@classmethod
def from_batch_id(batch_id):
# creates a poller from a batch id
pass


class DocTranslationLROPolling(PollingMethod): # pylint: disable=too-many-instance-attributes

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# coding=utf-8
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------


def sample_batch_translation():
# import libraries
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.documenttranslation import (
DocumentTranslationClient,
BatchDocumentInput,
StorageTarget,
)

# get service secrets
endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
source_container_url_en = os.environ["AZURE_SOURCE_CONTAINER_URL_EN"]
target_container_url_es = os.environ["AZURE_TARGET_CONTAINER_URL_ES"]
target_container_url_fr = os.environ["AZURE_TARGET_CONTAINER_URL_FR"]

# create translation client
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

# submit documents for translation
operation = client.begin_translation(
[
BatchDocumentInput(
source_url=source_container_url_en,
targets=[
StorageTarget(target_url=target_container_url_es, language="es"),
StorageTarget(target_url=target_container_url_fr, language="fr"),
],
)
]
) # type: DocumentTranslationPoller[ItemPaged[DocumentStatusDetail]]

# get final status
doc_statuses = operation.result() # type: ItemPaged[DocumentStatusDetail]
translation_details = operation.details # type: TranslationStatusDetail

# print status
print("Translation status: {}".format(translation_details.status))
print("Translation created on: {}".format(translation_details.created_on))
print("Translation last updated on: {}".format(translation_details.last_updated_on))
print("Total number of translations on documents: {}".format(translation_details.documents_total_count))

print("Of total documents...")
print("{} failed".format(translation_details.documents_failed_count))
print("{} succeeded".format(translation_details.documents_succeeded_count))
print("{} in progress".format(translation_details.documents_in_progress_count))
print("{} not yet started".format(translation_details.documents_not_yet_started_count))
print("{} cancelled".format(translation_details.documents_cancelled_count))

for document in doc_statuses:
print("Document with ID: {} has status: {}".format(document.id, document.status))
if document.status == "Succeeded":
print("Document location: {}".format(document.url))
print("Translated to langauge: {}".format(document.translate_to))
else:
print("Error Code: {}, Message: {}".format(document.error.code, document.error.message))



if __name__ == '__main__':
sample_batch_translation()
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# coding=utf-8
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------


def sample_list_all_submitted_jobs():
# import libraries
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.documenttranslation import (
DocumentTranslationClient,
)

# get service secrets
endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]

# create translation client
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

# list submitted translations
translation_operations = client.list_submitted_translations() # type: ItemPaged[TranslationStatusDetail]

for translation_operation in translation_operations:
if translation_operation.status in ["NotStarted", "Running"]:
poller = client.begin_translation(None, continuation_token=translation_operation.id)
translation_operation = poller.result()

print("Translation ID: {}".format(translation_operation.id))
print("Translation status: {}".format(translation_operation.status))
print("Translation created on: {}".format(translation_operation.created_on))
print("Translation last updated on: {}".format(translation_operation.last_updated_on))
print("Total number of translations on documents: {}".format(translation_operation.documents_total_count))
print("Total number of characters charged: {}".format(translation_operation.total_characters_charged))

print("Of total documents...")
print("{} failed".format(translation_operation.documents_failed_count))
print("{} succeeded".format(translation_operation.documents_succeeded_count))
print("{} in progress".format(translation_operation.documents_in_progress_count))
print("{} not yet started".format(translation_operation.documents_not_yet_started_count))
print("{} cancelled".format(translation_operation.documents_cancelled_count))


if __name__ == '__main__':
sample_list_all_submitted_jobs()
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# coding=utf-8
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------


def sample_translation_status_checks():
# import libraries
import os
import time
from azure.core.credentials import AzureKeyCredential
from azure.ai.documenttranslation import (
DocumentTranslationClient,
BatchDocumentInput,
StorageTarget
)

# get service secrets
endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
source_container_url_en = os.environ["AZURE_SOURCE_CONTAINER_URL_EN"]
target_container_url_es = os.environ["AZURE_TARGET_CONTAINER_URL_ES"]
target_container_url_fr = os.environ["AZURE_TARGET_CONTAINER_URL_FR"]

# create translation client
client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

# submit docs for translation
operation = client.begin_translation(
[
BatchDocumentInput(
source_url=source_container_url_en,
targets=[
StorageTarget(target_url=target_container_url_es, language="es"),
StorageTarget(target_url=target_container_url_fr, language="fr")
]
)
]
) # type: DocumentTranslationPoller[ItemPaged[DocumentStatusDetail]]

# check result
completed_docs = []
running_state = ["NotStarted", "Running"]

while operation.details.status in running_state:
time.sleep(30)
for doc in client.list_documents_statuses(operation.batch_id):
if doc.id not in completed_docs and doc.status not in running_state:
completed_docs.append(doc.id)
print("Document at {} completed with status: {}".format(doc.url, doc.status))

print("Translation batch completed.")

if __name__ == '__main__':
sample_translation_status_checks()

This file was deleted.

Loading