@staticmethod
def human_print_plans(plans: List[Any]):
    'Prints a table with an overview of each plan'
    if (not plans):
        print('No plans')
        return
    name_pad = 5
    service_pad = 8
    for plan in plans:
        if (len(plan['name']) > name_pad):
            name_pad = len(plan['name'])
        services_str = BackupServicePlan.service_list_to_str(plan['services'])
        if (len(services_str) > service_pad):
            service_pad = len(services_str)
    name_pad += 1
    service_pad += 1
    header = f"{'Name':<{name_pad}} | # Tasks | {'Services':<{service_pad}} | Default"
    print(header)
    print(('-' * (len(header) + 5)))
    for plan in plans:
        task_len = (len(plan['tasks']) if (('tasks' in plan) and plan['tasks']) else 0)
        print(f"{plan['name']:<{name_pad}} | {task_len:<7} | {BackupServicePlan.service_list_to_str(plan['services']):<{service_pad}} | {(plan['default'] if ('default' in plan) else False)!s}")
Prints a table with an overview of each plan
@staticmethod
def human_print_plans(plans: List[Any]):
    
    if (not plans):
        print('No plans')
        return
    name_pad = 5
    service_pad = 8
    for plan in plans:
        if (len(plan['name']) > name_pad):
            name_pad = len(plan['name'])
        services_str = BackupServicePlan.service_list_to_str(plan['services'])
        if (len(services_str) > service_pad):
            service_pad = len(services_str)
    name_pad += 1
    service_pad += 1
    header = f"{'Name':<{name_pad}} | # Tasks | {'Services':<{service_pad}} | Default"
    print(header)
    print(('-' * (len(header) + 5)))
    for plan in plans:
        task_len = (len(plan['tasks']) if (('tasks' in plan) and plan['tasks']) else 0)
        print(f"{plan['name']:<{name_pad}} | {task_len:<7} | {BackupServicePlan.service_list_to_str(plan['services']):<{service_pad}} | {(plan['default'] if ('default' in plan) else False)!s}")