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) | |