code: def _main(argv, standard_out, standard_error):
      
      import argparse
      parser = argparse.ArgumentParser(description=__doc__, prog='unify')
      parser.add_argument('-i', '--in-place', action='store_true',
                          help='make changes to files instead of printing diffs')
      parser.add_argument('-c', '--check-only', action='store_true',
                          help='exit with a status code of 1 if any changes are'
                               ' still needed')
      parser.add_argument('-r', '--recursive', action='store_true',
                          help='drill down directories recursively')
      parser.add_argument('--quote', help='preferred quote', choices=["'", '"'],
                          default="'")
      parser.add_argument('--version', action='version',
                          version='%(prog)s ' + __version__)
      parser.add_argument('files', nargs='+',
                          help='files to format')
  
      args = parser.parse_args(argv[1:])
  
      filenames = list(set(args.files))
      changes_needed = False
      failure = False
      while filenames:
          name = filenames.pop(0)
          if args.recursive and os.path.isdir(name):
              for root, directories, children in os.walk(unicode(name)):
                  filenames += [os.path.join(root, f) for f in children
                                if f.endswith('.py') and
                                not f.startswith('.')]
                  directories[:] = [d for d in directories
                                    if not d.startswith('.')]
          else:
              try:
                  if format_file(name, args=args, standard_out=standard_out):
                      changes_needed = True
              except IOError as exception:
                  print(unicode(exception), file=standard_error)
                  failure = True
  
      if failure or (args.check_only and changes_needed):
          return 1
docs: Run quotes unifying on files.
  
      Returns `1` if any quoting changes are still needed, otherwise
      `None`.