mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-15 05:07:16 -04:00
cd96ffe287
in particular it looks like CI was not picking up on the "git diff" oriented commands, which were failing to run due to pathing issues. As we were setting cwd for black/zimports relative to sqlalchemy library, and tox installs it in the venv, black/zimports would fail to run from tox, and since these are subprocess.run we didn't pick up the failure. This overall locks down how zimports/black are run so that we are definitely from the source root, by using the location of tools/ to determine the root. Fixes: #8892 Change-Id: I7c54b747edd5a80e0c699b8456febf66d8b62375
67 lines
1.6 KiB
Python
67 lines
1.6 KiB
Python
"""Synchronizes test files that require the future annotation import.
|
|
|
|
.. versionadded:: 2.0
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
from typing import Any
|
|
from typing import Iterable
|
|
|
|
from sqlalchemy.util.tool_support import code_writer_cmd
|
|
|
|
header = '''\
|
|
"""This file is automatically generated from the file
|
|
{source!r}
|
|
by the {this_file!r} script.
|
|
|
|
Do not edit manually, any change will be lost.
|
|
""" # noqa: E501
|
|
|
|
from __future__ import annotations
|
|
|
|
'''
|
|
|
|
home = Path(__file__).parent.parent
|
|
this_file = Path(__file__).relative_to(home).as_posix()
|
|
remove_str = "# anno only: "
|
|
|
|
|
|
def run_operation(
|
|
name: str, source: str, dest: str, cmd: code_writer_cmd
|
|
) -> None:
|
|
|
|
source_data = Path(source).read_text().replace(remove_str, "")
|
|
dest_data = header.format(source=source, this_file=this_file) + source_data
|
|
|
|
cmd.write_output_file_from_text(dest_data, dest)
|
|
|
|
|
|
def main(file: str, cmd: code_writer_cmd) -> None:
|
|
if file == "all":
|
|
operations: Iterable[Any] = files.items()
|
|
else:
|
|
operations = [(file, files[file])]
|
|
|
|
for name, info in operations:
|
|
run_operation(name, info["source"], info["dest"], cmd)
|
|
|
|
|
|
files = {
|
|
"typed_annotation": {
|
|
"source": "test/orm/declarative/test_typed_mapping.py",
|
|
"dest": "test/orm/declarative/test_tm_future_annotations_sync.py",
|
|
}
|
|
}
|
|
|
|
if __name__ == "__main__":
|
|
cmd = code_writer_cmd(__file__)
|
|
with cmd.add_arguments() as parser:
|
|
parser.add_argument(
|
|
"--file", choices=list(files) + ["all"], default="all"
|
|
)
|
|
|
|
with cmd.run_program():
|
|
main(cmd.args.file, cmd)
|