Spaces:
Build error
Build error
| 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) | |