in tools/upgrade/filesystem.py [0:0]
def add_local_mode(filename: str, mode: LocalMode) -> None:
LOG.info("Processing `%s`", filename)
path = Path(filename)
text = path.read_text()
if "@" "generated" in text:
LOG.warning("Attempting to edit generated file %s, skipping.", filename)
return
lines: "List[str]" = text.split("\n")
# Check if a local mode is already set.
for line in lines:
for local_mode in LocalMode:
if re.match(local_mode.get_regex(), line):
return
def is_header(line: str) -> bool:
is_comment = line.lstrip().startswith("#")
is_pyre_ignore = (
re.match("^[ \t]*# *pyre-ignore *$", line)
or re.match("^[ \t]*# *pyre-fixme *$", line)
or re.match("^[ \t]*# *type: ignore *$", line)
)
return is_comment and not is_pyre_ignore
# Add local mode.
new_lines = []
past_header = False
for line in lines:
if not past_header and not is_header(line):
past_header = True
if len(new_lines) != 0:
new_lines.append("")
new_lines.append(mode.get_comment())
new_lines.append(line)
new_text = "\n".join(new_lines)
ast.check_stable(text, new_text)
path.write_text(new_text)