Source code for pymyinstall.cli.pymy_deps
#!python
"""
script which looks into the dependencies for a module
.. todoext::
:title: add a script to look into dependencies
:tag: done
:cost: 0.5
:date: 2016-09-18
:hidden:
:release: 1.1
Add a script to check the missing dependencies.
.. versionadded:: 1.1
:githublink:`%|py|17`
"""
from __future__ import print_function
import sys
import os
import argparse
[docs]def get_parser():
"""
defines the way to parse the script ``pymy_deps``
:githublink:`%|py|26`
"""
parser = argparse.ArgumentParser(
description='look dependencies for modules')
parser.add_argument(
'module',
nargs="*",
default="all",
help='update only the list of modules included in this list or all modules if not specified or equal to all')
return parser
[docs]def do_main(list_modules=None):
"""
calls function :func:`missing_dependencies <pymyinstall.installhelper.module_dependencies.missing_dependencies>`
:param list_modules: list of modules to update or None for all
:githublink:`%|py|42`
"""
try:
from pymyinstall.installhelper import missing_dependencies, get_module_dependencies
except ImportError:
pfolder = os.path.normpath(os.path.join(
os.path.abspath(os.path.dirname(__file__)), "..", ".."))
sys.path.append(pfolder)
if "pymyinstall" in sys.modules:
del sys.modules["pymyinstall"]
if "pymyinstall.installhelper" in sys.modules:
del sys.modules["pymyinstall.installhelper"]
try:
from pymyinstall.installhelper import missing_dependencies, get_module_dependencies
except ImportError as e:
mes = "pfolder={0}\nPATH:\n{1}".format(
pfolder, "\n".join(sys.path))
raise ImportError(mes) from e
res = missing_dependencies(list_modules)
if len(res) > 0:
for r in res:
print(r)
elif list_modules is not None and len(list_modules) > 0:
for mod in list_modules:
print("checking ", mod)
res = get_module_dependencies(mod)
for r, v in sorted(res.items()):
print(" ", r, v)
else:
print("no missing dependencies")
[docs]def main():
"""
calls function :func:`missing_dependencies <pymyinstall.installhelper.module_dependencies.missing_dependencies>` but is meant to be added to scripts folder,
parse command line arguments
:githublink:`%|py|77`
"""
parser = get_parser()
try:
res = parser.parse_args()
except SystemExit:
print(parser.format_usage())
res = None
if res is not None:
list_module = None if res.module in [
"all", "", "-", None, []] else res.module
do_main(list_modules=list_module)
if __name__ == "__main__":
main()