Source code for paperswithcode.client

from urllib import parse
from typing import Dict, Optional


from tea_client.http import HttpClient
from tea_client.handler import handler

from paperswithcode.config import config
from paperswithcode.models import (
    Paper,
    Papers,
    Repository,
    Repositories,
    PaperRepos,
    Author,
    Authors,
    Conference,
    Conferences,
    Proceeding,
    Proceedings,
    Area,
    Areas,
    Task,
    TaskCreateRequest,
    TaskUpdateRequest,
    Tasks,
    Dataset,
    DatasetCreateRequest,
    DatasetUpdateRequest,
    Datasets,
    Method,
    Methods,
    Metric,
    Metrics,
    MetricCreateRequest,
    MetricUpdateRequest,
    Result,
    Results,
    ResultCreateRequest,
    ResultUpdateRequest,
    EvaluationTable,
    EvaluationTables,
    EvaluationTableCreateRequest,
    EvaluationTableUpdateRequest,
    EvaluationTableSyncRequest,
    EvaluationTableSyncResponse,
)


[docs]class PapersWithCodeClient: """PapersWithCode client."""
[docs] def __init__(self, token=None, url=None): url = url or config.server_url self.http = HttpClient( url=f"{url}/api/v{config.api_version}", token=token or "", authorization_method=HttpClient.Authorization.token, )
@staticmethod def __params(page: int, items_per_page: int, **kwargs) -> Dict[str, str]: params = {key: str(value) for key, value in kwargs.items()} params["page"] = str(page) params["items_per_page"] = str(items_per_page) return params @staticmethod def __parse(url: str) -> int: """Return page number.""" p = parse.urlparse(url) if p.query == "": return 1 else: q = parse.parse_qs(p.query) return int(q.get("page", [1])[0]) @classmethod def __page(cls, result, page_model): next_page = result["next"] if next_page is not None: next_page = cls.__parse(next_page) previous_page = result["previous"] if previous_page is not None: previous_page = cls.__parse(previous_page) return page_model( count=result["count"], next_page=next_page, previous_page=previous_page, results=result["results"], )
[docs] @handler def search( self, q: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> PaperRepos: """Search in a similar fashion to the frontpage search. Args: q (str, optional): Filter papers by querying the paper title and abstract. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: PaperRepos: PaperRepos object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q return self.__page( self.http.get("/search/", params=params, timeout=timeout), PaperRepos, )
[docs] @handler def paper_list( self, q: Optional[str] = None, arxiv_id: Optional[str] = None, title: Optional[str] = None, abstract: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Papers: """Return a paginated list of papers. Args: q (str, optional): Filter papers by querying the paper title and abstract. arxiv_id (str, optional): Filter papers by arxiv id. title (str, optional): Filter papers by part of the title. abstract (str, optional): Filter papers by part of the abstract. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Papers: Papers object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q timeout = 60 if arxiv_id is not None: params["arxiv_id"] = arxiv_id if title is not None: params["title"] = title if abstract is not None: params["abstract"] = abstract timeout = 60 return self.__page( self.http.get("/papers/", params=params, timeout=timeout), Papers )
[docs] @handler def paper_get(self, paper_id: str) -> Paper: """Return a paper by it's ID. Args: paper_id (str): ID of the paper. Returns: Paper: Paper object. """ return Paper(**self.http.get(f"/papers/{paper_id}/"))
[docs] @handler def paper_dataset_list( self, paper_id: str, page: int = 1, items_per_page: int = 50 ) -> Repositories: """Return a list of datasets mentioned in the paper.. Args: paper_id (str): ID of the paper. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Datasets: Datasets object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/papers/{paper_id}/datasets/", params=params), Datasets, )
[docs] @handler def paper_repository_list( self, paper_id: str, page: int = 1, items_per_page: int = 50 ) -> Repositories: """Return a list of paper implementations. Args: paper_id (str): ID of the paper. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Repositories: Repositories object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/papers/{paper_id}/repositories/", params=params), Repositories, )
[docs] @handler def paper_task_list( self, paper_id: str, page: int = 1, items_per_page: int = 50 ) -> Tasks: """Return a list of tasks mentioned in the paper. Args: paper_id (str): ID of the paper. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Tasks: Tasks object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/papers/{paper_id}/tasks/", params=params), Tasks )
[docs] @handler def paper_method_list( self, paper_id: str, page: int = 1, items_per_page: int = 50 ) -> Methods: """Return a list of methods mentioned in the paper. Args: paper_id (str): ID of the paper. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Methods: Methods object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/papers/{paper_id}/methods/", params=params), Methods, )
[docs] @handler def paper_result_list( self, paper_id: str, page: int = 1, items_per_page: int = 50 ) -> Results: """Return a list of evaluation results for the paper. Args: paper_id (str): ID of the paper. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Results: Results object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/papers/{paper_id}/results/", params=params), Results, )
[docs] @handler def repository_list( self, q: Optional[str] = None, owner: Optional[str] = None, name: Optional[str] = None, stars: Optional[int] = None, framework: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Papers: """Return a paginated list of repositories. Args: q (str, optional): Search all searchable fields. owner (str, optional): Filter repositories by owner. name (str, optional): Filter repositories by name. stars (int, optional): Filter repositories by minimum number of stars. framework (str, optional): Filter repositories by framework. Available values: tf, pytorch, mxnet, torch, caffe2, jax, paddle, mindspore. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Repositories: Repositories object. """ params = self.__params(page, items_per_page) if q is not None: params["q"] = q if owner is not None: params["owner"] = owner if name is not None: params["name"] = name if stars is not None: params["stars"] = str(stars) if framework is not None: params["framework"] = framework return self.__page( self.http.get("/repositories/", params=params), Repositories, )
[docs] @handler def repository_owner_list(self, owner: str) -> Repositories: """List all repositories for a specific repo owner. Args: owner (str): Repository owner. Returns: Repositories: Repositories object. """ return self.__page( self.http.get(f"/repositories/{owner}"), Repositories, )
[docs] @handler def repository_get(self, owner: str, name: str) -> Repository: """Return a repository by it's owner/name pair. Args: owner (str): Owner name. name (str): Repository name. Returns: Repository: Repository object. """ return Repository(**self.http.get(f"/repositories/{owner}/{name}/"))
[docs] @handler def repository_paper_list( self, owner: str, name: str, page: int = 1, items_per_page: int = 50 ) -> Papers: """List all papers connected to the repository. Args: owner (str): Owner name. name (str): Repository name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Papers: Papers object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get( f"/repositories/{owner}/{name}/papers/", params=params ), Papers, )
[docs] @handler def author_list( self, q: Optional[str] = None, full_name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Authors: """Return a paginated list of paper authors. Args: q (str, optional): Search all searchable fields. full_name (str, optional): Filter authors by part of their full name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Repositories: Repositories object. """ params = self.__params(page, items_per_page) if q is not None: params["q"] = q if full_name is not None: params["full_name"] = full_name return self.__page(self.http.get("/authors/", params=params), Authors)
[docs] @handler def author_get(self, author_id: str) -> Author: """Return a specific author selected by its id. Args: author_id (str): Author id. Returns: Author: Author object. """ return Author(**self.http.get(f"/authors/{author_id}/"))
[docs] @handler def author_paper_list( self, author_id: str, page: int = 1, items_per_page: int = 50 ) -> Papers: """List all papers connected to the author. Args: author_id (str): Author id. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Papers: Papers object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/authors/{author_id}/papers/", params=params), Papers, )
[docs] @handler def conference_list( self, q: Optional[str] = None, name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Conferences: """Return a paginated list of conferences. Args: q (str, optional): Search all searchable fields. name (str, optional): Filter conferences by part of the name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Conferences: Conferences object. """ params = self.__params(page, items_per_page) if q is not None: params["q"] = q if name is not None: params["name"] = name return self.__page( self.http.get("/conferences/", params=params), Conferences )
[docs] @handler def conference_get(self, conference_id: str) -> Conference: """Return a conference by it's ID. Args: conference_id (str): ID of the conference. Returns: Conference: Conference object. """ return Conference(**self.http.get(f"/conferences/{conference_id}/"))
[docs] @handler def proceeding_list( self, conference_id: str, page: int = 1, items_per_page: int = 50 ) -> Proceedings: """Return a paginated list of conference proceedings. Args: conference_id (str): ID of the conference. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Proceedings: Proceedings object. """ return self.__page( self.http.get( f"/conferences/{conference_id}/proceedings/", params=self.__params(page, items_per_page), ), Proceedings, )
[docs] @handler def proceeding_get( self, conference_id: str, proceeding_id: str ) -> Proceeding: """Return a conference proceeding by it's ID. Args: conference_id (str): ID of the conference. proceeding_id (str): ID of the proceeding. Returns: Proceeding: Proceeding object. """ return Proceeding( **self.http.get( f"/conferences/{conference_id}/proceedings/{proceeding_id}/" ) )
[docs] @handler def proceeding_paper_list( self, conference_id: str, proceeding_id: str, page: int = 1, items_per_page: int = 50, ) -> Papers: """Return a list of papers published in a confernce proceeding. Args: conference_id (str): ID of the conference. proceeding_id (str): ID of the proceding. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Papers: Papers object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get( f"/conferences/{conference_id}/proceedings/{proceeding_id}" f"/papers/", params=params, ), Papers, )
[docs] @handler def area_list( self, q: Optional[str] = None, name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Areas: """Return a paginated list of areas. Args: q (str, optional): Filter areas by querying the area name. name (str, optional): Filter areas by part of the name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Areas: Areas object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q timeout = 60 if name is not None: params["name"] = name return self.__page( self.http.get("/areas/", params=params, timeout=timeout), Areas )
[docs] @handler def area_get(self, area_id: str) -> Area: """Return an area by it's ID. Args: area_id (str): ID of the area. Returns: Area: Area object. """ return Area(**self.http.get(f"/areas/{area_id}/"))
[docs] @handler def area_task_list( self, area_id: str, page: int = 1, items_per_page: int = 50 ) -> Tasks: """Return a paginated list of tasks in an area. Args: area_id (str): ID of the area. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Tasks: Tasks object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/areas/{area_id}/tasks/", params=params), Tasks )
[docs] @handler def task_list( self, q: Optional[str] = None, name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Tasks: """Return a paginated list of tasks. Args: q (str, optional): Filter tasks by querying the task name. name (str, optional): Filter tasks by part of th name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Tasks: Tasks object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q timeout = 60 if name is not None: params["name"] = name return self.__page( self.http.get("/tasks/", params=params, timeout=timeout), Tasks )
[docs] @handler def task_get(self, task_id: str) -> Task: """Return a task by it's ID. Args: task_id (str): ID of the task. Returns: Task: Task object. """ return Task(**self.http.get(f"/tasks/{task_id}/"))
[docs] @handler def task_add(self, task: TaskCreateRequest) -> Task: """Add a task. Args: task (TaskCreateRequest): Task create request. Returns: Task: Created task. """ return Task(**self.http.post("/tasks/", data=task))
[docs] @handler def task_update(self, task_id: str, task: TaskUpdateRequest) -> Task: """Update a task. Args: task_id (str): ID of the task. task (TaskUpdateRequest): Task update request. Returns: Task: Updated task. """ return Task(**self.http.patch(f"/tasks/{task_id}/", data=task))
[docs] @handler def task_delete(self, task_id: str): """Delete a task. Args: task_id (str): ID of the task. """ self.http.delete(f"/tasks/{task_id}/")
[docs] @handler def task_parent_list( self, task_id: str, page: int = 1, items_per_page: int = 50 ) -> Tasks: """Return a paginated list of parent tasks for a selected task. Args: task_id (str): ID of the task. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Tasks: Tasks object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/tasks/{task_id}/parents/", params=params), Tasks )
[docs] @handler def task_child_list( self, task_id: str, page: int = 1, items_per_page: int = 50 ) -> Tasks: """Return a paginated list of child tasks for a selected task. Args: task_id (str): ID of the task. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Tasks: Tasks object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/tasks/{task_id}/children/", params=params), Tasks )
[docs] @handler def task_paper_list( self, task_id: str, page: int = 1, items_per_page: int = 50 ) -> Papers: """Return a paginated list of papers for a selected task. Args: task_id (str): ID of the task. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Papers: Papers object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/tasks/{task_id}/papers/", params=params), Papers )
[docs] @handler def task_evaluation_list( self, task_id: str, page: int = 1, items_per_page: int = 50 ) -> EvaluationTables: """Return a list of evaluation tables for a selected task. Args: task_id (str): ID of the task. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: EvaluationTables: EvaluationTables object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get(f"/tasks/{task_id}/evaluations/", params=params), EvaluationTables, )
[docs] @handler def dataset_list( self, q: Optional[str] = None, name: Optional[str] = None, full_name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Datasets: """Return a paginated list of datasets. Args: q (str, optional): Filter datasets by querying the dataset name. name (str, optional): Filter datasets by their name. full_name (str, optional): Filter datasets by their full name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Datasets: Datasets object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q timeout = 60 if name is not None: params["name"] = name if full_name is not None: params["full_name"] = full_name return self.__page( self.http.get("/datasets/", params=params, timeout=timeout), Datasets, )
[docs] @handler def dataset_get(self, dataset_id: str) -> Dataset: """Return a dastaset by it's ID. Args: dataset_id (str): ID of the dataset. Returns: Dataset: Dataset object. """ return Dataset(**self.http.get(f"/datasets/{dataset_id}/"))
[docs] @handler def dataset_add(self, dataset: DatasetCreateRequest) -> Dataset: """Add a dataset. Args: dataset (DatasetCreateRequest): Dataset create request. Returns: Dataset: Created dataset. """ return Dataset(**self.http.post("/datasets/", data=dataset))
[docs] @handler def dataset_update( self, dataset_id: str, dataset: DatasetUpdateRequest ) -> Dataset: """Update a dataset. Args: dataset_id (str): ID of the dataset. dataset (DatasetUpdateRequest): Dataset update request. Returns: Dataset: Updated dataset. """ return Dataset( **self.http.patch(f"/datasets/{dataset_id}/", data=dataset) )
[docs] @handler def dataset_delete(self, dataset_id: str): """Delete a dataset. Args: dataset_id (str): ID of the dataset. """ self.http.delete(f"/datasets/{dataset_id}/")
[docs] @handler def dataset_evaluation_list( self, dataset_id: str, page: int = 1, items_per_page: int = 50 ) -> EvaluationTables: """Return a list of evaluation tables for a selected dataset. Args: dataset_id (str): ID of the dasaset. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: EvaluationTables: EvaluationTables object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get( f"/datasets/{dataset_id}/evaluations/", params=params ), EvaluationTables, )
[docs] @handler def method_list( self, q: Optional[str] = None, name: Optional[str] = None, full_name: Optional[str] = None, page: int = 1, items_per_page: int = 50, ) -> Methods: """Return a paginated list of methods. Args: q (str, optional): Search all searchable fields. name (str, optional): Filter methods by part of the name. full_name (str, optional): Filter methods by part of the full name. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Methods: Methods object. """ params = self.__params(page, items_per_page) timeout = None if q is not None: params["q"] = q timeout = 60 if name is not None: params["name"] = name if full_name is not None: params["full_name"] = full_name return self.__page( self.http.get("/methods/", params=params, timeout=timeout), Methods, )
[docs] @handler def method_get(self, method_id) -> Method: """Return a method by it's ID. Args: method_id (str): ID of the method. Returns: Method: Method object. """ return Method(**self.http.get(f"/methods/{method_id}/"))
[docs] @handler def evaluation_list( self, page: int = 1, items_per_page: int = 50 ) -> EvaluationTables: """Return a paginated list of evaluation tables. Args: page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: EvaluationTables: Evaluation table page object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get("/evaluations/", params=params), EvaluationTables )
[docs] @handler def evaluation_get(self, evaluation_id: str) -> EvaluationTable: """Return a evaluation table by it's ID. Args: evaluation_id (str): ID of the evaluation table. Returns: EvaluationTable: Evaluation table object. """ return EvaluationTable( **self.http.get(f"/evaluations/{evaluation_id}/") )
[docs] @handler def evaluation_create( self, evaluation: EvaluationTableCreateRequest ) -> EvaluationTable: """Create an evaluation table. Args: evaluation (EvaluationTableCreateRequest): Evaluation table create request object. Returns: EvaluationTable: The new created evaluation table. """ return EvaluationTable( **self.http.post("/evaluations/", data=evaluation) )
[docs] @handler def evaluation_update( self, evaluation_id: str, evaluation: EvaluationTableUpdateRequest ) -> EvaluationTable: """Update an evaluation table. Args: evaluation_id (str): ID of the evaluation table. evaluation (EvaluationTableUpdateRequest): Evaluation table update request object. Returns: EvaluationTable: The updated evaluation table. """ return EvaluationTable( **self.http.patch( f"/evaluations/{evaluation_id}/", data=evaluation ) )
[docs] @handler def evaluation_delete(self, evaluation_id: str): """Delete an evaluation table. Args: evaluation_id (str): ID of the evaluation table. """ self.http.delete(f"/evaluations/{evaluation_id}/")
[docs] @handler def evaluation_metric_list( self, evaluation_id: str, page: int = 1, items_per_page: int = 50 ) -> Metrics: """List all metrics used in the evaluation table. Args: evaluation_id (str): ID of the evaluation table. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Metrics: Metrics object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get( f"/evaluations/{evaluation_id}/metrics/", params=params ), Metrics, )
[docs] @handler def evaluation_metric_get( self, evaluation_id: str, metric_id: str ) -> Metric: """Get a metrics used in the evaluation table. Args: evaluation_id (str): ID of the evaluation table. metric_id (str): ID of the metric. Returns: Metric: Requested metric. """ return Metric( **self.http.get( f"/evaluations/{evaluation_id}/metrics/{metric_id}/" ) )
[docs] @handler def evaluation_metric_add( self, evaluation_id: str, metric: MetricCreateRequest ) -> Metric: """Add a metrics to the evaluation table. Args: evaluation_id (str): ID of the evaluation table. metric (MetricCreateRequest): Metric create request. Returns: Metric: Created metric. """ return Metric( **self.http.post( f"/evaluations/{evaluation_id}/metrics/", data=metric ) )
[docs] @handler def evaluation_metric_update( self, evaluation_id: str, metric_id: str, metric: MetricUpdateRequest ) -> Metric: """Update a metrics in the evaluation table. Args: evaluation_id (str): ID of the evaluation table. metric_id (str): ID of the metric. metric (MetricCreateRequest): Metric update request. Returns: Metric: Updated metric. """ return Metric( **self.http.patch( f"/evaluations/{evaluation_id}/metrics/{metric_id}/", data=metric, ) )
[docs] @handler def evaluation_metric_delete(self, evaluation_id: str, metric_id: str): """Delete a metrics from the evaluation table. Args: evaluation_id (str): ID of the evaluation table. metric_id (str): ID of the metric. """ self.http.delete(f"/evaluations/{evaluation_id}/metrics/{metric_id}/")
[docs] @handler def evaluation_result_list( self, evaluation_id: str, page: int = 1, items_per_page: int = 50 ) -> Results: """List all results from the evaluation table. Args: evaluation_id (str): ID of the evaluation table. page (int): Desired page. items_per_page (int): Desired number of items per page. Default: 50. Returns: Results: Results object. """ params = self.__params(page, items_per_page) return self.__page( self.http.get( f"/evaluations/{evaluation_id}/results/", params=params ), Results, )
[docs] @handler def evaluation_result_get( self, evaluation_id: str, result_id: str ) -> Result: """Get a result from the evaluation table. Args: evaluation_id (str): ID of the evaluation table. result_id (str): ID of the result. Returns: Result: Requested result. """ return Result( **self.http.get( f"/evaluations/{evaluation_id}/results/{result_id}/" ) )
[docs] @handler def evaluation_result_add( self, evaluation_id: str, result: ResultCreateRequest ) -> Result: """Add a result to the evaluation table. Args: evaluation_id (str): ID of the evaluation table. result (ResultCreateRequest): Result create request. Returns: Result: Created result. """ return Result( **self.http.post( f"/evaluations/{evaluation_id}/results/", data=result ) )
[docs] @handler def evaluation_result_update( self, evaluation_id: str, result_id: str, result: ResultUpdateRequest ) -> Result: """Update a result in the evaluation table. Args: evaluation_id (str): ID of the evaluation table. result_id (str): ID of the result. result (ResultUpdateRequest): Result update request. Returns: Result: Updated result. """ return Result( **self.http.patch( f"/evaluations/{evaluation_id}/results/{result_id}/", data=result, ) )
[docs] @handler def evaluation_result_delete(self, evaluation_id: str, result_id: str): """Delete a result from the evaluation table. Args: evaluation_id (str): ID of the evaluation table. result_id (str): ID of the result. """ self.http.delete(f"/evaluations/{evaluation_id}/results/{result_id}/")
@handler def evaluation_synchronize( self, evaluation: EvaluationTableSyncRequest ) -> EvaluationTableSyncResponse: d = self.http.post("/rpc/evaluation-synchronize/", data=evaluation) d["results"] = [result for result in d["results"]] return EvaluationTableSyncResponse(**d)