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

1# fmt: off 

2 

3import importlib 

4from typing import List, Tuple 

5 

6from ase.utils import ( 

7 get_python_package_path_description, 

8 search_current_git_hash, 

9) 

10 

11 

12def format_dependency(modname: str) -> Tuple[str, str]: 

13 """Return (name, info) for given module. 

14 

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' 

20 

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}' 

27 

28 # (only packages have __path__, but we are importing packages.) 

29 info = get_python_package_path_description(module) 

30 return name, info 

31 

32 

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]