Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def update_line_numbers(filename):
hash = hash_of(filename)
sourcefile = get_or_create(SourceFile, filename=filename)
if hash == sourcefile.hash:
return
cached_line_objects = list(sourcefile.lines.order_by(Line.line_number))
cached_lines = [x.line for x in cached_line_objects]
with open(filename) as f:
existing_lines = [x.strip('\n') for x in f.readlines()]
if not cached_lines:
for i, line in enumerate(existing_lines):
Line(sourcefile=sourcefile, line=line, line_number=i)
return
for command, a, a_index, b, b_index in sequence_ops(cached_lines, existing_lines):
if command == 'equal':
if a_index != b_index:
cached_obj = cached_line_objects[a_index]
assert cached_obj.line == existing_lines[b_index]
def update_line_numbers(filename):
hash = hash_of(filename)
sourcefile = get_or_create(SourceFile, filename=filename)
if hash == sourcefile.hash:
return
cached_line_objects = list(sourcefile.lines.order_by(Line.line_number))
cached_lines = [x.line for x in cached_line_objects]
with open(filename) as f:
existing_lines = [x.strip('\n') for x in f.readlines()]
if not cached_lines:
for i, line in enumerate(existing_lines):
Line(sourcefile=sourcefile, line=line, line_number=i)
return
for command, a, a_index, b, b_index in sequence_ops(cached_lines, existing_lines):
if command == 'equal':
if a_index != b_index:
cached_obj = cached_line_objects[a_index]
assert cached_obj.line == existing_lines[b_index]
cached_obj.line_number = b_index
elif command == 'delete':
cached_line_objects[a_index].delete()
elif command == 'insert':
if b is not None:
Line(sourcefile=sourcefile, line=b, line_number=b_index)
class SourceFile(db.Entity):
filename = Required(str, autostrip=False)
hash = Optional(str)
lines = Set('Line')
class Line(db.Entity):
sourcefile = Required(SourceFile)
line = Optional(str, autostrip=False)
line_number = Required(int)
mutants = Set('Mutant')
class Mutant(db.Entity):
line = Required(Line)
index = Required(int)
tested_against_hash = Optional(str, autostrip=False)
status = Required(str, autostrip=False) # really an enum of mutant_statuses
def init_db(f):
@wraps(f)
def wrapper(*args, **kwargs):
if db.provider is None:
cache_filename = os.path.join(os.getcwd(), '.mutmut-cache')
db.bind(provider='sqlite', filename=cache_filename, create_db=True)
try:
db.generate_mapping(create_tables=True)
except OperationalError:
pass
cached_obj = cached_line_objects[a_index]
assert cached_obj.line == existing_lines[b_index]
cached_obj.line_number = b_index
elif command == 'delete':
cached_line_objects[a_index].delete()
elif command == 'insert':
if b is not None:
Line(sourcefile=sourcefile, line=b, line_number=b_index)
elif command == 'replace':
if a_index is not None:
cached_line_objects[a_index].delete()
if b is not None:
Line(sourcefile=sourcefile, line=b, line_number=b_index)
else:
raise ValueError('Unknown opcode from SequenceMatcher: {}'.format(command))
sourcefile.hash = hash
Line(sourcefile=sourcefile, line=line, line_number=i)
return
for command, a, a_index, b, b_index in sequence_ops(cached_lines, existing_lines):
if command == 'equal':
if a_index != b_index:
cached_obj = cached_line_objects[a_index]
assert cached_obj.line == existing_lines[b_index]
cached_obj.line_number = b_index
elif command == 'delete':
cached_line_objects[a_index].delete()
elif command == 'insert':
if b is not None:
Line(sourcefile=sourcefile, line=b, line_number=b_index)
elif command == 'replace':
if a_index is not None:
cached_line_objects[a_index].delete()
if b is not None:
Line(sourcefile=sourcefile, line=b, line_number=b_index)
else:
raise ValueError('Unknown opcode from SequenceMatcher: {}'.format(command))
sourcefile.hash = hash