Coverage for /builds/ericyuan00000/ase/ase/dependencies.py: 100.00%
19 statements
« prev ^ index » next coverage.py v7.5.3, created at 2025-06-18 01:20 +0000
« prev ^ index » next coverage.py v7.5.3, created at 2025-06-18 01:20 +0000
1# fmt: off
3import importlib
4from typing import List, Tuple
6from ase.utils import (
7 get_python_package_path_description,
8 search_current_git_hash,
9)
12def format_dependency(modname: str) -> Tuple[str, str]:
13 """Return (name, info) for given module.
15 If possible, info is the path to the module's package."""
16 try:
17 module = importlib.import_module(modname)
18 except ImportError:
19 return modname, 'not installed'
21 version = getattr(module, '__version__', '?')
22 name = f'{modname}-{version}'
23 if modname == 'ase':
24 githash = search_current_git_hash(module)
25 if githash:
26 name += f'-{githash:.10}'
28 # (only packages have __path__, but we are importing packages.)
29 info = get_python_package_path_description(module)
30 return name, info
33def all_dependencies() -> List[Tuple[str, str]]:
34 names = ['ase', 'numpy', 'scipy', 'matplotlib', 'spglib',
35 'ase_ext', 'flask', 'psycopg2', 'pyamg']
36 return [format_dependency(name) for name in names]