Create Python tools in favour of shell scripts

Python is likely to be installed when working on Python code,
which should make it more portable and consistent.
This commit is contained in:
Lonami Exo
2023-09-03 11:00:48 +02:00
parent 9c888b83da
commit e4d88e061d
6 changed files with 74 additions and 7 deletions

22
tools/check.py Normal file
View File

@@ -0,0 +1,22 @@
"""
Sort imports, format code, type-check and run offline tests.
"""
import subprocess
import sys
def run(*args: str) -> int:
return subprocess.run((sys.executable, "-m", *args)).returncode
def main() -> None:
exit(
run("isort", ".", "--profile", "black", "--gitignore")
or run("black", ".", "--extend-exclude", r"tl/(abcs|functions|types)/\w+.py")
or run("mypy", "--strict", ".")
or run("pytest", ".", "-m", "not net")
)
if __name__ == "__main__":
main()

24
tools/codegen.py Normal file
View File

@@ -0,0 +1,24 @@
"""
Run `telethon_generator.codegen` on both `api.tl` and `mtproto.tl` to output
corresponding Python code in the default directories under the `client/`.
"""
import subprocess
import sys
GENERATOR = "telethon_generator.codegen"
ROOT = "client/src/telethon/_impl"
def run(*args: str) -> int:
return subprocess.run((sys.executable, "-m", *args)).returncode
def main() -> None:
exit(
run(GENERATOR, "api.tl", f"{ROOT}/tl")
or run(GENERATOR, "mtproto.tl", f"{ROOT}/tl/mtproto")
)
if __name__ == "__main__":
main()

17
tools/docgen.py Normal file
View File

@@ -0,0 +1,17 @@
"""
Run `sphinx-build` to create HTML documentation and detect errors.
"""
import subprocess
import sys
def run(*args: str) -> int:
return subprocess.run((sys.executable, "-m", *args)).returncode
def main() -> None:
exit(run("sphinx", "-nW", "client/doc", "dist-doc"))
if __name__ == "__main__":
main()