|
|
@ -11,6 +11,7 @@ from utils.console import handle_input
|
|
|
|
console = Console()
|
|
|
|
console = Console()
|
|
|
|
config = dict # autocomplete
|
|
|
|
config = dict # autocomplete
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def crawl(obj: dict, func=lambda x, y: print(x, y, end="\n"), path=None):
|
|
|
|
def crawl(obj: dict, func=lambda x, y: print(x, y, end="\n"), path=None):
|
|
|
|
if path is None: # path Default argument value is mutable
|
|
|
|
if path is None: # path Default argument value is mutable
|
|
|
|
path = []
|
|
|
|
path = []
|
|
|
@ -53,11 +54,7 @@ def check(value, checks, name):
|
|
|
|
and not hasattr(value, "__iter__")
|
|
|
|
and not hasattr(value, "__iter__")
|
|
|
|
and (
|
|
|
|
and (
|
|
|
|
("nmin" in checks and checks["nmin"] is not None and value < checks["nmin"])
|
|
|
|
("nmin" in checks and checks["nmin"] is not None and value < checks["nmin"])
|
|
|
|
or (
|
|
|
|
or ("nmax" in checks and checks["nmax"] is not None and value > checks["nmax"])
|
|
|
|
"nmax" in checks
|
|
|
|
|
|
|
|
and checks["nmax"] is not None
|
|
|
|
|
|
|
|
and value > checks["nmax"]
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
):
|
|
|
|
):
|
|
|
|
incorrect = True
|
|
|
|
incorrect = True
|
|
|
@ -65,16 +62,8 @@ def check(value, checks, name):
|
|
|
|
not incorrect
|
|
|
|
not incorrect
|
|
|
|
and hasattr(value, "__iter__")
|
|
|
|
and hasattr(value, "__iter__")
|
|
|
|
and (
|
|
|
|
and (
|
|
|
|
(
|
|
|
|
("nmin" in checks and checks["nmin"] is not None and len(value) < checks["nmin"])
|
|
|
|
"nmin" in checks
|
|
|
|
or ("nmax" in checks and checks["nmax"] is not None and len(value) > checks["nmax"])
|
|
|
|
and checks["nmin"] is not None
|
|
|
|
|
|
|
|
and len(value) < checks["nmin"]
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
or (
|
|
|
|
|
|
|
|
"nmax" in checks
|
|
|
|
|
|
|
|
and checks["nmax"] is not None
|
|
|
|
|
|
|
|
and len(value) > checks["nmax"]
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
):
|
|
|
|
):
|
|
|
|
incorrect = True
|
|
|
|
incorrect = True
|
|
|
@ -82,15 +71,9 @@ def check(value, checks, name):
|
|
|
|
if incorrect:
|
|
|
|
if incorrect:
|
|
|
|
value = handle_input(
|
|
|
|
value = handle_input(
|
|
|
|
message=(
|
|
|
|
message=(
|
|
|
|
(
|
|
|
|
(("[blue]Example: " + str(checks["example"]) + "\n") if "example" in checks else "")
|
|
|
|
("[blue]Example: " + str(checks["example"]) + "\n")
|
|
|
|
|
|
|
|
if "example" in checks
|
|
|
|
|
|
|
|
else ""
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
+ "[red]"
|
|
|
|
+ "[red]"
|
|
|
|
+ ("Non-optional ", "Optional ")[
|
|
|
|
+ ("Non-optional ", "Optional ")["optional" in checks and checks["optional"] is True]
|
|
|
|
"optional" in checks and checks["optional"] is True
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
+ "[#C0CAF5 bold]"
|
|
|
|
+ "[#C0CAF5 bold]"
|
|
|
|
+ str(name)
|
|
|
|
+ str(name)
|
|
|
@ -131,9 +114,7 @@ def check_toml(template_file, config_file) -> Tuple[bool, Dict]:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
template = toml.load(template_file)
|
|
|
|
template = toml.load(template_file)
|
|
|
|
except Exception as error:
|
|
|
|
except Exception as error:
|
|
|
|
console.print(
|
|
|
|
console.print(f"[red bold]Encountered error when trying to to load {template_file}: {error}")
|
|
|
|
f"[red bold]Encountered error when trying to to load {template_file}: {error}"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
return False
|
|
|
|
return False
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
config = toml.load(config_file)
|
|
|
|
config = toml.load(config_file)
|
|
|
|