| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import argparse
- import os
- import re
- from collections import defaultdict
- def get_likely_indent_size(array_of_tabs) -> int:
- sizes = defaultdict(int)
- for i in range(len(array_of_tabs) - 1):
- diff = array_of_tabs[i + 1] - array_of_tabs[i]
- if diff > 0:
- sizes[diff] += 1
- if len(sizes) == 0:
- return 4
- return int(max(sizes, key=sizes.get))
- def get_target_filepath(self):
- target_filepath = os.path.join(
- self.workspace_mount_path,
- self.biocoder_instance.repository.split('/')[1],
- self.biocoder_instance.filePath,
- )
- return target_filepath
- def remove_code(target_filepath: str, line_start: int, line_end: int, language: str):
- comment_prefix = {'python': '#', 'java': '//'}
- with open(target_filepath, 'r') as f:
- lines = f.read().split('\n')
- # print("="*10+"ORIGINAL"+"="*10)
- # print("\n".join(lines))
- signature_line = lines[line_start - 1]
- # get the number of tabs
- def get_indent_size(s: str):
- return len(re.match(r'\s*', s).group())
- indent_sizes = list(map(get_indent_size, lines))
- indent_size = get_likely_indent_size(indent_sizes)
- comment_indent_size = get_indent_size(signature_line) + indent_size
- lines = (
- lines[:line_start]
- + [
- f"{' '*comment_indent_size+comment_prefix[language.lower()]}TODO: replace with your code here"
- ]
- + ([''] * 2)
- + lines[line_end:]
- )
- first_line_after_removed_index = line_start
- while len(
- lines[first_line_after_removed_index].strip()
- ) == 0 and first_line_after_removed_index < len(lines):
- first_line_after_removed_index += 1
- first_line_after_removed = lines[first_line_after_removed_index]
- print('FIRST LINE AFTER REMOVED: ', first_line_after_removed)
- with open('/testing_files/first_line_after_removed.txt', 'w') as f:
- f.write(first_line_after_removed)
- with open(target_filepath, 'w') as f:
- f.write('\n'.join(lines))
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--target_filepath', type=str, required=True)
- parser.add_argument('--line_start', type=int, required=True)
- parser.add_argument('--line_end', type=int, required=True)
- parser.add_argument('--language', type=str, required=True)
- args = parser.parse_args()
- remove_code(args.target_filepath, args.line_start, args.line_end, args.language)
|