def main(argv):
  """Main program.

  Arguments:
    argv: command-line arguments, such as sys.argv (including the program name
      in argv[0]).

  Returns:
    0 if there were no changes, non-zero otherwise.

  Raises:
    YapfError: if none of the supplied files were Python files.
  """
  parser = argparse.ArgumentParser(description='Formatter for Python code.')
  parser.add_argument('-v',
                      '--version',
                      action='store_true',
                      help='show version number and exit')

  diff_inplace_group = parser.add_mutually_exclusive_group()
  diff_inplace_group.add_argument('-d',
                                  '--diff',
                                  action='store_true',
                                  help='print the diff for the fixed source')
  diff_inplace_group.add_argument('-i',
                                  '--in-place',
                                  action='store_true',
                                  help='make changes to files in place')

  lines_recursive_group = parser.add_mutually_exclusive_group()
  lines_recursive_group.add_argument('-r',
                                     '--recursive',
                                     action='store_true',
                                     help='run recursively over directories')
  lines_recursive_group.add_argument(
      '-l',
      '--lines',
      metavar='START-END',
      action='append',
      default=None,
      help='range of lines to reformat, one-based')

  parser.add_argument('-e',
                      '--exclude',
                      metavar='PATTERN',
                      action='append',
                      default=None,
                      help='patterns for files to exclude from formatting')
  parser.add_argument(
      '--style',
      action='store',
      help=('specify formatting style: either a style name (for example "pep8" '
            'or "google"), or the name of a file with style settings. The '
            'default is pep8 unless a %s or %s file located in one of the '
            'parent directories of the source file (or current directory for '
            'stdin)' % (style.LOCAL_STYLE, style.SETUP_CONFIG)))
  parser.add_argument('--style-help',
                      action='store_true',
                      help='show style settings and exit')
  parser.add_argument('--no-local-style',
                      action='store_true',
                      help="don't search for local style definition")
  parser.add_argument('--verify',
                      action='store_true',
                      help='try to verify reformatted code for syntax errors')

  parser.add_argument('files', nargs='*')
  args = parser.parse_args(argv[1:])

  if args.version:
    print('yapf {}'.format(__version__))
    return 0

  if args.style_help:
    style.SetGlobalStyle(style.CreateStyleFromConfig(args.style))
    for option, docstring in sorted(style.Help().items()):
      print(option, '=', style.Get(option), sep='')
      for line in docstring.splitlines():
        print('  ', line)
      print()
    return 0

  if args.lines and 1 > len(args.files):
    parser.error('cannot use -l/--lines with more than one file')

  lines = _GetLines(args.lines) if args.lines is not None else None
  if not args.files:
    # No arguments specified. Read code from stdin.
    if args.in_place or args.diff:
      parser.error('cannot use --in-place or --diff flags when reading '
                   'from stdin')

    original_source = []
    while True:
      try:
        # Use 'raw_input' instead of 'sys.stdin.read', because otherwise the
        # user will need to hit 'Ctrl-D' more than once if they're inputting
        # the program by hand. 'raw_input' throws an EOFError exception if
        # 'Ctrl-D' is pressed, which makes it easy to bail out of this loop.
        original_source.append(py3compat.raw_input())
      except EOFError:
        break
    style_config = args.style
    if style_config is None and not args.no_local_style:
      style_config = file_resources.GetDefaultStyleForDir(os.getcwd())
    reformatted_source, changed = yapf_api.FormatCode(
        py3compat.unicode('\n'.join(original_source) + '\n'),
        filename='<stdin>',
        style_config=style_config,
        lines=lines,
        verify=args.verify)
    sys.stdout.write(reformatted_source)
    return 2 if changed else 0

  files = file_resources.GetCommandLineFiles(args.files, args.recursive,
                                             args.exclude)
  if not files:
    raise errors.YapfError('Input filenames did not match any python files')
  changed = FormatFiles(files,
                        lines,
                        style_config=args.style,
                        no_local_style=args.no_local_style,
                        in_place=args.in_place,
                        print_diff=args.diff,
                        verify=args.verify)
  return 2 if changed else 0
dataset/ETHPy150Open google/yapf/yapf/__init__.py/main/swapped operands of `>`