Edit on GitHub

agent_search_gateway.providers.academic.defaults

Built-in academic discovery and open-access resolver registrations.

 1"""Built-in academic discovery and open-access resolver registrations."""
 2
 3from .arxiv import ArxivProvider
 4from .core import CoreProvider
 5from .crossref import CrossrefProvider
 6from .dblp import DblpProvider
 7from .openalex import OpenAlexProvider
 8from .registry import (
 9    AcademicProviderRegistration,
10    AcademicProviderRegistry,
11    OAResolverRegistration,
12    OAResolverRegistry,
13)
14from .semantic_scholar import SemanticScholarProvider
15from .unpaywall import UnpaywallResolver
16
17_ALLOWED_OPTIONS = frozenset({"api_url"})
18
19
20def build_default_academic_registry() -> AcademicProviderRegistry:
21    registry = AcademicProviderRegistry()
22    registrations = (
23        AcademicProviderRegistration("arxiv", ArxivProvider, _ALLOWED_OPTIONS, "none", "none"),
24        AcademicProviderRegistration(
25            "semantic_scholar",
26            SemanticScholarProvider,
27            _ALLOWED_OPTIONS,
28            "optional",
29            "none",
30        ),
31        AcademicProviderRegistration(
32            "openalex", OpenAlexProvider, _ALLOWED_OPTIONS, "none", "optional"
33        ),
34        AcademicProviderRegistration("dblp", DblpProvider, _ALLOWED_OPTIONS, "none", "none"),
35        AcademicProviderRegistration(
36            "crossref", CrossrefProvider, _ALLOWED_OPTIONS, "none", "optional"
37        ),
38        AcademicProviderRegistration("core", CoreProvider, _ALLOWED_OPTIONS, "required", "none"),
39    )
40    for registration in registrations:
41        registry.register(registration)
42    return registry
43
44
45def build_default_oa_resolver_registry() -> OAResolverRegistry:
46    registry = OAResolverRegistry()
47    registry.register(
48        OAResolverRegistration(
49            "unpaywall",
50            UnpaywallResolver,
51            _ALLOWED_OPTIONS,
52            "none",
53            "required",
54        )
55    )
56    return registry
def build_default_academic_registry() -> agent_search_gateway.providers.academic.registry.AcademicProviderRegistry:
21def build_default_academic_registry() -> AcademicProviderRegistry:
22    registry = AcademicProviderRegistry()
23    registrations = (
24        AcademicProviderRegistration("arxiv", ArxivProvider, _ALLOWED_OPTIONS, "none", "none"),
25        AcademicProviderRegistration(
26            "semantic_scholar",
27            SemanticScholarProvider,
28            _ALLOWED_OPTIONS,
29            "optional",
30            "none",
31        ),
32        AcademicProviderRegistration(
33            "openalex", OpenAlexProvider, _ALLOWED_OPTIONS, "none", "optional"
34        ),
35        AcademicProviderRegistration("dblp", DblpProvider, _ALLOWED_OPTIONS, "none", "none"),
36        AcademicProviderRegistration(
37            "crossref", CrossrefProvider, _ALLOWED_OPTIONS, "none", "optional"
38        ),
39        AcademicProviderRegistration("core", CoreProvider, _ALLOWED_OPTIONS, "required", "none"),
40    )
41    for registration in registrations:
42        registry.register(registration)
43    return registry
def build_default_oa_resolver_registry() -> agent_search_gateway.providers.academic.registry.OAResolverRegistry:
46def build_default_oa_resolver_registry() -> OAResolverRegistry:
47    registry = OAResolverRegistry()
48    registry.register(
49        OAResolverRegistration(
50            "unpaywall",
51            UnpaywallResolver,
52            _ALLOWED_OPTIONS,
53            "none",
54            "required",
55        )
56    )
57    return registry