
    ^i<                     :   % S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  \" \
5      r\
\\
\\\	\      4   4   \S'   \r\R"                  " \5      r\R&                  " \R(                  \S-   5       H  u  rrr\" \S5      (       a  \R2                  O\r\R"                  " \5      r\R8                  " \\R:                  5       H  u  rr\ " \\	5      (       a  \\	L a  M  \R                  RC                  S	5      (       a  M=  \"" \S
S5      (       a  MN  \"" \SS5      r#\"" \SS5      r$\%" \#\5      (       a  \%" \$\5      (       d  \RL                   S3r'\(" \'5      e\\\$   \#'   M     M     \RS                  5        V Vs0 s H  u  pU \
" U5      _M     snn rgs  snn f )az  Automatically build registry of search engines.

This module defines the module-level variable ENGINES, which is a dictionary
of dictionaries. The keys of the outer dictionary are the categories of search
engines, and the keys of the inner dictionaries are the names of the search
engines. The values of the inner dictionaries are the classes of the search
engines.

The search engines are automatically discovered by looking for classes in the
module that are subclasses of :class:`ddgs.base.BaseSearchEngine` and
subclasses of the base class do not have names starting with "Base", and
do not have a class attribute "disabled" set to True.

The module automatically builds the ENGINES dictionary, so it should not be
imported directly by user code.

Example of resulting dictionary ENGINES:

from .bing import Bing
from .brave import Brave
from .duckduckgo import Duckduckgo
from .duckduckgo_images import DuckduckgoImages
from .duckduckgo_news import DuckduckgoNews
from .duckduckgo_videos import DuckduckgoVideos
from .google import Google
from .mojeek import Mojeek
from .wikipedia import Wikipedia
from .yahoo import Yahoo
from .yandex import Yandex

ENGINES: dict[str, dict[str, type[BaseSearchEngine[Any]]]] = {
    "text": {
        "bing": Bing,
        "brave": Brave,
        "duckduckgo": Duckduckgo,  # bing
        "google": Google,
        "mojeek": Mojeek,
        "yahoo": Yahoo,  # bing
        "yandex": Yandex,
        "wikipedia": Wikipedia,
    },
    "images": {
        "duckduckgo": DuckduckgoImages,
    },
    "news": {
        "duckduckgo": DuckduckgoNews,
    },
    "videos": {
        "duckduckgo": DuckduckgoVideos,
    },
}
    N)defaultdict)Any)BaseSearchEngineENGINES.pathBasedisabledTnamecategoryz> must define class attributes 'name: str' and 'category: str'.)*__doc__	importlibinspectpkgutilcollectionsr   typingr   	ddgs.baser   dictr   strtype__annotations____name__package_nameimport_modulepackageiter_modules__path__findermodname_ispkghasattrr   module_pathmodule
getmembersisclass_cls
issubclass
startswithgetattrr   r   
isinstance__qualname__msg	TypeErroritems)catms   00O/home/james-whalen/.local/lib/python3.13/site-packages/ddgs/engines/__init__.py<module>r3      s  3j    #  & >I=Nc4T"23"78899	: N

!
!,
/&33G4D4DlUXFXYFGV!(!8!8&++fK$$W-F$$VW__=3#/00C;K4K <<""6** 3
D)) sFD)3
D1$$$Jx,E,E%%&&deCC. "%$) >  Z4 '.mmo
6oFC3Q<o
6
6s   =F