first comit
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
"""Utility functions for finding modules
|
||||
|
||||
Utility functions for finding modules on sys.path.
|
||||
|
||||
"""
|
||||
#-----------------------------------------------------------------------------
|
||||
# Copyright (c) 2011, the IPython Development Team.
|
||||
#
|
||||
# Distributed under the terms of the Modified BSD License.
|
||||
#
|
||||
# The full license is in the file COPYING.txt, distributed with this software.
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Imports
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
# Stdlib imports
|
||||
import importlib
|
||||
import sys
|
||||
|
||||
# Third-party imports
|
||||
|
||||
# Our own imports
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Globals and constants
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Local utilities
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Classes and functions
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
def find_mod(module_name):
|
||||
"""
|
||||
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.
|
||||
"""
|
||||
spec = importlib.util.find_spec(module_name)
|
||||
module_path = spec.origin
|
||||
if module_path is None:
|
||||
if spec.loader in sys.meta_path:
|
||||
return spec.loader
|
||||
return None
|
||||
else:
|
||||
split_path = module_path.split(".")
|
||||
if split_path[-1] in ["py", "pyw"]:
|
||||
return module_path
|
||||
else:
|
||||
return None
|
||||
Reference in New Issue
Block a user