Source code for tooluniverse.dblp_tool

import html
import requests
from .base_tool import BaseTool
from .provider_rate_limit import enforce_provider_rate_limit
from .tool_registry import register_tool


[docs] @register_tool("DBLPTool") class DBLPTool(BaseTool): """ Search DBLP Computer Science Bibliography for publications. """ _TYPE_MAP = { "Conference and Workshop Papers": "conference-paper", "Journal Articles": "journal-article", "Parts in Books or Collections": "book-chapter", "Books and Theses": "book-or-thesis", "Editorship": "editorship", "Reference Works": "reference-work", "Informal and Other Publications": "informal-publication", "Data and Artifacts": "data-or-artifact", }
[docs] def __init__( self, tool_config, base_url="https://dblp.org/search/publ/api", ): super().__init__(tool_config) self.base_url = base_url
[docs] def run(self, arguments): query = arguments.get("query") if not query: return {"status": "error", "error": "`query` parameter is required."} limit = arguments.get("limit", 10) offset = arguments.get("offset", 0) if ( isinstance(limit, bool) or not isinstance(limit, int) or not 1 <= limit <= 1000 ): return { "status": "error", "error": "limit must be an integer between 1 and 1000", "parameter": "limit", } if isinstance(offset, bool) or not isinstance(offset, int) or offset < 0: return { "status": "error", "error": "offset must be a non-negative integer", "parameter": "offset", } return self._search(query, limit, offset)