Source code for azure.ai.formrecognizer.aio._async_polling

# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------

# pylint: disable=protected-access

import json
import datetime
from typing import TypeVar, Any, Mapping
from typing_extensions import Protocol, runtime_checkable
from azure.core.polling import AsyncLROPoller, AsyncPollingMethod
from .._polling import parse_operation_id

PollingReturnType = TypeVar("PollingReturnType")


[docs]@runtime_checkable class AsyncDocumentModelAdministrationLROPoller(Protocol[PollingReturnType]): """Implements a protocol followed by returned poller objects.""" @property def details( # pylint: disable=no-self-use, unused-argument self, ) -> Mapping[str, Any]: ...
[docs] def polling_method( # pylint: disable=no-self-use self, ) -> AsyncPollingMethod[PollingReturnType]: ...
[docs] def continuation_token(self) -> str: # pylint: disable=no-self-use ...
[docs] def status(self) -> str: # pylint: disable=no-self-use ...
[docs] async def result( # pylint: disable=no-self-use, unused-argument self, ) -> PollingReturnType: ...
[docs] async def wait(self) -> None: # pylint: disable=no-self-use, unused-argument ...
[docs] def done(self) -> bool: # pylint: disable=no-self-use ...
class AsyncDocumentModelAdministrationClientLROPoller(AsyncLROPoller[PollingReturnType]): """Custom poller for model build operations. Call `result()` on the poller to return a :class:`~azure.ai.formrecognizer.DocumentModelInfo`. .. versionadded:: 2022-08-31 The *AsyncDocumentModelAdministrationClientLROPoller* poller object """ @property def _current_body(self): body = self.polling_method()._pipeline_response.http_response.text() if body: return json.loads(body) return {} @property def details(self) -> Mapping[str, Any]: """Returns metadata associated with the long-running operation.""" created_on = self._current_body.get("createdDateTime", None) if created_on: created_on = datetime.datetime.strptime(created_on, "%Y-%m-%dT%H:%M:%SZ") last_updated_on = self._current_body.get("lastUpdatedDateTime", None) if last_updated_on: last_updated_on = datetime.datetime.strptime(last_updated_on, "%Y-%m-%dT%H:%M:%SZ") return { "operation_id": parse_operation_id( self.polling_method()._initial_response.http_response.headers["Operation-Location"] # type: ignore ), "operation_kind": self._current_body.get("kind", None), "percent_completed": self._current_body.get("percentCompleted", 0), "resource_location_url": self._current_body.get("resourceLocation", None), "created_on": created_on, "last_updated_on": last_updated_on, } @classmethod def from_continuation_token( cls, polling_method: AsyncPollingMethod[PollingReturnType], continuation_token: str, **kwargs: Any ) -> "AsyncDocumentModelAdministrationClientLROPoller": ( client, initial_response, deserialization_callback, ) = polling_method.from_continuation_token(continuation_token, **kwargs) return cls(client, initial_response, deserialization_callback, polling_method) # type: ignore