Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

truncate stdoutput to just action items #208

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

monrog2
Copy link
Collaborator

@monrog2 monrog2 commented Mar 25, 2025

No description provided.

@monrog2 monrog2 changed the title print_title grouped with preint_result truncate stdoutput to just action items Mar 25, 2025
@monrog2 monrog2 marked this pull request as ready for review March 25, 2025 17:45
@monrog2
Copy link
Collaborator Author

monrog2 commented Mar 25, 2025

no pytests were harmed in the making of this PR:
426 passed, 1 warning in 0.43s

@monrog2
Copy link
Collaborator Author

monrog2 commented Mar 25, 2025

An alternative is something along the lines of:

def prints(objects, sep=' ', end='\n', result="pending"):
    with open(RESULT_FILE, 'a') as f:
        if result in [FAIL_O, FAIL_UF, MANUAL, ERROR, POST]:
            print(objects, sep=sep, end=end, file=sys.stdout)
            sys.stdout.flush()
        if result != "pending":
            print(objects, sep=sep, end=end, file=f)
            f.flush()

def print_title(title, index=None, total=None, result="pending"):
    if index and total:
        end = '\r' if result== "pending" else ''
        prints('[Check{:3}/{}] {}... '.format(index, total, title), end=end, result=result)
    else:
        prints('{:14}{}... '.format('', title), end='')


def print_result(title, result, msg='',
                 headers=None, data=None,
                 unformatted_headers=None, unformatted_data=None,
                 recommended_action='',
                 doc_url='',
                 adjust_title=False, index=None, total_checks=None):
    padding = 120 - len(title) - len(msg)
    if adjust_title: padding += len(title) + 18
    output = '{}{:>{}}'.format(msg, result, padding)
    if data:
        data.sort()
        output += '\n' + format_table(headers, data)
    if unformatted_data:
        unformatted_data.sort()
        output += '\n' + format_table(unformatted_headers, unformatted_data)
    if data or unformatted_data:
        output += '\n'
        if recommended_action:
            output += '\n  Recommended Action: %s' % recommended_action
        if doc_url:
            output += '\n  Reference Document: %s' % doc_url
        output += '\n' * 2
    if index and total_checks and result in [FAIL_O, FAIL_UF, MANUAL, ERROR, POST]:
        print_title(title, index, total_checks, result=result)
    prints(output, result=result)

and then adding the index/total checks to each print_results treating it as the final write for each check to both stdout is an error, and the file for logging.

In both cases, the connections check re-using these functions makes it messy.

@monrog2 monrog2 requested a review from takishida March 25, 2025 20:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

trim stdout output to just actionable results, dump the rest into tgz
1 participant