Source code for berserk.clients.external_engine

from __future__ import annotations

from typing import List, cast

from .base import BaseClient


[docs]class ExternalEngine(BaseClient): """Client for external engine related endpoints."""
[docs] def get(self) -> List[ExternalEngine]: """Lists all external engines that have been registered for the user, and the credentials required to use them. Requires OAuth2 authorization. :return: info about the external engines """ path = "/api/external-engine" return cast(List[ExternalEngine], self._r.get(path))
[docs] def get_by_id(self, engine_id: str) -> ExternalEngine: """Get properties and credentials of an external engine. Requires OAuth2 authorization. :param engine_id: external engine ID :return: info about the external engine """ path = f"/api/external-engine/{engine_id}" return cast(ExternalEngine, self._r.get(path))
[docs] def create( self, name: str, max_threads: int, max_hash_table_size: int, default_depth: int, provider_secret: str, variants: List[str] | None = None, provider_data: str | None = None, ) -> ExternalEngine: """Registers a new external engine for the user. Requires OAuth2 authorization. :param name: engine display name :param max_threads: maximum number of available threads :param max_hash_table_size: maximum available hash table size, in MiB :param default_depth: estimated depth of normal search :param provider_secret: random token that used to wait for analysis requests and provide analysis :param variants: list of supported chess variants :param provider_data: arbitrary data that engine provider can use for identification or bookkeeping :return: info about the external engine """ path = "/api/external-engine" payload = { "name": name, "maxThreads": max_threads, "maxHash": max_hash_table_size, "defaultDepth": default_depth, "variants": variants, "providerSecret": provider_secret, "providerData": provider_data, } return cast(ExternalEngine, self._r.post(path=path, payload=payload))
[docs] def update( self, engine_id: str, name: str, max_threads: int, max_hash_table_size: int, default_depth: int, provider_secret: str, variants: List[str] | None = None, provider_data: str | None = None, ) -> ExternalEngine: """Updates the properties of an external engine. Requires OAuth2 authorization. :param engine_id: engine ID :param name: engine display name :param max_threads: maximum number of available threads :param max_hash_table_size: maximum available hash table size, in MiB :param default_depth: estimated depth of normal search :param provider_secret: random token that used to wait for analysis requests and provide analysis :param variants: list of supported chess variants :param provider_data: arbitrary data that engine provider can use for identification or bookkeeping :return: info about the external engine """ path = f"/api/external-engine/{engine_id}" payload = { "name": name, "maxThreads": max_threads, "maxHash": max_hash_table_size, "defaultDepth": default_depth, "variants": variants, "providerSecret": provider_secret, "providerData": provider_data, } return cast( ExternalEngine, self._r.request(method="PUT", path=path, payload=payload) )
[docs] def delete(self, engine_id: str) -> None: """Unregisters an external engine. Requires OAuth2 authorization. :param engine_id: engine ID """ path = f"/api/external-engine/{engine_id}" self._r.request("DELETE", path)