From 34c1fa0916546879a0bc4e15c6cbe6af0f0dfb75 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 01:10:33 +0200 Subject: [PATCH 01/14] copy samples from tests branch --- .../tmp-files/test_all_document_statuses.py | 209 +++++++++++++ .../test_all_document_statuses_async.py | 240 ++++++++++++++ .../tmp-files/test_list_submitted_jobs.py | 289 +++++++++++++++++ .../test_list_submitted_jobs_async.py | 295 ++++++++++++++++++ 4 files changed, 1033 insertions(+) create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py new file mode 100644 index 000000000000..298c38fec024 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py @@ -0,0 +1,209 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from datetime import datetime +import functools +from testcase import DocumentTranslationTest +from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer +from azure.ai.translation.document import DocumentTranslationClient +import pytest + +DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) + + +class TestAllDocumentStatuses(DocumentTranslationTest): + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # list docs statuses + doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list + self.assertEqual(len(doc_statuses), docs_count) + + for document in doc_statuses: + self._validate_doc_status(document, target_language) + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_with_pagination(self, client): + docs_count = 10 + results_per_page = 2 + no_of_pages = docs_count // results_per_page + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses_pages = list(client.list_all_document_statuses(job_id=job_id, results_per_page=results_per_page).by_page()) + self.assertEqual(len(doc_statuses_pages), no_of_pages) + + # iterate by page + for page in doc_statuses_pages: + page_items = list(page) + self.assertLessEqual(len(page_items), results_per_page) + for document in page: + self._validate_doc_status(document, target_language) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_with_skip(self, client): + docs_count = 10 + skip = 2 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = list(client.list_all_document_statuses(job_id=job_id, skip=skip)) + self.assertEqual(len(doc_statuses), docs_count - skip) + + # iterate over docs + for document in doc_statuses: + self._validate_doc_status(document, target_language) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_filter_by_status(self, client): + docs_count = 10 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # list jobs + statuses = ["NotStarted"] + doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) + assert(len(doc_statuses) == 0) + + statuses = ["Succeeded"] + doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) + assert(len(doc_statuses) == docs_count) + + statuses = ["Failed"] + doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) + assert(len(doc_statuses) == 0) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_filter_by_ids(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # filter ids + doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list + self.assertEqual(len(doc_statuses), docs_count) + ids = [doc.id for doc in doc_statuses] + ids = ids[:docs_count//2] + + # do the testing + doc_statuses = list(client.list_all_document_statuses(job_id, document_ids=ids)) + self.assertEqual(len(doc_statuses), len(ids)) + for document in doc_statuses: + self._validate_doc_status(document, target_language, ids=ids) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_order_by_creation_time_asc(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = list(client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc asc"])) # convert from generic iterator to list + self.assertEqual(len(doc_statuses), docs_count) + + curr = datetime.min + for document in doc_statuses: + assert(document.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) + curr = document.created_on + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_order_by_creation_time_desc(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = list(client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc desc"])) # convert from generic iterator to list + self.assertEqual(len(doc_statuses), docs_count) + + curr = datetime.max + for document in doc_statuses: + assert(document.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) + curr = document.created_on + + + @pytest.mark.skip(reason="not working! - list returned is empty") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_document_statuses_mixed_filters(self, client): + docs_count = 25 + target_language = "es" + skip = 3 + results_per_page = 2 + statuses = ["Succeeded"] + + # submit and validate job + job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) + + # get ids + doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list + self.assertEqual(len(doc_statuses), docs_count) + ids = [doc.id for doc in doc_statuses] + ids = ids[:docs_count//2] + + # list jobs + filtered_docs = client.list_all_document_statuses( + job_id, + # filters + document_ids=ids, + statuses=statuses, + # ordering + order_by=["createdDateTimeUtc asc"], + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + self.assertIsNotNone(filtered_docs) + + # check statuses + counter = 0 + curr_time = datetime.max + for page in filtered_docs: + page_docs = list(page) + self.assertLessEqual(len(page_docs), results_per_page) # assert paging + for doc in page: + counter += 1 + # assert ordering + assert(doc.created_on.replace(tzinfo=None) <= curr_time.replace(tzinfo=None)) + curr_time = doc.created_on + # assert filters + self.assertIn(doc.status, statuses) + self.assertIn(doc.id, ids) + + assert(counter == len(ids) - skip) diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py new file mode 100644 index 000000000000..e01f4a4fcd23 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py @@ -0,0 +1,240 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from datetime import datetime +import functools +from asynctestcase import AsyncDocumentTranslationTest +from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer +from azure.ai.translation.document.aio import DocumentTranslationClient +import pytest + +DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) + + +class TestAllDocumentStatuses(AsyncDocumentTranslationTest): + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = client.list_all_document_statuses(job_id) + doc_statuses_list = [] + + async for document in doc_statuses: + doc_statuses_list.append(document) + self._validate_doc_status(document, target_language) + + self.assertEqual(len(doc_statuses_list), docs_count) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_with_pagination(self, client): + docs_count = 7 + results_per_page = 2 + no_of_pages = docs_count // results_per_page + 1 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses_pages = client.list_all_document_statuses(job_id=job_id, results_per_page=results_per_page).by_page() + pages_list = [] + + # iterate by page + async for page in doc_statuses_pages: + pages_list.append(page) + page_docs_list = [] + async for document in page: + page_docs_list.append(document) + self._validate_doc_status(document, target_language) + self.assertLessEqual(len(page_docs_list), results_per_page) + + self.assertEqual(len(pages_list), no_of_pages) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_with_skip(self, client): + docs_count = 5 + skip = 2 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = client.list_all_document_statuses(job_id=job_id, skip=skip) + doc_statuses_list = [] + + # iterate over docs + async for document in doc_statuses: + doc_statuses_list.append(document) + self._validate_doc_status(document, target_language) + + self.assertEqual(len(doc_statuses_list), docs_count - skip) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_filter_by_status(self, client): + docs_count = 10 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # list jobs + statuses = ["NotStarted"] + doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) + counter = 0 + async for doc in doc_statuses: + counter += 1 + assert(counter == 0) + + statuses = ["Succeeded"] + doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) + counter = 0 + async for doc in doc_statuses: + counter += 1 + assert(counter == docs_count) + + statuses = ["Failed"] + doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) + counter = 0 + async for doc in doc_statuses: + counter += 1 + assert(counter == 0) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_filter_by_ids(self, client): + docs_count = 15 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # filter ids + doc_statuses = client.list_all_document_statuses(job_id) + ids = [document.id async for document in doc_statuses] + self.assertEqual(len(ids), docs_count) + ids = ids[:docs_count//2] + + # do the testing + doc_statuses = client.list_all_document_statuses(job_id, document_ids=ids) + counter = 0 + async for document in doc_statuses: + counter += 1 + self._validate_doc_status(document, target_language, ids=ids) + + assert(counter == len(ids)) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_order_by_creation_time_asc(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc asc"]) + + curr = datetime.min + docs = [] + async for document in doc_statuses: + docs.append(document) + assert(document.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) + curr = document.created_on + + self.assertEqual(len(docs), docs_count) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_order_by_creation_time_desc(self, client): + docs_count = 5 + target_language = "es" + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # check doc statuses + doc_statuses = client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc desc"]) + + curr = datetime.max + docs = [] + async for document in doc_statuses: + docs.append(document) + assert(document.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) + curr = document.created_on + + self.assertEqual(len(docs), docs_count) + + + @pytest.mark.skip(reason="not working! - list returned is empty") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_document_statuses_mixed_filters(self, client): + docs_count = 25 + target_language = "es" + results_per_page = 2 + statuses = ["Succeeded"] + skip = 3 + + # submit and validate job + job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) + + # get ids + doc_statuses = client.list_all_document_statuses(job_id) + ids = [document.id async for document in doc_statuses] + self.assertEqual(len(ids), docs_count) + ids = ids[:docs_count//2] + + # list jobs + filtered_docs = client.list_all_document_statuses( + job_id, + # filters + document_ids=ids, + statuses=statuses, + # ordering + order_by=["createdDateTimeUtc asc"], + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + + # check statuses + counter = 0 + curr_time = datetime.max + async for page in filtered_docs: + page_docs = [] + async for doc in page: + counter += 1 + page_docs.append(doc) + # assert ordering + assert(doc.created_on.replace(tzinfo=None) <= curr_time.replace(tzinfo=None)) + curr_time = doc.created_on + # assert filters + self.assertIn(doc.status, statuses) + self.assertIn(doc.id, ids) + + self.assertLessEqual(len(page_docs), results_per_page) # assert paging + + assert(counter == len(ids) - skip) + diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py new file mode 100644 index 000000000000..da4000ba15d6 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py @@ -0,0 +1,289 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from datetime import datetime, date +import functools +from testcase import DocumentTranslationTest +from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer +from azure.ai.translation.document import DocumentTranslationClient +import pytest + +DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) + +class TestSubmittedJobs(DocumentTranslationTest): + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs(self, client): + # create some jobs + jobs_count = 5 + docs_per_job = 5 + self._create_and_submit_sample_translation_jobs(client, jobs_count, docs_per_job=docs_per_job, wait=False) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs()) + self.assertIsNotNone(submitted_jobs) + + # check statuses + for job in submitted_jobs: + self._validate_translation_job(job) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_with_pagination(self, client): + # prepare data + jobs_count = 5 + docs_per_job = 2 + results_per_page = 2 + + # create some jobs + self._create_and_submit_sample_translation_jobs(client, jobs_count, docs_per_job=docs_per_job, wait=False) + + # list jobs + submitted_jobs_pages = client.list_submitted_jobs(results_per_page=results_per_page).by_page() + self.assertIsNotNone(submitted_jobs_pages) + + # iterate by page + for page in submitted_jobs_pages: + page_jobs = list(page) + self.assertLessEqual(len(page_jobs), results_per_page) + for job in page: + self._validate_translation_job(job) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_with_skip(self, client): + # prepare data + jobs_count = 10 + docs_per_job = 2 + skip = 5 + + # create some jobs + self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # assert + all_jobs = list(client.list_submitted_jobs()) + jobs_with_skip = list(client.list_submitted_jobs(skip=skip)) + assert len(all_jobs) - len(jobs_with_skip) == skip + + + @pytest.mark.skip(reason="filter not working!") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_filter_by_status(self, client): + jobs_count = 10 + docs_per_job = 3 + + # create some jobs + job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # update status + cancelled_count = jobs_count//2 + for id in job_ids[:cancelled_count]: + client.cancel_job(id) + statuses = ["Cancelled", "Cancelling"] + self.wait(10) # wait for cancelled to propagate + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(statuses=statuses)) + self.assertIsNotNone(submitted_jobs) + + # check statuses + for job in submitted_jobs: + self.assertIn(job.status, statuses) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_filter_by_ids(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(job_ids=job_ids)) + self.assertIsNotNone(submitted_jobs) + + # check statuses + for job in submitted_jobs: + self.assertIn(job.id, job_ids) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_filter_by_created_after(self, client): + # create some jobs + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + start = datetime.now() + job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(created_after=start)) + self.assertIsNotNone(submitted_jobs) + + # check statuses + for job in submitted_jobs: + self.assertIn(job.id, job_ids) + assert(job.created_on.replace(tzinfo=None) >= start.replace(tzinfo=None)) + + + @pytest.mark.skip(reason="for some reason, jobs created after 'end' timestamp showup in result! might be different timestamps locally and service") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_filter_by_created_before(self, client): + ''' + NOTE: maybe we need to wait for few seconds after calling 'end = datetime.now()' + for the local and service clocks to differ by some significant amount + ''' + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + end = datetime.now() + self.wait(5) # + job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(created_before=end)) + self.assertIsNotNone(submitted_jobs) + + # check statuses + for job in submitted_jobs: + self.assertLessEqual(job.created_on.replace(tzinfo=None), end.replace(tzinfo=None)) + self.assertNotIn(job.id, job_ids) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_order_by_creation_time_asc(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(order_by=["createdDateTimeUtc asc"])) + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr = datetime.min + for job in submitted_jobs: + assert(job.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) + curr = job.created_on + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_order_by_creation_time_desc(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = list(client.list_submitted_jobs(order_by=["createdDateTimeUtc desc"])) + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr = datetime.max + for job in submitted_jobs: + assert(job.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) + curr = job.created_on + + + @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_mixed_filters(self, client): + # create some jobs + jobs_count = 5 + docs_per_job = 2 + results_per_page = 2 + statuses = ["Running"] + + # create some jobs + start = datetime.now() + self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + end = datetime.now() + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + statuses=statuses, + created_after=start, + created_before=end, + # ordering + order_by=["createdDateTimeUtc desc"], + # paging + skip=1, + results_per_page=results_per_page + ).by_page() + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr_time = datetime.max + for page in submitted_jobs: + page_jobs = list(page) + self.assertLessEqual(len(page_jobs), results_per_page) # assert paging + for job in page: + # assert ordering + assert(job.created_on <= curr_time) + curr_time = job.created_on + # assert filters + assert(job.created_on <= end) + assert(job.created_on >= start) + self.assertIn(job.status, statuses) + + + @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + def test_list_submitted_jobs_mixed_filters_more(self, client): + jobs_count = 5 + docs_per_job = 2 + results_per_page = 2 + statuses = ["Running"] + + # create some jobs + job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + job_ids=job_ids, + statuses=statuses, + # ordering + order_by=["createdDateTimeUtc asc"], + # paging + skip=1, + results_per_page=results_per_page + ).by_page() + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr_time = date.max + for page in submitted_jobs: + page_jobs = list(page) + self.assertLessEqual(len(page_jobs), results_per_page) # assert paging + for job in page: + # assert ordering + assert(job.created_on <= curr_time) + curr_time = job.created_on + # assert filters + self.assertIn(job.status, statuses) + self.assertIn(job.id, job_ids) + + diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py new file mode 100644 index 000000000000..c415a49bda61 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py @@ -0,0 +1,295 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +from datetime import datetime, date +import functools +from asynctestcase import AsyncDocumentTranslationTest +from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer +from azure.ai.translation.document.aio import DocumentTranslationClient +DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) +import pytest + +TOTAL_DOC_COUNT_IN_JOB = 1 + +class TestSubmittedJobs(AsyncDocumentTranslationTest): + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs(self, client): + # create some jobs + jobs_count = 5 + docs_per_job = 5 + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, docs_per_job=docs_per_job, wait=False) + + # list jobs + submitted_jobs = client.list_submitted_jobs() + self.assertIsNotNone(submitted_jobs) + + # check statuses + async for job in submitted_jobs: + self._validate_translation_job(job) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_with_pagination(self, client): + # prepare data + jobs_count = 5 + docs_per_job = 2 + results_per_page = 2 + + # create some jobs + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, docs_per_job=docs_per_job, wait=False) + + # list jobs + submitted_jobs_pages = client.list_submitted_jobs(results_per_page=results_per_page).by_page() + self.assertIsNotNone(submitted_jobs_pages) + + # iterate by page + async for page in submitted_jobs_pages: + page_jobs = [] + async for job in page: + page_jobs.append(job) + self._validate_translation_job(job) + + self.assertEqual(len(page_jobs), results_per_page) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_with_skip(self, client): + # prepare data + jobs_count = 10 + docs_per_job = 2 + skip = 5 + + # create some jobs + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs - unable to assert skip!! + all_jobs = client.list_submitted_jobs() + all_jobs_count = 0 + async for job in all_jobs: + all_jobs_count += 1 + + jobs_with_skip = client.list_submitted_jobs(skip=skip) + jobs_with_skip_count = 0 + async for job in jobs_with_skip: + jobs_with_skip_count += 1 + + assert all_jobs_count - jobs_with_skip_count == skip + + + @pytest.mark.skip(reason="filter not working!") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_filter_by_status(self, client): + jobs_count = 10 + docs_per_job = 3 + + # create some jobs + job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # update status + cancelled_count = jobs_count//2 + for id in job_ids[:cancelled_count]: + await client.cancel_job(id) + statuses = ["Cancelled", "Cancelling"] + self.wait(10) # wait for cancelled to propagate + + # list jobs + submitted_jobs = client.list_submitted_jobs(statuses=statuses) + self.assertIsNotNone(submitted_jobs) + + # check statuses + async for job in submitted_jobs: + self.assertIn(job.status, statuses) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_filter_by_ids(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs(job_ids=job_ids) + self.assertIsNotNone(submitted_jobs) + + # check statuses + async for job in submitted_jobs: + self.assertIn(job.id, job_ids) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_filter_by_created_after(self, client): + # create some jobs + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + start = datetime.now() + job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs(created_after=start) + self.assertIsNotNone(submitted_jobs) + + # check statuses + async for job in submitted_jobs: + self.assertIn(job.id, job_ids) + assert(job.created_on.replace(tzinfo=None) >= start.replace(tzinfo=None)) + + + @pytest.mark.skip(reason="for some reason, jobs created after 'end' timestamp showup in result! might be different timestamps locally and service") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_filter_by_created_before(self, client): + ''' + NOTE: maybe we need to wait for few seconds after calling 'end = datetime.now()' + for the local and service clocks to differ by some significant amount + ''' + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + end = datetime.now() + self.wait(5) # + job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs(created_before=end) + self.assertIsNotNone(submitted_jobs) + + # check statuses + async for job in submitted_jobs: + self.assertLessEqual(job.created_on.replace(tzinfo=None), end.replace(tzinfo=None)) + self.assertNotIn(job.id, job_ids) + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_order_by_creation_time_asc(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs(order_by=["createdDateTimeUtc asc"]) + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr = datetime.min + async for job in submitted_jobs: + assert(job.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) + curr = job.created_on + + + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_order_by_creation_time_desc(self, client): + jobs_count = 3 + docs_per_job = 2 + + # create some jobs + await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) + + # list jobs + submitted_jobs = client.list_submitted_jobs(order_by=["createdDateTimeUtc desc"]) + self.assertIsNotNone(submitted_jobs) + + # check statuses + curr = datetime.max + async for job in submitted_jobs: + assert(job.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) + curr = job.created_on + + + @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_mixed_filters(self, client): + # create some jobs + start = datetime.now() + self._create_and_submit_sample_translation_jobs_async(client, 20, wait=False) + end = datetime.now() + results_per_page = 2 + statuses = ["Running"] + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + statuses=statuses, + created_date_time_utc_start=start, + created_date_time_utc_end=end, + # ordering + order_by=["CreatedDateTimeUtc", "desc"], + # paging + skip=1, + results_per_page=results_per_page + ) + + # check statuses + curr_time = date.max + async for page in submitted_jobs: + page_jobs = [] + async for job in page: + page_jobs.append(job) + # assert ordering + assert(job.created_on < curr_time) + curr_time = job.created_on + # assert filters + assert(job.created_on < end) + assert(job.created_on > start) + self.assertIn(job.status, statuses) + + self.assertEqual(len(page_jobs), results_per_page) + + + @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") + @DocumentTranslationPreparer() + @DocumentTranslationClientPreparer() + async def test_list_submitted_jobs_mixed_filters_more(self, client): + # create some jobs + job_ids = self._create_and_submit_sample_translation_jobs_async(client, 20, wait=False) + results_per_page = 2 + statuses = ["Running"] + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + job_ids=job_ids, + statuses=statuses, + # ordering + order_by=["CreatedDateTimeUtc", "asc"], + # paging + skip=1, + results_per_page=results_per_page + ).by_page() + + # check statuses + curr_time = date.max + async for page in submitted_jobs: + page_jobs = [] + async for job in page: + page_jobs.append(job) + # assert ordering + assert(job.created_on < curr_time) + curr_time = job.created_on + # assert filters + self.assertIn(job.status, statuses) + self.assertIn(job.id, job_ids) + + self.assertEqual(len(page_jobs), results_per_page) + From a3aecac965d0b4f7572c5cb599381d35ad8f0893 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 05:24:06 +0200 Subject: [PATCH 02/14] added samples for list submitted jobs both sync and async --- ...sample_list_submitted_jobs_with_filters.py | 84 +++++ ..._list_submitted_jobs_with_filters_async.py | 87 ++++++ .../tmp-files/test_list_submitted_jobs.py | 289 ----------------- .../test_list_submitted_jobs_async.py | 295 ------------------ 4 files changed, 171 insertions(+), 584 deletions(-) create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py delete mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py delete mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py new file mode 100644 index 000000000000..b59177c759fc --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py @@ -0,0 +1,84 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +""" +FILE: sample_list_submitted_jobs_with_filters.py + +DESCRIPTION: + This sample demonstrates how to list all the submitted translation jobs for the resource + using differen kind of filters/sorting/paging options + + To set up your containers for translation and generate SAS tokens to your containers (or files) + with the appropriate permissions, see the README. + +USAGE: + python sample_list_submitted_jobs_with_filters.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. + 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. +""" + + + +def sample_list_submitted_jobs_with_filters(self, client): + # import libraries + from azure.core.credentials import AzureKeyCredential + from azure.ai.translation.document import ( + DocumentTranslationClient, + ) + import os + from datetime import datetime + + # obtain client secrets + endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] + key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + + # authorize client + client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) + + # set your filters + start = datetime(2021, 4, 12) + end = datetime(2021, 4, 14) + statuses = ["Cancelled", "Failed"] + order_by = ["createdDateTimeUtc desc"] + results_per_page = 2 + skip = 3 + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + statuses=statuses, + created_after=start, + created_before=end, + # ordering + order_by=order_by, + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + + # check statuses + for page in submitted_jobs: + for job in page: + display_job_info(job) + + +def display_job_info(job): + print("Job ID: {}".format(job.id)) + print("Job status: {}".format(job.status)) + print("Job created on: {}".format(job.created_on)) + print("Job last updated on: {}".format(job.last_updated_on)) + print("Total number of translations on documents: {}".format(job.documents_total_count)) + print("Total number of characters charged: {}".format(job.total_characters_charged)) + print("\nOf total documents...") + print("{} failed".format(job.documents_failed_count)) + print("{} succeeded".format(job.documents_succeeded_count)) + print("{} cancelled\n".format(job.documents_cancelled_count)) + + +if __name__ == '__main__': + sample_list_submitted_jobs_with_filters() diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py new file mode 100644 index 000000000000..cc24e9284c12 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py @@ -0,0 +1,87 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +""" +FILE: sample_list_submitted_jobs_with_filters_async.py + +DESCRIPTION: + This sample demonstrates how to list all the submitted translation jobs for the resource + using differen kind of filters/sorting/paging options + + To set up your containers for translation and generate SAS tokens to your containers (or files) + with the appropriate permissions, see the README. + +USAGE: + python sample_list_submitted_jobs_with_filters_async.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. + 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. +""" + +import os +import asyncio + +async def sample_list_submitted_jobs_with_filters_async(self, client): + # import libraries + from azure.core.credentials import AzureKeyCredential + from azure.ai.translation.document.aio import DocumentTranslationClient + + from datetime import datetime + + # obtain client secrets + endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] + key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + + # authorize client + client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) + async with client: + # set your filters + start = datetime(2021, 4, 12) + end = datetime(2021, 4, 14) + statuses = ["Cancelled", "Failed"] + order_by = ["createdDateTimeUtc desc"] + results_per_page = 2 + skip = 3 + + # list jobs + submitted_jobs = client.list_submitted_jobs( + # filters + statuses=statuses, + created_after=start, + created_before=end, + # ordering + order_by=order_by, + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + + # check statuses + async for page in submitted_jobs: + async for job in page: + display_job_info(job) + + +def display_job_info(job): + print("Job ID: {}".format(job.id)) + print("Job status: {}".format(job.status)) + print("Job created on: {}".format(job.created_on)) + print("Job last updated on: {}".format(job.last_updated_on)) + print("Total number of translations on documents: {}".format(job.documents_total_count)) + print("Total number of characters charged: {}".format(job.total_characters_charged)) + print("\nOf total documents...") + print("{} failed".format(job.documents_failed_count)) + print("{} succeeded".format(job.documents_succeeded_count)) + print("{} cancelled\n".format(job.documents_cancelled_count)) + + +async def main(): + await sample_list_submitted_jobs_with_filters_async() + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py deleted file mode 100644 index da4000ba15d6..000000000000 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs.py +++ /dev/null @@ -1,289 +0,0 @@ -# coding=utf-8 -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ - -from datetime import datetime, date -import functools -from testcase import DocumentTranslationTest -from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer -from azure.ai.translation.document import DocumentTranslationClient -import pytest - -DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) - -class TestSubmittedJobs(DocumentTranslationTest): - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs(self, client): - # create some jobs - jobs_count = 5 - docs_per_job = 5 - self._create_and_submit_sample_translation_jobs(client, jobs_count, docs_per_job=docs_per_job, wait=False) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs()) - self.assertIsNotNone(submitted_jobs) - - # check statuses - for job in submitted_jobs: - self._validate_translation_job(job) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_with_pagination(self, client): - # prepare data - jobs_count = 5 - docs_per_job = 2 - results_per_page = 2 - - # create some jobs - self._create_and_submit_sample_translation_jobs(client, jobs_count, docs_per_job=docs_per_job, wait=False) - - # list jobs - submitted_jobs_pages = client.list_submitted_jobs(results_per_page=results_per_page).by_page() - self.assertIsNotNone(submitted_jobs_pages) - - # iterate by page - for page in submitted_jobs_pages: - page_jobs = list(page) - self.assertLessEqual(len(page_jobs), results_per_page) - for job in page: - self._validate_translation_job(job) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_with_skip(self, client): - # prepare data - jobs_count = 10 - docs_per_job = 2 - skip = 5 - - # create some jobs - self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # assert - all_jobs = list(client.list_submitted_jobs()) - jobs_with_skip = list(client.list_submitted_jobs(skip=skip)) - assert len(all_jobs) - len(jobs_with_skip) == skip - - - @pytest.mark.skip(reason="filter not working!") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_filter_by_status(self, client): - jobs_count = 10 - docs_per_job = 3 - - # create some jobs - job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # update status - cancelled_count = jobs_count//2 - for id in job_ids[:cancelled_count]: - client.cancel_job(id) - statuses = ["Cancelled", "Cancelling"] - self.wait(10) # wait for cancelled to propagate - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(statuses=statuses)) - self.assertIsNotNone(submitted_jobs) - - # check statuses - for job in submitted_jobs: - self.assertIn(job.status, statuses) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_filter_by_ids(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(job_ids=job_ids)) - self.assertIsNotNone(submitted_jobs) - - # check statuses - for job in submitted_jobs: - self.assertIn(job.id, job_ids) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_filter_by_created_after(self, client): - # create some jobs - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - start = datetime.now() - job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(created_after=start)) - self.assertIsNotNone(submitted_jobs) - - # check statuses - for job in submitted_jobs: - self.assertIn(job.id, job_ids) - assert(job.created_on.replace(tzinfo=None) >= start.replace(tzinfo=None)) - - - @pytest.mark.skip(reason="for some reason, jobs created after 'end' timestamp showup in result! might be different timestamps locally and service") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_filter_by_created_before(self, client): - ''' - NOTE: maybe we need to wait for few seconds after calling 'end = datetime.now()' - for the local and service clocks to differ by some significant amount - ''' - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - end = datetime.now() - self.wait(5) # - job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(created_before=end)) - self.assertIsNotNone(submitted_jobs) - - # check statuses - for job in submitted_jobs: - self.assertLessEqual(job.created_on.replace(tzinfo=None), end.replace(tzinfo=None)) - self.assertNotIn(job.id, job_ids) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_order_by_creation_time_asc(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(order_by=["createdDateTimeUtc asc"])) - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr = datetime.min - for job in submitted_jobs: - assert(job.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) - curr = job.created_on - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_order_by_creation_time_desc(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = list(client.list_submitted_jobs(order_by=["createdDateTimeUtc desc"])) - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr = datetime.max - for job in submitted_jobs: - assert(job.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) - curr = job.created_on - - - @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_mixed_filters(self, client): - # create some jobs - jobs_count = 5 - docs_per_job = 2 - results_per_page = 2 - statuses = ["Running"] - - # create some jobs - start = datetime.now() - self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - end = datetime.now() - - # list jobs - submitted_jobs = client.list_submitted_jobs( - # filters - statuses=statuses, - created_after=start, - created_before=end, - # ordering - order_by=["createdDateTimeUtc desc"], - # paging - skip=1, - results_per_page=results_per_page - ).by_page() - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr_time = datetime.max - for page in submitted_jobs: - page_jobs = list(page) - self.assertLessEqual(len(page_jobs), results_per_page) # assert paging - for job in page: - # assert ordering - assert(job.created_on <= curr_time) - curr_time = job.created_on - # assert filters - assert(job.created_on <= end) - assert(job.created_on >= start) - self.assertIn(job.status, statuses) - - - @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_submitted_jobs_mixed_filters_more(self, client): - jobs_count = 5 - docs_per_job = 2 - results_per_page = 2 - statuses = ["Running"] - - # create some jobs - job_ids = self._create_and_submit_sample_translation_jobs(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs( - # filters - job_ids=job_ids, - statuses=statuses, - # ordering - order_by=["createdDateTimeUtc asc"], - # paging - skip=1, - results_per_page=results_per_page - ).by_page() - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr_time = date.max - for page in submitted_jobs: - page_jobs = list(page) - self.assertLessEqual(len(page_jobs), results_per_page) # assert paging - for job in page: - # assert ordering - assert(job.created_on <= curr_time) - curr_time = job.created_on - # assert filters - self.assertIn(job.status, statuses) - self.assertIn(job.id, job_ids) - - diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py deleted file mode 100644 index c415a49bda61..000000000000 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_list_submitted_jobs_async.py +++ /dev/null @@ -1,295 +0,0 @@ -# coding=utf-8 -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ - -from datetime import datetime, date -import functools -from asynctestcase import AsyncDocumentTranslationTest -from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer -from azure.ai.translation.document.aio import DocumentTranslationClient -DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) -import pytest - -TOTAL_DOC_COUNT_IN_JOB = 1 - -class TestSubmittedJobs(AsyncDocumentTranslationTest): - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs(self, client): - # create some jobs - jobs_count = 5 - docs_per_job = 5 - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, docs_per_job=docs_per_job, wait=False) - - # list jobs - submitted_jobs = client.list_submitted_jobs() - self.assertIsNotNone(submitted_jobs) - - # check statuses - async for job in submitted_jobs: - self._validate_translation_job(job) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_with_pagination(self, client): - # prepare data - jobs_count = 5 - docs_per_job = 2 - results_per_page = 2 - - # create some jobs - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, docs_per_job=docs_per_job, wait=False) - - # list jobs - submitted_jobs_pages = client.list_submitted_jobs(results_per_page=results_per_page).by_page() - self.assertIsNotNone(submitted_jobs_pages) - - # iterate by page - async for page in submitted_jobs_pages: - page_jobs = [] - async for job in page: - page_jobs.append(job) - self._validate_translation_job(job) - - self.assertEqual(len(page_jobs), results_per_page) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_with_skip(self, client): - # prepare data - jobs_count = 10 - docs_per_job = 2 - skip = 5 - - # create some jobs - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - unable to assert skip!! - all_jobs = client.list_submitted_jobs() - all_jobs_count = 0 - async for job in all_jobs: - all_jobs_count += 1 - - jobs_with_skip = client.list_submitted_jobs(skip=skip) - jobs_with_skip_count = 0 - async for job in jobs_with_skip: - jobs_with_skip_count += 1 - - assert all_jobs_count - jobs_with_skip_count == skip - - - @pytest.mark.skip(reason="filter not working!") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_filter_by_status(self, client): - jobs_count = 10 - docs_per_job = 3 - - # create some jobs - job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # update status - cancelled_count = jobs_count//2 - for id in job_ids[:cancelled_count]: - await client.cancel_job(id) - statuses = ["Cancelled", "Cancelling"] - self.wait(10) # wait for cancelled to propagate - - # list jobs - submitted_jobs = client.list_submitted_jobs(statuses=statuses) - self.assertIsNotNone(submitted_jobs) - - # check statuses - async for job in submitted_jobs: - self.assertIn(job.status, statuses) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_filter_by_ids(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs(job_ids=job_ids) - self.assertIsNotNone(submitted_jobs) - - # check statuses - async for job in submitted_jobs: - self.assertIn(job.id, job_ids) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_filter_by_created_after(self, client): - # create some jobs - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - start = datetime.now() - job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs(created_after=start) - self.assertIsNotNone(submitted_jobs) - - # check statuses - async for job in submitted_jobs: - self.assertIn(job.id, job_ids) - assert(job.created_on.replace(tzinfo=None) >= start.replace(tzinfo=None)) - - - @pytest.mark.skip(reason="for some reason, jobs created after 'end' timestamp showup in result! might be different timestamps locally and service") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_filter_by_created_before(self, client): - ''' - NOTE: maybe we need to wait for few seconds after calling 'end = datetime.now()' - for the local and service clocks to differ by some significant amount - ''' - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - end = datetime.now() - self.wait(5) # - job_ids = await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs(created_before=end) - self.assertIsNotNone(submitted_jobs) - - # check statuses - async for job in submitted_jobs: - self.assertLessEqual(job.created_on.replace(tzinfo=None), end.replace(tzinfo=None)) - self.assertNotIn(job.id, job_ids) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_order_by_creation_time_asc(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs(order_by=["createdDateTimeUtc asc"]) - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr = datetime.min - async for job in submitted_jobs: - assert(job.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) - curr = job.created_on - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_order_by_creation_time_desc(self, client): - jobs_count = 3 - docs_per_job = 2 - - # create some jobs - await self._create_and_submit_sample_translation_jobs_async(client, jobs_count, wait=False, docs_per_job=docs_per_job) - - # list jobs - submitted_jobs = client.list_submitted_jobs(order_by=["createdDateTimeUtc desc"]) - self.assertIsNotNone(submitted_jobs) - - # check statuses - curr = datetime.max - async for job in submitted_jobs: - assert(job.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) - curr = job.created_on - - - @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_mixed_filters(self, client): - # create some jobs - start = datetime.now() - self._create_and_submit_sample_translation_jobs_async(client, 20, wait=False) - end = datetime.now() - results_per_page = 2 - statuses = ["Running"] - - # list jobs - submitted_jobs = client.list_submitted_jobs( - # filters - statuses=statuses, - created_date_time_utc_start=start, - created_date_time_utc_end=end, - # ordering - order_by=["CreatedDateTimeUtc", "desc"], - # paging - skip=1, - results_per_page=results_per_page - ) - - # check statuses - curr_time = date.max - async for page in submitted_jobs: - page_jobs = [] - async for job in page: - page_jobs.append(job) - # assert ordering - assert(job.created_on < curr_time) - curr_time = job.created_on - # assert filters - assert(job.created_on < end) - assert(job.created_on > start) - self.assertIn(job.status, statuses) - - self.assertEqual(len(page_jobs), results_per_page) - - - @pytest.mark.skip(reason="pending for filters which aren't working - mainly 'statuses' filter") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_submitted_jobs_mixed_filters_more(self, client): - # create some jobs - job_ids = self._create_and_submit_sample_translation_jobs_async(client, 20, wait=False) - results_per_page = 2 - statuses = ["Running"] - - # list jobs - submitted_jobs = client.list_submitted_jobs( - # filters - job_ids=job_ids, - statuses=statuses, - # ordering - order_by=["CreatedDateTimeUtc", "asc"], - # paging - skip=1, - results_per_page=results_per_page - ).by_page() - - # check statuses - curr_time = date.max - async for page in submitted_jobs: - page_jobs = [] - async for job in page: - page_jobs.append(job) - # assert ordering - assert(job.created_on < curr_time) - curr_time = job.created_on - # assert filters - self.assertIn(job.status, statuses) - self.assertIn(job.id, job_ids) - - self.assertEqual(len(page_jobs), results_per_page) - From a9ccad0af78494e3825f20419cbb76798d01ca46 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 05:26:17 +0200 Subject: [PATCH 03/14] fix parameters issues --- .../tmp-files/sample_list_submitted_jobs_with_filters.py | 2 +- .../tmp-files/sample_list_submitted_jobs_with_filters_async.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py index b59177c759fc..7134b19e3633 100644 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py @@ -24,7 +24,7 @@ -def sample_list_submitted_jobs_with_filters(self, client): +def sample_list_submitted_jobs_with_filters(): # import libraries from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document import ( diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py index cc24e9284c12..0bf3edf7ad6e 100644 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py @@ -25,7 +25,7 @@ import os import asyncio -async def sample_list_submitted_jobs_with_filters_async(self, client): +async def sample_list_submitted_jobs_with_filters_async(): # import libraries from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document.aio import DocumentTranslationClient From b015af773b29db20ab6e93c18e39cfca49de42d5 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 05:38:21 +0200 Subject: [PATCH 04/14] create samples for sync client 'list all doc statuses' --- ...tuses_in_a_translation_job_with_filters.py | 87 ++++++++ ...sample_list_submitted_jobs_with_filters.py | 2 +- ..._list_submitted_jobs_with_filters_async.py | 2 +- .../tmp-files/test_all_document_statuses.py | 209 ------------------ 4 files changed, 89 insertions(+), 211 deletions(-) create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py delete mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py new file mode 100644 index 000000000000..73584c4779bf --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py @@ -0,0 +1,87 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +""" +FILE: sample_list_document_statuses_in_a_translation_job_with_filters.py + +DESCRIPTION: + This sample demonstrates how to list all the docs in some translation job for the resource + using different kind of filters/sorting/paging options + + To set up your containers for translation and generate SAS tokens to your containers (or files) + with the appropriate permissions, see the README. + +USAGE: + python sample_list_document_statuses_in_a_translation_job_with_filters.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. + 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. +""" + +def sample_list_document_statuses_in_a_translation_job_with_filters(self, client): + # import libraries + from azure.core.credentials import AzureKeyCredential + from azure.ai.translation.document import ( + DocumentTranslationClient, + ) + import os + from datetime import datetime + import uuid + + # obtain client secrets + endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] + key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + + # authorize client + client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) + + # set your filters + job_id = str(uuid.uuid4()) # this should be the id for the job you'd like to list docs for! + start = datetime(2021, 4, 12) + end = datetime(2021, 4, 14) + statuses = ["Cancelled", "Failed"] + order_by = ["createdDateTimeUtc desc"] + results_per_page = 2 + skip = 3 + + # list jobs + filtered_docs = client.list_all_document_statuses( + job_id, + # filters + statuses=statuses, + created_after=start, + created_before=end, + # ordering + order_by=order_by, + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + + # check statuses + for page in filtered_docs: + for job in page: + display_doc_info(job) + +def display_doc_info(job): + # print("Job ID: {}".format(job.id)) + # print("Job status: {}".format(job.status)) + # print("Job created on: {}".format(job.created_on)) + # print("Job last updated on: {}".format(job.last_updated_on)) + # print("Total number of translations on documents: {}".format(job.documents_total_count)) + # print("Total number of characters charged: {}".format(job.total_characters_charged)) + # print("\nOf total documents...") + # print("{} failed".format(job.documents_failed_count)) + # print("{} succeeded".format(job.documents_succeeded_count)) + # print("{} cancelled\n".format(job.documents_cancelled_count)) + + +if __name__ == '__main__': + sample_list_document_statuses_in_a_translation_job_with_filters() diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py index 7134b19e3633..2f8b59446d75 100644 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py @@ -9,7 +9,7 @@ DESCRIPTION: This sample demonstrates how to list all the submitted translation jobs for the resource - using differen kind of filters/sorting/paging options + using different kind of filters/sorting/paging options To set up your containers for translation and generate SAS tokens to your containers (or files) with the appropriate permissions, see the README. diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py index 0bf3edf7ad6e..5be186cb6d62 100644 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py @@ -9,7 +9,7 @@ DESCRIPTION: This sample demonstrates how to list all the submitted translation jobs for the resource - using differen kind of filters/sorting/paging options + using different kind of filters/sorting/paging options To set up your containers for translation and generate SAS tokens to your containers (or files) with the appropriate permissions, see the README. diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py deleted file mode 100644 index 298c38fec024..000000000000 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses.py +++ /dev/null @@ -1,209 +0,0 @@ -# coding=utf-8 -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ - -from datetime import datetime -import functools -from testcase import DocumentTranslationTest -from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer -from azure.ai.translation.document import DocumentTranslationClient -import pytest - -DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) - - -class TestAllDocumentStatuses(DocumentTranslationTest): - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # list docs statuses - doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list - self.assertEqual(len(doc_statuses), docs_count) - - for document in doc_statuses: - self._validate_doc_status(document, target_language) - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_with_pagination(self, client): - docs_count = 10 - results_per_page = 2 - no_of_pages = docs_count // results_per_page - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses_pages = list(client.list_all_document_statuses(job_id=job_id, results_per_page=results_per_page).by_page()) - self.assertEqual(len(doc_statuses_pages), no_of_pages) - - # iterate by page - for page in doc_statuses_pages: - page_items = list(page) - self.assertLessEqual(len(page_items), results_per_page) - for document in page: - self._validate_doc_status(document, target_language) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_with_skip(self, client): - docs_count = 10 - skip = 2 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = list(client.list_all_document_statuses(job_id=job_id, skip=skip)) - self.assertEqual(len(doc_statuses), docs_count - skip) - - # iterate over docs - for document in doc_statuses: - self._validate_doc_status(document, target_language) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_filter_by_status(self, client): - docs_count = 10 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # list jobs - statuses = ["NotStarted"] - doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) - assert(len(doc_statuses) == 0) - - statuses = ["Succeeded"] - doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) - assert(len(doc_statuses) == docs_count) - - statuses = ["Failed"] - doc_statuses = list(client.list_all_document_statuses(job_id, statuses=statuses)) - assert(len(doc_statuses) == 0) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_filter_by_ids(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # filter ids - doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list - self.assertEqual(len(doc_statuses), docs_count) - ids = [doc.id for doc in doc_statuses] - ids = ids[:docs_count//2] - - # do the testing - doc_statuses = list(client.list_all_document_statuses(job_id, document_ids=ids)) - self.assertEqual(len(doc_statuses), len(ids)) - for document in doc_statuses: - self._validate_doc_status(document, target_language, ids=ids) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_order_by_creation_time_asc(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = list(client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc asc"])) # convert from generic iterator to list - self.assertEqual(len(doc_statuses), docs_count) - - curr = datetime.min - for document in doc_statuses: - assert(document.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) - curr = document.created_on - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_order_by_creation_time_desc(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = list(client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc desc"])) # convert from generic iterator to list - self.assertEqual(len(doc_statuses), docs_count) - - curr = datetime.max - for document in doc_statuses: - assert(document.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) - curr = document.created_on - - - @pytest.mark.skip(reason="not working! - list returned is empty") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - def test_list_document_statuses_mixed_filters(self, client): - docs_count = 25 - target_language = "es" - skip = 3 - results_per_page = 2 - statuses = ["Succeeded"] - - # submit and validate job - job_id = self._create_translation_job_with_dummy_docs(client, docs_count, language_code=target_language, wait=True) - - # get ids - doc_statuses = list(client.list_all_document_statuses(job_id)) # convert from generic iterator to list - self.assertEqual(len(doc_statuses), docs_count) - ids = [doc.id for doc in doc_statuses] - ids = ids[:docs_count//2] - - # list jobs - filtered_docs = client.list_all_document_statuses( - job_id, - # filters - document_ids=ids, - statuses=statuses, - # ordering - order_by=["createdDateTimeUtc asc"], - # paging - skip=skip, - results_per_page=results_per_page - ).by_page() - self.assertIsNotNone(filtered_docs) - - # check statuses - counter = 0 - curr_time = datetime.max - for page in filtered_docs: - page_docs = list(page) - self.assertLessEqual(len(page_docs), results_per_page) # assert paging - for doc in page: - counter += 1 - # assert ordering - assert(doc.created_on.replace(tzinfo=None) <= curr_time.replace(tzinfo=None)) - curr_time = doc.created_on - # assert filters - self.assertIn(doc.status, statuses) - self.assertIn(doc.id, ids) - - assert(counter == len(ids) - skip) From 2c4824f66e28d48266ca1d8a85eadad646e7eb25 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 05:45:27 +0200 Subject: [PATCH 05/14] added async test --- ...tuses_in_a_translation_job_with_filters.py | 26 +- ...in_a_translation_job_with_filters_async.py | 87 +++++++ .../test_all_document_statuses_async.py | 240 ------------------ 3 files changed, 96 insertions(+), 257 deletions(-) create mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py delete mode 100644 sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py index 73584c4779bf..0754c9303343 100644 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py @@ -1,9 +1,6 @@ # coding=utf-8 # ------------------------------------ # Copyright (c) Microsoft Corporation. -# coding=utf-8 -# ------------------------------------ -# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. # ------------------------------------ @@ -56,8 +53,8 @@ def sample_list_document_statuses_in_a_translation_job_with_filters(self, client job_id, # filters statuses=statuses, - created_after=start, - created_before=end, + translated_after=start, + translated_before=end, # ordering order_by=order_by, # paging @@ -70,18 +67,13 @@ def sample_list_document_statuses_in_a_translation_job_with_filters(self, client for job in page: display_doc_info(job) -def display_doc_info(job): - # print("Job ID: {}".format(job.id)) - # print("Job status: {}".format(job.status)) - # print("Job created on: {}".format(job.created_on)) - # print("Job last updated on: {}".format(job.last_updated_on)) - # print("Total number of translations on documents: {}".format(job.documents_total_count)) - # print("Total number of characters charged: {}".format(job.total_characters_charged)) - # print("\nOf total documents...") - # print("{} failed".format(job.documents_failed_count)) - # print("{} succeeded".format(job.documents_succeeded_count)) - # print("{} cancelled\n".format(job.documents_cancelled_count)) - +def display_doc_info(document): + print("Document ID: {}".format(document.id)) + print("Document status: {}".format(document.status)) + if document.status == "Succeeded": + print("Source document location: {}".format(document.source_document_url)) + print("Translated document location: {}".format(document.translated_document_url)) + print("Translated to language: {}\n".format(document.translate_to)) if __name__ == '__main__': sample_list_document_statuses_in_a_translation_job_with_filters() diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py new file mode 100644 index 000000000000..e6952f087302 --- /dev/null +++ b/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py @@ -0,0 +1,87 @@ +# coding=utf-8 +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ + +""" +FILE: sample_list_document_statuses_in_a_translation_job_with_filters_async.py + +DESCRIPTION: + This sample demonstrates how to list all the docs in some translation job for the resource + using different kind of filters/sorting/paging options + + To set up your containers for translation and generate SAS tokens to your containers (or files) + with the appropriate permissions, see the README. + +USAGE: + python sample_list_document_statuses_in_a_translation_job_with_filters_async.py + + Set the environment variables with your own values before running the sample: + 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. + 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. +""" + +import os +import asyncio + +async def sample_list_document_statuses_in_a_translation_job_with_filters_async(self, client): + # import libraries + from azure.core.credentials import AzureKeyCredential + from azure.ai.translation.document import ( + DocumentTranslationClient, + ) + from datetime import datetime + import uuid + + # obtain client secrets + endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] + key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + + # authorize client + client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) + + # set your filters + job_id = str(uuid.uuid4()) # this should be the id for the job you'd like to list docs for! + start = datetime(2021, 4, 12) + end = datetime(2021, 4, 14) + statuses = ["Cancelled", "Failed"] + order_by = ["createdDateTimeUtc desc"] + results_per_page = 2 + skip = 3 + + # list jobs + async with client: + filtered_docs = client.list_all_document_statuses( + job_id, + # filters + statuses=statuses, + translated_after=start, + translated_before=end, + # ordering + order_by=order_by, + # paging + skip=skip, + results_per_page=results_per_page + ).by_page() + + # check statuses + async for page in filtered_docs: + async for job in page: + display_doc_info(job) + +def display_doc_info(document): + print("Document ID: {}".format(document.id)) + print("Document status: {}".format(document.status)) + if document.status == "Succeeded": + print("Source document location: {}".format(document.source_document_url)) + print("Translated document location: {}".format(document.translated_document_url)) + print("Translated to language: {}\n".format(document.translate_to)) + + +async def main(): + await sample_list_document_statuses_in_a_translation_job_with_filters_async() + +if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete(main()) diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py b/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py deleted file mode 100644 index e01f4a4fcd23..000000000000 --- a/sdk/translation/azure-ai-translation-document/samples/tmp-files/test_all_document_statuses_async.py +++ /dev/null @@ -1,240 +0,0 @@ -# coding=utf-8 -# ------------------------------------ -# Copyright (c) Microsoft Corporation. -# Licensed under the MIT License. -# ------------------------------------ - -from datetime import datetime -import functools -from asynctestcase import AsyncDocumentTranslationTest -from preparer import DocumentTranslationPreparer, DocumentTranslationClientPreparer as _DocumentTranslationClientPreparer -from azure.ai.translation.document.aio import DocumentTranslationClient -import pytest - -DocumentTranslationClientPreparer = functools.partial(_DocumentTranslationClientPreparer, DocumentTranslationClient) - - -class TestAllDocumentStatuses(AsyncDocumentTranslationTest): - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = client.list_all_document_statuses(job_id) - doc_statuses_list = [] - - async for document in doc_statuses: - doc_statuses_list.append(document) - self._validate_doc_status(document, target_language) - - self.assertEqual(len(doc_statuses_list), docs_count) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_with_pagination(self, client): - docs_count = 7 - results_per_page = 2 - no_of_pages = docs_count // results_per_page + 1 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses_pages = client.list_all_document_statuses(job_id=job_id, results_per_page=results_per_page).by_page() - pages_list = [] - - # iterate by page - async for page in doc_statuses_pages: - pages_list.append(page) - page_docs_list = [] - async for document in page: - page_docs_list.append(document) - self._validate_doc_status(document, target_language) - self.assertLessEqual(len(page_docs_list), results_per_page) - - self.assertEqual(len(pages_list), no_of_pages) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_with_skip(self, client): - docs_count = 5 - skip = 2 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = client.list_all_document_statuses(job_id=job_id, skip=skip) - doc_statuses_list = [] - - # iterate over docs - async for document in doc_statuses: - doc_statuses_list.append(document) - self._validate_doc_status(document, target_language) - - self.assertEqual(len(doc_statuses_list), docs_count - skip) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_filter_by_status(self, client): - docs_count = 10 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # list jobs - statuses = ["NotStarted"] - doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) - counter = 0 - async for doc in doc_statuses: - counter += 1 - assert(counter == 0) - - statuses = ["Succeeded"] - doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) - counter = 0 - async for doc in doc_statuses: - counter += 1 - assert(counter == docs_count) - - statuses = ["Failed"] - doc_statuses = client.list_all_document_statuses(job_id, statuses=statuses) - counter = 0 - async for doc in doc_statuses: - counter += 1 - assert(counter == 0) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_filter_by_ids(self, client): - docs_count = 15 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # filter ids - doc_statuses = client.list_all_document_statuses(job_id) - ids = [document.id async for document in doc_statuses] - self.assertEqual(len(ids), docs_count) - ids = ids[:docs_count//2] - - # do the testing - doc_statuses = client.list_all_document_statuses(job_id, document_ids=ids) - counter = 0 - async for document in doc_statuses: - counter += 1 - self._validate_doc_status(document, target_language, ids=ids) - - assert(counter == len(ids)) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_order_by_creation_time_asc(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc asc"]) - - curr = datetime.min - docs = [] - async for document in doc_statuses: - docs.append(document) - assert(document.created_on.replace(tzinfo=None) >= curr.replace(tzinfo=None)) - curr = document.created_on - - self.assertEqual(len(docs), docs_count) - - - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_order_by_creation_time_desc(self, client): - docs_count = 5 - target_language = "es" - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # check doc statuses - doc_statuses = client.list_all_document_statuses(job_id, order_by=["createdDateTimeUtc desc"]) - - curr = datetime.max - docs = [] - async for document in doc_statuses: - docs.append(document) - assert(document.created_on.replace(tzinfo=None) <= curr.replace(tzinfo=None)) - curr = document.created_on - - self.assertEqual(len(docs), docs_count) - - - @pytest.mark.skip(reason="not working! - list returned is empty") - @DocumentTranslationPreparer() - @DocumentTranslationClientPreparer() - async def test_list_document_statuses_mixed_filters(self, client): - docs_count = 25 - target_language = "es" - results_per_page = 2 - statuses = ["Succeeded"] - skip = 3 - - # submit and validate job - job_id = await self._create_translation_job_with_dummy_docs_async(client, docs_count, language_code=target_language, wait=True) - - # get ids - doc_statuses = client.list_all_document_statuses(job_id) - ids = [document.id async for document in doc_statuses] - self.assertEqual(len(ids), docs_count) - ids = ids[:docs_count//2] - - # list jobs - filtered_docs = client.list_all_document_statuses( - job_id, - # filters - document_ids=ids, - statuses=statuses, - # ordering - order_by=["createdDateTimeUtc asc"], - # paging - skip=skip, - results_per_page=results_per_page - ).by_page() - - # check statuses - counter = 0 - curr_time = datetime.max - async for page in filtered_docs: - page_docs = [] - async for doc in page: - counter += 1 - page_docs.append(doc) - # assert ordering - assert(doc.created_on.replace(tzinfo=None) <= curr_time.replace(tzinfo=None)) - curr_time = doc.created_on - # assert filters - self.assertIn(doc.status, statuses) - self.assertIn(doc.id, ids) - - self.assertLessEqual(len(page_docs), results_per_page) # assert paging - - assert(counter == len(ids) - skip) - From a248dbeada569771c1eaaf86389994b76adbd60c Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Mon, 3 May 2021 05:46:23 +0200 Subject: [PATCH 06/14] move samples to proper directory --- ...t_document_statuses_in_a_translation_job_with_filters_async.py | 0 .../sample_list_submitted_jobs_with_filters_async.py | 0 ...le_list_document_statuses_in_a_translation_job_with_filters.py | 0 .../{tmp-files => }/sample_list_submitted_jobs_with_filters.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename sdk/translation/azure-ai-translation-document/samples/{tmp-files => async_samples}/sample_list_document_statuses_in_a_translation_job_with_filters_async.py (100%) rename sdk/translation/azure-ai-translation-document/samples/{tmp-files => async_samples}/sample_list_submitted_jobs_with_filters_async.py (100%) rename sdk/translation/azure-ai-translation-document/samples/{tmp-files => }/sample_list_document_statuses_in_a_translation_job_with_filters.py (100%) rename sdk/translation/azure-ai-translation-document/samples/{tmp-files => }/sample_list_submitted_jobs_with_filters.py (100%) diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_in_a_translation_job_with_filters_async.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters_async.py rename to sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_in_a_translation_job_with_filters_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters_async.py rename to sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_in_a_translation_job_with_filters.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_document_statuses_in_a_translation_job_with_filters.py rename to sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_in_a_translation_job_with_filters.py diff --git a/sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/tmp-files/sample_list_submitted_jobs_with_filters.py rename to sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py From f67c7eac2f547e18a1c1c95c47d71728b92eadf5 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Thu, 6 May 2021 01:02:26 +0200 Subject: [PATCH 07/14] simplify sample name --- ...ync.py => sample_list_document_statuses_with_filters_async.py} | 0 ...h_filters.py => sample_list_document_statuses_with_filters.py} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename sdk/translation/azure-ai-translation-document/samples/async_samples/{sample_list_document_statuses_in_a_translation_job_with_filters_async.py => sample_list_document_statuses_with_filters_async.py} (100%) rename sdk/translation/azure-ai-translation-document/samples/{sample_list_document_statuses_in_a_translation_job_with_filters.py => sample_list_document_statuses_with_filters.py} (100%) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_in_a_translation_job_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_in_a_translation_job_with_filters_async.py rename to sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_in_a_translation_job_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py similarity index 100% rename from sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_in_a_translation_job_with_filters.py rename to sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py From dee0aa7c503d8c557e43b53666dd33431bd69a71 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Thu, 6 May 2021 01:17:18 +0200 Subject: [PATCH 08/14] expose job_id as env variable --- .../sample_list_document_statuses_with_filters_async.py | 2 +- .../samples/sample_list_document_statuses_with_filters.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index e6952f087302..d3048c5e8a85 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -37,12 +37,12 @@ async def sample_list_document_statuses_in_a_translation_job_with_filters_async( # obtain client secrets endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + job_id = os.environ["JOB_ID"] # this should be the id for the job you'd like to list docs for! # authorize client client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters - job_id = str(uuid.uuid4()) # this should be the id for the job you'd like to list docs for! start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index 0754c9303343..ac47f6f0ae5e 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -35,12 +35,12 @@ def sample_list_document_statuses_in_a_translation_job_with_filters(self, client # obtain client secrets endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] + job_id = os.environ["JOB_ID"] # this should be the id for the job you'd like to list docs for! # authorize client client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters - job_id = str(uuid.uuid4()) # this should be the id for the job you'd like to list docs for! start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] From f490cfe4868d1ac607b964fba14eec3b2c2439c1 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 00:20:10 +0200 Subject: [PATCH 09/14] update sample file name --- .../sample_list_document_statuses_with_filters_async.py | 8 ++++---- .../samples/sample_list_document_statuses_with_filters.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index d3048c5e8a85..f430a110b1db 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -5,7 +5,7 @@ # ------------------------------------ """ -FILE: sample_list_document_statuses_in_a_translation_job_with_filters_async.py +FILE: sample_list_document_statuses_with_filters_async.py DESCRIPTION: This sample demonstrates how to list all the docs in some translation job for the resource @@ -15,7 +15,7 @@ with the appropriate permissions, see the README. USAGE: - python sample_list_document_statuses_in_a_translation_job_with_filters_async.py + python sample_list_document_statuses_with_filters_async.py Set the environment variables with your own values before running the sample: 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. @@ -25,7 +25,7 @@ import os import asyncio -async def sample_list_document_statuses_in_a_translation_job_with_filters_async(self, client): +async def sample_list_document_statuses_with_filters_async(self, client): # import libraries from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document import ( @@ -80,7 +80,7 @@ def display_doc_info(document): async def main(): - await sample_list_document_statuses_in_a_translation_job_with_filters_async() + await sample_list_document_statuses_with_filters_async() if __name__ == '__main__': loop = asyncio.get_event_loop() diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index ac47f6f0ae5e..746409f4daae 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -5,7 +5,7 @@ # ------------------------------------ """ -FILE: sample_list_document_statuses_in_a_translation_job_with_filters.py +FILE: sample_list_document_statuses_with_filters.py DESCRIPTION: This sample demonstrates how to list all the docs in some translation job for the resource @@ -15,14 +15,14 @@ with the appropriate permissions, see the README. USAGE: - python sample_list_document_statuses_in_a_translation_job_with_filters.py + python sample_list_document_statuses_with_filters.py Set the environment variables with your own values before running the sample: 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. """ -def sample_list_document_statuses_in_a_translation_job_with_filters(self, client): +def sample_list_document_statuses_with_filters(self, client): # import libraries from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document import ( @@ -76,4 +76,4 @@ def display_doc_info(document): print("Translated to language: {}\n".format(document.translate_to)) if __name__ == '__main__': - sample_list_document_statuses_in_a_translation_job_with_filters() + sample_list_document_statuses_with_filters() From 913dcf12aba4add41a851b754cecfa8c88cac099 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 00:22:06 +0200 Subject: [PATCH 10/14] update description --- .../sample_list_document_statuses_with_filters_async.py | 2 +- .../samples/sample_list_document_statuses_with_filters.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index f430a110b1db..68d9606bbfed 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -8,7 +8,7 @@ FILE: sample_list_document_statuses_with_filters_async.py DESCRIPTION: - This sample demonstrates how to list all the docs in some translation job for the resource + This sample demonstrates how to list all the document in a translation job for the resource using different kind of filters/sorting/paging options To set up your containers for translation and generate SAS tokens to your containers (or files) diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index 746409f4daae..002d599435f2 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -8,7 +8,7 @@ FILE: sample_list_document_statuses_with_filters.py DESCRIPTION: - This sample demonstrates how to list all the docs in some translation job for the resource + This sample demonstrates how to list all the document in a translation job for the resource using different kind of filters/sorting/paging options To set up your containers for translation and generate SAS tokens to your containers (or files) From c8995ed22a290e70047c5c388a9b37c00af1522c Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 00:26:02 +0200 Subject: [PATCH 11/14] removed unused imports --- .../sample_list_document_statuses_with_filters_async.py | 1 - .../samples/sample_list_document_statuses_with_filters.py | 1 - 2 files changed, 2 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index 68d9606bbfed..050216ab8268 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -32,7 +32,6 @@ async def sample_list_document_statuses_with_filters_async(self, client): DocumentTranslationClient, ) from datetime import datetime - import uuid # obtain client secrets endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index 002d599435f2..8c626dbf1521 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -30,7 +30,6 @@ def sample_list_document_statuses_with_filters(self, client): ) import os from datetime import datetime - import uuid # obtain client secrets endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] From a092c19737420659a0ef257b81a4805aac545410 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 00:27:22 +0200 Subject: [PATCH 12/14] update sample docs --- .../sample_list_document_statuses_with_filters_async.py | 1 + .../samples/sample_list_document_statuses_with_filters.py | 1 + 2 files changed, 2 insertions(+) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index 050216ab8268..16037e44b234 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -20,6 +20,7 @@ Set the environment variables with your own values before running the sample: 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. + 3) JOB_ID - The ID of the translation job """ import os diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index 8c626dbf1521..a75b311feec8 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -20,6 +20,7 @@ Set the environment variables with your own values before running the sample: 1) AZURE_DOCUMENT_TRANSLATION_ENDPOINT - the endpoint to your Document Translation resource. 2) AZURE_DOCUMENT_TRANSLATION_KEY - your Document Translation API key. + 3) JOB_ID - The ID of the translation job """ def sample_list_document_statuses_with_filters(self, client): From d66f5c21743b19f764bef9a63b2903745dfd3d07 Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 01:46:10 +0200 Subject: [PATCH 13/14] update filter notes --- .../sample_list_document_statuses_with_filters_async.py | 6 ++++++ .../sample_list_submitted_jobs_with_filters_async.py | 6 ++++++ .../samples/sample_list_document_statuses_with_filters.py | 6 ++++++ .../samples/sample_list_submitted_jobs_with_filters.py | 6 ++++++ 4 files changed, 24 insertions(+) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index 16037e44b234..05c1760c8ff7 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -43,6 +43,12 @@ async def sample_list_document_statuses_with_filters_async(self, client): client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters + ''' + Note: + these are just sample values for the filters! + please comment any filters you don't want to use + only leave the ones you want + ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py index 5be186cb6d62..f16a8de23c3f 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py @@ -40,6 +40,12 @@ async def sample_list_submitted_jobs_with_filters_async(): client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) async with client: # set your filters + ''' + Note: + these are just sample values for the filters! + please comment any filters you don't want to use + only leave the ones you want + ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index a75b311feec8..c384c4bf29ec 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -41,6 +41,12 @@ def sample_list_document_statuses_with_filters(self, client): client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters + ''' + Note: + these are just sample values for the filters! + please comment any filters you don't want to use + only leave the ones you want + ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py index 2f8b59446d75..e8f6d79dcefe 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py @@ -41,6 +41,12 @@ def sample_list_submitted_jobs_with_filters(): client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters + ''' + Note: + these are just sample values for the filters! + please comment any filters you don't want to use + only leave the ones you want + ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Cancelled", "Failed"] From 85b02d1752b38631d32acf84d2edf1e7c83ec07c Mon Sep 17 00:00:00 2001 From: "MIDDLEEAST\\v-moshaban" Date: Fri, 7 May 2021 01:55:55 +0200 Subject: [PATCH 14/14] update filter comment message --- .../sample_list_document_statuses_with_filters_async.py | 3 +-- .../sample_list_submitted_jobs_with_filters_async.py | 3 +-- .../samples/sample_list_document_statuses_with_filters.py | 3 +-- .../samples/sample_list_submitted_jobs_with_filters.py | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py index 05c1760c8ff7..4c6295c21f85 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_document_statuses_with_filters_async.py @@ -46,8 +46,7 @@ async def sample_list_document_statuses_with_filters_async(self, client): ''' Note: these are just sample values for the filters! - please comment any filters you don't want to use - only leave the ones you want + please comment/uncomment/change what you are interested in using. ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) diff --git a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py index f16a8de23c3f..519c38949170 100644 --- a/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py +++ b/sdk/translation/azure-ai-translation-document/samples/async_samples/sample_list_submitted_jobs_with_filters_async.py @@ -43,8 +43,7 @@ async def sample_list_submitted_jobs_with_filters_async(): ''' Note: these are just sample values for the filters! - please comment any filters you don't want to use - only leave the ones you want + please comment/uncomment/change what you are interested in using. ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py index c384c4bf29ec..cea903285416 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_document_statuses_with_filters.py @@ -44,8 +44,7 @@ def sample_list_document_statuses_with_filters(self, client): ''' Note: these are just sample values for the filters! - please comment any filters you don't want to use - only leave the ones you want + please comment/uncomment/change what you are interested in using. ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) diff --git a/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py b/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py index e8f6d79dcefe..b00e17ffda84 100644 --- a/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py +++ b/sdk/translation/azure-ai-translation-document/samples/sample_list_submitted_jobs_with_filters.py @@ -44,8 +44,7 @@ def sample_list_submitted_jobs_with_filters(): ''' Note: these are just sample values for the filters! - please comment any filters you don't want to use - only leave the ones you want + please comment/uncomment/change what you are interested in using. ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14)