import json
import socket
import time
from typing import Any
def _add_argument_to_list(arg_list: list, key: str, value: Any):
if value is None:
return
if isinstance(value, bool):
if value:
arg_list.append(f"--{key}")
elif isinstance(value, list):
if value:
arg_list.append(f"--{key}")
for item in value:
arg_list.append(str(item))
elif isinstance(value, dict):
arg_list.append(f"--{key}")
arg_list.append(json.dumps(value))
else:
arg_list.append(f"--{key}")
arg_list.append(str(value))
def convert_args_dict_to_list(args_dict: dict) -> list:
arg_list = []
for key, value in args_dict.items():
formatted_key = key.replace('_', '-')
_add_argument_to_list(arg_list, formatted_key, value)
return arg_list
def resolve_with_retry(hostname, max_attempts=5, delay=1):
for i in range(max_attempts):
try:
return socket.gethostbyname(hostname)
except socket.gaierror:
if i < max_attempts - 1:
time.sleep(delay)
return None