docstr: Populate given module with appropriate attributes.
  
  This traverses the attributes of the slow module corresponding
  to mod and mirrors those in the provided module in a wrapped
  mode that attempts to execute them using the fast module first.
  
  Parameters
  ----------
  mod
      Module to populate
  
  Returns
  -------
  ModuleType
      Populated module
  
  Notes
  -----
  In addition to the attributes of the slow module,
  the returned module must have the following attributes:
  
  - '_fsproxy_slow': the corresponding slow module
  - '_fsproxy_fast': the corresponding fast module
  
  This is necessary for correct rewriting of UDFs when calling
  to the respective fast/slow libraries.
  
  The necessary invariants are checked and applied in
  :meth:`_postprocess_module`.
docstr_tok: ["Populate","given","module","with","appropriate","attributes",".","This","traverses","the","attributes","of","the","slow","module","corresponding","to","mod","and","mirrors","those","in","the","provided","module","in","a","wrapped","mode","that","attempts","to","execute","them","using","the","fast","module","first",".","Parameters","--","--","--","--","--","mod","Module","to","populate","Returns","--","--","--","-","ModuleType","Populated","module","Notes","--","--","-","In","addition","to","the","attributes","of","the","slow","module",",","the","returned","module","must","have","the","following","attributes",":","-","'_fsproxy_slow","'",":","the","corresponding","slow","module","-","'_fsproxy_fast","'",":","the","corresponding","fast","module","This","is","necessary","for","correct","rewriting","of","UDFs","when","calling","to","the","respective","fast\/slow","libraries",".","The","necessary","invariants","are","checked","and","applied","in",":","meth",":","`","_postprocess_module","`","."]
code: def _populate_module(self, mod: ModuleType) -> ModuleType:
      """Populate given module with appropriate attributes.
  
      This traverses the attributes of the slow module corresponding
      to mod and mirrors those in the provided module in a wrapped
      mode that attempts to execute them using the fast module first.
  
      Parameters
      ----------
      mod
          Module to populate
  
      Returns
      -------
      ModuleType
          Populated module
  
      Notes
      -----
      In addition to the attributes of the slow module,
      the returned module must have the following attributes:
  
      - '_fsproxy_slow': the corresponding slow module
      - '_fsproxy_fast': the corresponding fast module
  
      This is necessary for correct rewriting of UDFs when calling
      to the respective fast/slow libraries.
  
      The necessary invariants are checked and applied in
      :meth:`_postprocess_module`.
      """
      pass
  
imports: from __future__ import annotations
  import contextlib
  import functools
  import importlib
  import importlib.abc
  import importlib.machinery
  import os
  import pathlib
  import sys
  import threading
  import warnings
  from abc import abstractmethod
  from importlib._bootstrap import _ImportLockContext
  from types import ModuleType
  from typing import Any, ContextManager, Dict, List, NamedTuple
  from typing_extensions import Self
  from .fast_slow_proxy import _FunctionProxy, _is_function_or_method, _Unusable, get_final_type_map, get_intermediate_type_map, get_registered_functions
label_desc: Use image node_id 8 for calling the ModuleAcceleratorBase obj's underlying member method code with example usage: obj._populate_module(mod) without return types