
    ;;i	                    <    d Z ddlmZ ddlZddlZddlZddlZddZy)z[Utility functions for finding modules

Utility functions for finding modules on sys.path.

    )annotationsNc                   t         j                  j                  |       }|y|j                  }|5|j                  (|j                  t
        j                  v r|j                  S y|j                  d      }|d   dv r|S y)a  
    Find module `module_name` on sys.path, and return the path to module `module_name`.

    * If `module_name` refers to a module directory, then return path to `__init__` file.
        * If `module_name` is a directory without an __init__file, return None.

    * If module is missing or does not have a `.py` or `.pyw` extension, return None.
        * Note that we are not interested in running bytecode.

    * Otherwise, return the fill path of the module.

    Parameters
    ----------
    module_name : str

    Returns
    -------
    module_path : str
        Path to module `module_name`, its __init__.py, or None,
        depending on above conditions.
    N.)pypyw)	importlibutil	find_specoriginloadersys	meta_pathsplit)module_namespecmodule_path
split_paths       W/home/rose/Desktop/poly/venv/lib/python3.12/site-packages/IPython/utils/module_paths.pyfind_modr   +   sz    , >>##K0D|++K;;"t{{cmm'C;; &&s+
b>]*    )r   strreturnz!str | None | importlib.abc.Loader)__doc__
__future__r   r	   importlib.abcimportlib.utilr   r    r   r   <module>r      s"   
 #    
&#r   