diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8df6d70a3bed4..c64898cf7df09 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -268,7 +268,7 @@ repos: |/_testing/ - id: autotyping name: autotyping - entry: python -m libcst.tool codemod autotyping.AutotypeCommand --aggressive + entry: python -m scripts.run_autotyping types_or: [python, pyi] files: ^pandas exclude: ^(pandas/tests|pandas/_version.py|pandas/io/clipboard) diff --git a/scripts/run_autotyping.py b/scripts/run_autotyping.py new file mode 100644 index 0000000000000..f537b8d16c77a --- /dev/null +++ b/scripts/run_autotyping.py @@ -0,0 +1,36 @@ +""" +Script to run ``autotyping``, to get around the fact that +pre-commit puts ``args`` before the list of files, whereas +``autotyping`` wants the files to come after, see +https://github.com/pandas-dev/pandas/issues/48808#issuecomment-1259711679. +""" +from __future__ import annotations + +import argparse +import subprocess +import sys +from typing import Sequence + + +def main(argv: Sequence[str] | None = None) -> None: + parser = argparse.ArgumentParser() + parser.add_argument("paths", nargs="*") + args = parser.parse_args(argv) + if not args.paths: + sys.exit(0) + output = subprocess.run( + [ + "python", + "-m", + "libcst.tool", + "codemod", + "autotyping.AutotypeCommand", + *args.paths, + "--aggressive", + ], + ) + sys.exit(output.returncode) + + +if __name__ == "__main__": + main()