Fix Python build check script. (#911)

* Fix Python build check script.

* Update python code check workflow

* Update python test script.

* Compatible with Python >=3.9

* Compatible with Python >=3.10

* Fix errors in Windows

* test

* Add Python version in installation.md

* Update test_all.py
This commit is contained in:
Yudong Jin 2023-11-02 21:58:14 +08:00 committed by GitHub
parent 459697a131
commit 23cce00e09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 24 deletions

View file

@ -22,7 +22,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ubuntu-latest, macos-latest, windows-latest] os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.8", "3.10"] python-version: ["3.10", "3.11"]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
@ -36,6 +36,6 @@ jobs:
- name: Lint with black - name: Lint with black
run: | run: |
black codes/python black codes/python
- name: Build with py_compile - name: Test python code
run: | run: |
python codes/python/build.py python codes/python/test_all.py

View file

@ -1,20 +0,0 @@
import glob
import py_compile as pyc
if __name__ == "__main__":
# find source code files
src_paths = sorted(glob.glob("codes/python/**/*.py"))
num_src = len(src_paths)
num_src_error = 0
# compile python code
for src_path in src_paths:
try:
pyc.compile(src_path, doraise=True)
except pyc.PyCompileError as e:
num_src_error += 1
print(e)
print(f"===== Build Complete =====")
print(f"Total: {num_src}")
print(f"Error: {num_src_error}")

32
codes/python/test_all.py Normal file
View file

@ -0,0 +1,32 @@
import os
import glob
import subprocess
env = os.environ.copy()
env["PYTHONIOENCODING"] = "utf-8"
if __name__ == "__main__":
# find source code files
src_paths = sorted(glob.glob("codes/python/chapter_*/*.py"))
errors = []
# run python code
for src_path in src_paths:
process = subprocess.Popen(
["python", src_path],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
env=env,
)
# Wait for the process to complete, and get the output and error messages
stdout, stderr = process.communicate()
# Check the exit status
exit_status = process.returncode
if exit_status != 0:
errors.append(stderr)
print(f"Tested {len(src_paths)} files")
print(f"Found exception in {len(errors)} files")
if len(errors) > 0:
raise RuntimeError("\n\n".join(errors))

View file

@ -17,7 +17,7 @@
### Python 环境 ### Python 环境
1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) 。 1. 下载并安装 [Miniconda3](https://docs.conda.io/en/latest/miniconda.html) ,需要 Python 3.10 或更新版本
2. 在 VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。 2. 在 VSCode 的插件市场中搜索 `python` ,安装 Python Extension Pack 。
3. (可选)在命令行输入 `pip install black` ,安装代码格式化工具。 3. (可选)在命令行输入 `pip install black` ,安装代码格式化工具。