File: preparers.py

package info (click to toggle)
python-azure 20250603%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 851,724 kB
  • sloc: python: 7,362,925; ansic: 804; javascript: 287; makefile: 195; sh: 145; xml: 109
file content (65 lines) | stat: -rw-r--r-- 2,573 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 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.
# --------------------------------------------------------------------------
import inspect
import functools

from azure.core.credentials import AzureKeyCredential
from devtools_testutils import AzureMgmtPreparer, EnvironmentVariableLoader

import azure.ai.vision.face as Client
import azure.ai.vision.face.aio as AsyncClient

from _shared import helpers


class ClientPreparer(AzureMgmtPreparer):
    def __init__(self, client_cls, client_kwargs={}, **kwargs):
        super(ClientPreparer, self).__init__(name_prefix="", random_name_length=24)
        self._client_kwargs = client_kwargs
        self._client_cls = client_cls
        self._client = None

    def create_resource(self, name, **kwargs):
        endpoint = helpers.get_face_endpoint(**kwargs)
        account_key = helpers.get_account_key(**kwargs)

        self._client = self._client_cls(endpoint, AzureKeyCredential(account_key))
        env_name = (
            self._client_kwargs["client_env_name"]
            if self._client_kwargs is not None and "client_env_name" in self._client_kwargs
            else "client"
        )

        kwargs.update({env_name: self._client})
        return kwargs

    def remove_resource(self, name, **kwargs):
        # User has to call `await close()` in the test case if it is a coroutine function.
        if not inspect.iscoroutinefunction(self._client.close):
            self._client.close()


FacePreparer = functools.partial(
    EnvironmentVariableLoader,
    "face",
    azure_face_api_endpoint="https://fakeendpoint.cognitiveservices.azure.com",
    azure_face_api_account_key="fakeaccountkey",
)

FaceClientPreparer = functools.partial(ClientPreparer, Client.FaceClient)
FaceAdministrationClientPreparer = functools.partial(
    ClientPreparer, Client.FaceAdministrationClient, client_kwargs={"client_env_name": "administration_client"}
)
FaceSessionClientPreparer = functools.partial(ClientPreparer, Client.FaceSessionClient)

# Async client
AsyncFaceClientPreparer = functools.partial(ClientPreparer, AsyncClient.FaceClient)
AsyncFaceAdministrationClientPreparer = functools.partial(
    ClientPreparer, AsyncClient.FaceAdministrationClient, client_kwargs={"client_env_name": "administration_client"}
)
AsyncFaceSessionClientPreparer = functools.partial(ClientPreparer, AsyncClient.FaceSessionClient)