Skip to content

Семнадцатая партия бэклога: prune снимает весь отобранный набор #611

Семнадцатая партия бэклога: prune снимает весь отобранный набор

Семнадцатая партия бэклога: prune снимает весь отобранный набор #611

Workflow file for this run

name: CI
on:
push:
branches: [main, master]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install
run: |
pip install -e ".[dev]"
# Pinned by TAG, not by a branch: a guard installed from `main` changes under the
# repository without a commit in it - a green pipeline turns red (or, worse,
# a red one turns green) with nothing here to explain why.
pip install "git+https://github.com/keyfire/docsguard@v0.10.0"
# Данные о языке в репозиторий не входят (генерируются из дистрибутива), поэтому
# зависящие от данных тесты пропускаются; проверяются установка, импорт и смоук на
# матрице версий Python.
- name: Tests
run: pytest -q
# Задача wheels запускает mypy по компилируемым модулям и их транзитивным импортам
# (mypyc), но только ПО ТЕГУ - ошибка типов там валит уже опубликованный релиз
# (так сорвалась публикация 0.29.0). Та же проверка на каждую отправку ловит её до тега.
- name: mypy (mypyc-compiled modules)
run: |
pip install mypy
mypy xbsl/lexer.py xbsl/parser.py --ignore-missing-imports
# The repository is written in English, and until 31.07.2026 that was held by attention
# alone - a wave of new code shipped Russian comments and test docstrings, and nothing
# looked at it. The guard judges the lines a change ADDS (the tree still carries the old
# debt), so it needs the history the default shallow checkout does not fetch.
language:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Language guard (added lines)
run: |
base="${{ github.event.pull_request.base.sha || github.event.before }}"
case "$base" in
""|0000000000000000000000000000000000000000)
base="$(git rev-parse HEAD~1 2>/dev/null || echo HEAD)" ;;
esac
echo "base: $base"
python tools/langguard.py --base "$base"
# The reference pages name rules, tools, commands and settings by hand, and a hand-written
# list drifts the moment a surface grows: a review of the site found eleven MCP tools
# described nowhere and a list of creatable object classes naming eleven of thirty-four.
# The guard needs no language data - it reads the rule registry, not `--list-rules`.
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
# With the extras: without them `xbsl lsp --help` answers "needs the [lsp] extra" instead
# of the flags, and the generated command page comes out short.
- name: Install
run: |
pip install -e ".[lsp,mcp]"
# Pinned by TAG, not by a branch: a guard installed from `main` changes under the
# repository without a commit in it - a green pipeline turns red (or, worse,
# a red one turns green) with nothing here to explain why.
pip install "git+https://github.com/keyfire/docsguard@v0.10.0"
- name: Docs guard (every surface is described)
run: python tools/check_docs.py
# The generated pages are committed, so a stale one means the generator was not run.
- name: Generated pages are up to date
run: |
python scripts/gen-cli-docs.py
python scripts/gen-commands-docs.py
git diff --exit-code -- docs/CLI.md docs/CLI.ru.md \
editors/vscode/README.md editors/vscode/README.ru.md