1# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html 
    2# For details: https://github.com/pylint-dev/astroid/blob/main/LICENSE 
    3# Copyright (c) https://github.com/pylint-dev/astroid/blob/main/CONTRIBUTORS.txt 
    4 
    5from __future__ import annotations 
    6 
    7from collections.abc import Callable 
    8 
    9from astroid.manager import AstroidManager 
    10from astroid.nodes.scoped_nodes import Module 
    11 
    12 
    13def register_module_extender( 
    14    manager: AstroidManager, module_name: str, get_extension_mod: Callable[[], Module] 
    15) -> None: 
    16    def transform(node: Module) -> None: 
    17        extension_module = get_extension_mod() 
    18        for name, objs in extension_module.locals.items(): 
    19            node.locals[name] = objs 
    20            for obj in objs: 
    21                if obj.parent is extension_module: 
    22                    obj.parent = node 
    23 
    24    manager.register_transform(Module, transform, lambda n: n.name == module_name) 
    25 
    26 
    27# pylint: disable-next=too-many-locals 
    28def register_all_brains(manager: AstroidManager) -> None: 
    29    from astroid.brain import (  # pylint: disable=import-outside-toplevel 
    30        brain_argparse, 
    31        brain_attrs, 
    32        brain_boto3, 
    33        brain_builtin_inference, 
    34        brain_collections, 
    35        brain_crypt, 
    36        brain_ctypes, 
    37        brain_curses, 
    38        brain_dataclasses, 
    39        brain_datetime, 
    40        brain_dateutil, 
    41        brain_functools, 
    42        brain_gi, 
    43        brain_hashlib, 
    44        brain_http, 
    45        brain_hypothesis, 
    46        brain_io, 
    47        brain_mechanize, 
    48        brain_multiprocessing, 
    49        brain_namedtuple_enum, 
    50        brain_nose, 
    51        brain_numpy_core_einsumfunc, 
    52        brain_numpy_core_fromnumeric, 
    53        brain_numpy_core_function_base, 
    54        brain_numpy_core_multiarray, 
    55        brain_numpy_core_numeric, 
    56        brain_numpy_core_numerictypes, 
    57        brain_numpy_core_umath, 
    58        brain_numpy_ma, 
    59        brain_numpy_ndarray, 
    60        brain_numpy_random_mtrand, 
    61        brain_pathlib, 
    62        brain_pkg_resources, 
    63        brain_pytest, 
    64        brain_qt, 
    65        brain_random, 
    66        brain_re, 
    67        brain_regex, 
    68        brain_responses, 
    69        brain_scipy_signal, 
    70        brain_signal, 
    71        brain_six, 
    72        brain_sqlalchemy, 
    73        brain_ssl, 
    74        brain_subprocess, 
    75        brain_threading, 
    76        brain_type, 
    77        brain_typing, 
    78        brain_unittest, 
    79        brain_uuid, 
    80    ) 
    81 
    82    brain_argparse.register(manager) 
    83    brain_attrs.register(manager) 
    84    brain_boto3.register(manager) 
    85    brain_builtin_inference.register(manager) 
    86    brain_collections.register(manager) 
    87    brain_crypt.register(manager) 
    88    brain_ctypes.register(manager) 
    89    brain_curses.register(manager) 
    90    brain_dataclasses.register(manager) 
    91    brain_datetime.register(manager) 
    92    brain_dateutil.register(manager) 
    93    brain_functools.register(manager) 
    94    brain_gi.register(manager) 
    95    brain_hashlib.register(manager) 
    96    brain_http.register(manager) 
    97    brain_hypothesis.register(manager) 
    98    brain_io.register(manager) 
    99    brain_mechanize.register(manager) 
    100    brain_multiprocessing.register(manager) 
    101    brain_namedtuple_enum.register(manager) 
    102    brain_nose.register(manager) 
    103    brain_numpy_core_einsumfunc.register(manager) 
    104    brain_numpy_core_fromnumeric.register(manager) 
    105    brain_numpy_core_function_base.register(manager) 
    106    brain_numpy_core_multiarray.register(manager) 
    107    brain_numpy_core_numerictypes.register(manager) 
    108    brain_numpy_core_umath.register(manager) 
    109    brain_numpy_random_mtrand.register(manager) 
    110    brain_numpy_ma.register(manager) 
    111    brain_numpy_ndarray.register(manager) 
    112    brain_numpy_core_numeric.register(manager) 
    113    brain_pathlib.register(manager) 
    114    brain_pkg_resources.register(manager) 
    115    brain_pytest.register(manager) 
    116    brain_qt.register(manager) 
    117    brain_random.register(manager) 
    118    brain_re.register(manager) 
    119    brain_regex.register(manager) 
    120    brain_responses.register(manager) 
    121    brain_scipy_signal.register(manager) 
    122    brain_signal.register(manager) 
    123    brain_six.register(manager) 
    124    brain_sqlalchemy.register(manager) 
    125    brain_ssl.register(manager) 
    126    brain_subprocess.register(manager) 
    127    brain_threading.register(manager) 
    128    brain_type.register(manager) 
    129    brain_typing.register(manager) 
    130    brain_unittest.register(manager) 
    131    brain_uuid.register(manager)