scripts/render/glog_check.py (45 lines of code) (raw):

#!/usr/bin/env python3 # Copyright 2004-present Facebook. All Rights Reserved. # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. """Implementation of glog's CHECK functions. Provides a clean syntax that parallels the interface of CHECKs in C++. This file cannot be executed standalone and is intended to be used as a utility for other scripts. Example: A standard use of the glog_check functionality is for verifying FLAGS validity: 1 import glog_check as glog 2 FLAGS = flags.FLAGS 3 ... 6 glog.check_ne(FLAGS.non_empty_flag, "", "non_empty_flag must be non-empty") """ import sys class bcolors: END = "\033[0m" GREEN = "\033[1;32m" RED = "\033[1;31m" YELLOW = "\033[1;33m" def green(msg): return f"{bcolors.GREEN}{msg}{bcolors.END}" def yellow(msg): return f"{bcolors.YELLOW}{msg}{bcolors.END}" def red(msg): return f"{bcolors.RED}{msg}{bcolors.END}" def check(condition, message=None): """Produces a message if the condition does not hold. Args: condition (bool): The condition to be verified. message (str, optional): Text to be displayed if the condition fails. """ if not condition: print(red(message)) sys.exit(0) def build_check_message(o1, o2, type, message=None): """Constructs failure message for validation. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. type (str): String representation of the comparison performed. message (str, optional): Message to display if comparison fails. Returns: str: Failure message. """ msg = f"Check failed: {o1} {type} {o2}" if message: msg += f". {message}" return red(msg) def check_eq(o1, o2, message=None): """Validates o1 == o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 != o2: print(build_check_message(o1, o2, "!=", message)) sys.exit(0) def check_ne(o1, o2, message=None): """Validates o1 != o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 == o2: print(build_check_message(o1, o2, "==", message)) sys.exit(0) def check_ge(o1, o2, message=None): """Validates o1 >= o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 < o2: print(build_check_message(o1, o2, "<", message)) sys.exit(0) def check_gt(o1, o2, message=None): """Validates o1 > o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 <= o2: print(build_check_message(o1, o2, "<=", message)) sys.exit(0) def check_le(o1, o2, message=None): """Validates o1 <= o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 > o2: print(build_check_message(o1, o2, ">", message)) sys.exit(0) def check_lt(o1, o2, message=None): """Validates o1 < o2. Produces error message if not. Args: o1 (comparable): Any comparable value. o1 (comparable): Any value comparable to o1. message (str, optional): Message to display if comparison fails. """ if o1 >= o2: print(build_check_message(o1, o2, ">=", message)) sys.exit(0)