in fluent/migrate/blame.py [0:0]
def handleFile(self, path: str, file_blame: list[Tuple[str, int]]):
try:
parser = getParser(path)
except UserWarning:
return
self.blame[path] = {}
self.readFile(parser, path)
entities = parser.parse()
for e in entities:
if isinstance(e, Junk):
continue
if e.val_span:
key_vals: list[tuple[str, str]] = [(e.key, e.val_span)]
else:
key_vals = []
if isinstance(e, FluentEntity):
key_vals += [
(f"{e.key}.{attr.key}", cast(str, attr.val_span))
for attr in e.attributes
]
for key, (val_start, val_end) in key_vals:
entity_lines = file_blame[
(e.ctx.linecol(val_start)[0] - 1) : e.ctx.linecol(val_end)[0]
]
user, timestamp = max(entity_lines, key=lambda x: x[1])
if user not in self.users:
self.users.append(user)
userid = self.users.index(user)
self.blame[path][key] = (userid, timestamp)