Andrey Epifancev 801d9948ca synthgen: каркас, настройки, копии модулей #35 (#38)
- synthgen/config.py: Config, load_config (YAML + --set), dump_config, проверки диапазонов §3
- synthgen/rng.py: rng_for (SHA-256 → Random), stable_hash
- synthgen/__main__.py: разбор --config/--set/--out/--force, ошибка конфигурации → код 2
- synthgen/examples/default.yaml: все ключи §3 со значениями по умолчанию
- копии из synthetic-group/gen (#35): inn, xlsx, ledger, chart (+80.09, 91.09 из seed arm-core)
- тесты: config, inn, ledger; conftest с маркерами parser/slow
- .gitignore: out/
- спека: решения 15–16

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-12 23:35:17 +04:00

41 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Точка входа: `python -m synthgen --config synthgen/examples/default.yaml --set group_size=12 --out DIR`.
Пока печатает итоговые настройки (спека §3); генерация набора добавится в следующих задачах.
"""
import argparse
import sys
from dataclasses import replace
from pathlib import Path
from synthgen.config import ConfigError, dump_config, load_config
def _parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(prog="synthgen", description="Генератор синтетического набора АРМ КА.")
parser.add_argument("--config", type=Path, default=None, help="YAML с настройками")
parser.add_argument(
"--set", dest="overrides", action="append", default=[], metavar="КЛЮЧ=ЗНАЧЕНИЕ",
help="переопределение настройки (можно повторять)",
)
parser.add_argument("--out", type=Path, default=None, help="каталог результата")
parser.add_argument("--force", action="store_true", help="перезаписать существующий каталог результата")
return parser
def main(argv: list[str] | None = None) -> int:
args = _parser().parse_args(argv)
try:
cfg = load_config(args.config, args.overrides)
except ConfigError as exc:
print(f"ошибка конфигурации: {exc}", file=sys.stderr)
return 2
if args.out is not None:
cfg = replace(cfg, out=args.out)
sys.stdout.write(dump_config(cfg))
return 0
if __name__ == "__main__":
raise SystemExit(main())