copy_changed_code.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import argparse
  2. def get_changed_code(target_filepath, line_start, include_signature=False):
  3. # copies changed code into /testing_files/
  4. # Note that this does NOT copy the function signature
  5. selected_lines = []
  6. offset = 1 if include_signature else 0
  7. with open('/testing_files/first_line_after_removed.txt', 'r') as f:
  8. first_line_after_removed = f.read()
  9. if first_line_after_removed is None:
  10. print('First line after removed is None')
  11. with open(target_filepath, 'r') as f:
  12. lines = f.read().split('\n')
  13. for i in range(line_start - offset, len(lines)):
  14. if lines[i].strip() == first_line_after_removed.strip():
  15. break
  16. selected_lines.append(lines[i])
  17. text = '\n'.join(selected_lines)
  18. return text
  19. def copy_changed_code(
  20. target_filepath, generated_code_filepath, line_start, include_signature=False
  21. ):
  22. changed_code = get_changed_code(target_filepath, line_start, include_signature)
  23. with open(generated_code_filepath, 'w') as f:
  24. f.write(changed_code)
  25. if __name__ == '__main__':
  26. parser = argparse.ArgumentParser()
  27. parser.add_argument('--target_filepath', type=str, required=True)
  28. parser.add_argument('--generated_code_filepath', type=str, required=True)
  29. parser.add_argument('--line_start', type=int, required=True)
  30. parser.add_argument('--include_signature', action='store_true')
  31. args = parser.parse_args()
  32. copy_changed_code(
  33. args.target_filepath,
  34. args.generated_code_filepath,
  35. args.line_start,
  36. args.include_signature,
  37. )