"""Integrate Betty with `Wikipedia <https://wikipedia.org>`_."""
from __future__ import annotations
import logging
from pathlib import Path
from typing import Iterable, TYPE_CHECKING, final
from jinja2 import pass_context
from typing_extensions import override
from betty.asyncio import gather, wait_to_thread
from betty.project.extension.wikipedia.config import WikipediaConfiguration
from betty.fetch import FetchError
from betty.jinja2 import Jinja2Provider, context_localizer, Filters, Globals
from betty.locale import negotiate_locale
from betty.locale.localizable import _
from betty.plugin import ShorthandPluginBase
from betty.project.extension import ConfigurableExtension
from betty.project.load import PostLoadAncestryEvent
from betty.wikipedia import (
Summary,
_parse_url,
NotAPageError,
_Retriever,
_Populator,
)
if TYPE_CHECKING:
from betty.project import Project
from betty.event_dispatcher import EventHandlerRegistry
from jinja2.runtime import Context
from betty.ancestry.link import Link
async def _populate_ancestry(event: PostLoadAncestryEvent) -> None:
project = event.project
wikipedia = project.extensions[Wikipedia]
populator = _Populator(
project.ancestry,
list(project.configuration.locales.keys()),
project.localizers,
wikipedia.retriever,
)
await populator.populate()
[docs]
@final
class Wikipedia(
ShorthandPluginBase, ConfigurableExtension[WikipediaConfiguration], Jinja2Provider
):
"""
Integrates Betty with `Wikipedia <https://wikipedia.org>`_.
"""