Source code for berserk.clients.tablebase

from __future__ import annotations

from typing import Any, Dict, Literal
import requests

from .base import BaseClient

TABLEBASE_URL = "https://tablebase.lichess.ovh"


[docs]class Tablebase(BaseClient): """Client for tablebase related endpoints.""" def __init__(self, session: requests.Session, tablebase_url: str | None = None): super().__init__(session, tablebase_url or TABLEBASE_URL)
[docs] def look_up( self, position: str, variant: Literal["standard"] | Literal["atomic"] | Literal["antichess"] = "standard", ) -> Dict[str, Any]: """Look up the tablebase result for a position. :param position: FEN of the position to look up :param variant: the variant of the position to look up (supported are standard, atomic, and antichess) :return: tablebase information about this position """ path = f"/{variant}" params = {"fen": position} return self._r.get(path, params=params)
[docs] def standard(self, position: str) -> Dict[str, Any]: """Look up the tablebase result for a standard chess position. :param position: FEN of the position to lookup :return: tablebase information about this position """ return self.look_up(position, "standard")
[docs] def atomic(self, position: str) -> Dict[str, Any]: """Look up the tablebase result for an atomic chess position. :param position: FEN of the position to lookup :return: tablebase information about this position """ return self.look_up(position, "atomic")
[docs] def antichess(self, position: str) -> Dict[str, Any]: """Look up the tablebase result for an antichess position. :param position: FEN of the position to lookup :return: tablebase information about this position """ return self.look_up(position, "antichess")