text: # coding=utf-8
  # --------------------------------------------------------------------------
  # Copyright (c) Microsoft Corporation. All rights reserved.
  # Licensed under the MIT License. See License.txt in the project root for license information.
  # Code generated by Microsoft (R) AutoRest Code Generator.
  # Changes may cause incorrect behavior and will be lost if the code is regenerated.
  # --------------------------------------------------------------------------
  
  from typing import Any
  
  from azure.core import AsyncPipelineClient
  from msrest import Deserializer, Serializer
  
  from ._configuration import CommunicationIdentityClientConfiguration
  from .operations import CommunicationIdentityOperations
  from .. import models
  
  
  class CommunicationIdentityClient(object):
      """Azure Communication Identity Service.
  
      :ivar communication_identity: CommunicationIdentityOperations operations
      :vartype communication_identity: azure.communication.identity.aio.operations.CommunicationIdentityOperations
      :param endpoint: Auth and Identity endpoint.
      :type endpoint: str
      """
  
      def __init__(
          self,
          endpoint: str,
          **kwargs: Any
      ) -> None:
          base_url = '{endpoint}'
          self._config = CommunicationIdentityClientConfiguration(endpoint, **kwargs)
          self._client = AsyncPipelineClient(base_url=base_url, config=self._config, **kwargs)
  
          client_models = {k: v for k, v in models.__dict__.items() if isinstance(v, type)}
          self._serialize = Serializer(client_models)
          self._deserialize = Deserializer(client_models)
  
          self.communication_identity = CommunicationIdentityOperations(
              self._client, self._config, self._serialize, self._deserialize)
  
      async def close(self) -> None:
          await self._client.close()
  
      async def __aenter__(self) -> "CommunicationIdentityClient":
          await self._client.__aenter__()
          return self
  
      async def __aexit__(self, *exc_details) -> None:
          await self._client.__aexit__(*exc_details)
  