#!/usr/bin/env python
# coding: utf-8
from typing import Union, List
from pathlib import Path
from dargs import Argument
from dpgen import dlog
"""
some common utilities for generator, auto_test and data
"""
# constants define
MaxLength=70
[docs]def sepline(ch='-',sp='-',screen=False):
r'''
seperate the output by '-'
'''
if screen:
print(ch.center(MaxLength,sp))
else:
dlog.info(ch.center(MaxLength,sp))
[docs]def box_center(ch='',fill=' ',sp="|"):
r'''
put the string at the center of | |
'''
strs=ch.center(Len,fill)
dlog.info(sp+strs[1:len(strs)-1:]+sp)
[docs]def expand_sys_str(root_dir: Union[str, Path]) -> List[str]:
"""Recursively iterate over directories taking those that contain `type.raw` file.
Parameters
----------
root_dir : Union[str, Path]
starting directory
Returns
-------
List[str]
list of string pointing to system directories
"""
root_dir = Path(root_dir)
matches = [str(d) for d in root_dir.rglob("*") if (d / "type.raw").is_file()]
if (root_dir / "type.raw").is_file():
matches.append(str(root_dir))
return matches
[docs]def normalize(arginfo: Argument, data: dict, strict_check: bool = True) -> dict:
"""Normalize and check input data.
Parameters
----------
arginfo : dargs.Argument
argument information
data : dict
input data
strict_check : bool, default=True
strict check data or not
Returns
-------
dict
normalized data
"""
data = arginfo.normalize_value(data, trim_pattern="_*")
arginfo.check_value(data, strict=strict_check)
return data