Spaces:
Sleeping
Sleeping
| #!/Users/chinmayjha/Documents/second-brain/second-brain-ai-assistant-course/apps/second-brain-online/.venv-offline/bin/python | |
| import sys | |
| import json | |
| import argparse | |
| from pprint import pformat | |
| import jmespath | |
| from jmespath import exceptions | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('expression') | |
| parser.add_argument('-f', '--filename', | |
| help=('The filename containing the input data. ' | |
| 'If a filename is not given then data is ' | |
| 'read from stdin.')) | |
| parser.add_argument('--ast', action='store_true', | |
| help=('Pretty print the AST, do not search the data.')) | |
| args = parser.parse_args() | |
| expression = args.expression | |
| if args.ast: | |
| # Only print the AST | |
| expression = jmespath.compile(args.expression) | |
| sys.stdout.write(pformat(expression.parsed)) | |
| sys.stdout.write('\n') | |
| return 0 | |
| if args.filename: | |
| with open(args.filename, 'r') as f: | |
| data = json.load(f) | |
| else: | |
| data = sys.stdin.read() | |
| data = json.loads(data) | |
| try: | |
| sys.stdout.write(json.dumps( | |
| jmespath.search(expression, data), indent=4, ensure_ascii=False)) | |
| sys.stdout.write('\n') | |
| except exceptions.ArityError as e: | |
| sys.stderr.write("invalid-arity: %s\n" % e) | |
| return 1 | |
| except exceptions.JMESPathTypeError as e: | |
| sys.stderr.write("invalid-type: %s\n" % e) | |
| return 1 | |
| except exceptions.UnknownFunctionError as e: | |
| sys.stderr.write("unknown-function: %s\n" % e) | |
| return 1 | |
| except exceptions.ParseError as e: | |
| sys.stderr.write("syntax-error: %s\n" % e) | |
| return 1 | |
| if __name__ == '__main__': | |
| sys.exit(main()) | |