mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-24 10:26:27 +08:00
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:
parent
459697a131
commit
23cce00e09
4 changed files with 36 additions and 24 deletions
6
.github/workflows/python.yml
vendored
6
.github/workflows/python.yml
vendored
|
@ -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
|
||||||
|
|
|
@ -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
32
codes/python/test_all.py
Normal 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))
|
|
@ -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` ,安装代码格式化工具。
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue