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)