Merge remote-tracking branch 'origin/sub_laptop_3' into sub_laptop_2
This commit is contained in:
@@ -7,12 +7,9 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
import itertools
|
||||
import re
|
||||
import sys
|
||||
from decimal import ROUND_DOWN, ROUND_HALF_UP, ROUND_UP, Decimal
|
||||
from pathlib import Path
|
||||
|
||||
import master_keys as mk
|
||||
|
||||
@@ -31,27 +28,13 @@ _OPS = ("<=", ">=", "==", "!=", "<", ">")
|
||||
_ARITH = re.compile(r"[\d.\s+\-*/()]*\d[\d.\s+\-*/()]*") # 분수·식 값 칸(「1/1.30」)
|
||||
|
||||
|
||||
# 흐름도 로직(줄에 「흐름」) 셈 — 서버(`M01_MasterData_Store_Flow`)가 꽂음 · 없으면 옛 셈만
|
||||
# 꼴 = (master, 키, 줄, 입력) → `run` 과 같은 꼴(돈 = 줄 · 비목 합 · 계 / 돈 아님 = 결과)
|
||||
FLOW_RUN = None
|
||||
# 흐름 로직 입력 = 「설계 때 정할 것」 → 입력 꼴(이름 · 단위 · 고르기 · 범위 · 예시) — 서버가 꽂음
|
||||
FLOW_INPUTS = None
|
||||
CALC_FIELDS = ("중간", "호표", "결과", "덧줄") # 계산 칸 — 흐름 로직 줄엔 없음(입력은 둠)
|
||||
|
||||
|
||||
def _flow_hooks() -> None:
|
||||
"""흐름 셈 · 입력 갈래를 깖 — 서버가 안 깔았으면(스크립트 · 시험) 여기서 서버 모듈을 불러 깖."""
|
||||
if FLOW_RUN is None or FLOW_INPUTS is None:
|
||||
root = str(Path(__file__).resolve().parents[3])
|
||||
if root not in sys.path:
|
||||
sys.path.insert(0, root)
|
||||
importlib.import_module("M01_MasterData.M01_MasterData_Store_Flow")
|
||||
CALC_FIELDS = ("중간", "호표", "결과", "덧줄") # 계산 칸
|
||||
FLOW_GONE = "흐름도 로직은 걷음 — M01 시트로 다시 만듦" # 794-1b · 저장된 흐름 로직 0
|
||||
|
||||
|
||||
def inputs_of(row: dict) -> list[dict]:
|
||||
"""흐름의 「설계 때 정할 것」 → 입력 꼴(이름 · 단위 · 고르기 · 범위 · 예시)."""
|
||||
_flow_hooks()
|
||||
return FLOW_INPUTS(row)
|
||||
"""옛 흐름 로직(줄에 「흐름」) 입력 — 흐름도를 걷어 늘 못 셈."""
|
||||
raise FormulaError(FLOW_GONE)
|
||||
|
||||
|
||||
class FormulaError(ValueError):
|
||||
@@ -564,9 +547,8 @@ def _blank_line(item: dict, why: str) -> dict:
|
||||
def run(master: Master, ref: str, given: dict, depth: int = 0) -> dict:
|
||||
"""로직 한 줄 계산 — 돈 로직은 호표 줄 · 비목 합 · 계, 돈 아닌 로직은 결과 수 하나."""
|
||||
row = master.logic(ref)
|
||||
if isinstance(row.get("흐름"), dict): # 흐름 로직 — 깔림에 기대지 않고 스스로 깖
|
||||
_flow_hooks()
|
||||
return FLOW_RUN(master, ref, row, given)
|
||||
if isinstance(row.get("흐름"), dict):
|
||||
raise FormulaError(FLOW_GONE)
|
||||
env = _inputs(row, given, master)
|
||||
for step in row.get("중간", []):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user