Перейти к содержанию

LeroyProtoLIB — точки входа (P_.py / Commone.py)

Раздел 4d документации LeroyProtoLIB (см. 01-families-map.md). Составлен агентом-документатором 2026-07-24. 77 файлов-обёрток в корне LeroyProtoLIB/.

Точка входа — тонкий .py, который K3 запускает по имени прототипа. Она НЕ содержит логики построения: только импортирует «толстый» билдер (cab_* или семейство boad) и зовёт его main(...)/build_aboad(...). ProtoID не зашит — резолвится в рантайме по default_name_proto (см. 01 §1).

Два поколения обёрток

«Новые» (32 файла, префикс P_ в CamelCase): вызывают <family>.boad.main(default_name_module=, default_name_proto=, default_name_lib=). Условный reload по уровню лога (if logger._core.min_level <= 10: reload(boad)). Пример — P_PedestalMONO_1.py:

from LeroyProtoLIB.pedestal_pivot_mono import boad
if logger._core.min_level <= 10:
    from pimp import reload; reload(boad)
boad.main(default_name_module="P_PedestalMONO_1.py",
          default_name_proto="РШ Тумба MONO-1",
          default_name_lib="LeroyProtoLIB")

«Старые» (45 файлов, P_cab_*/P_shell_*/cab_*L/R): либо одна строка cab_pivot_mono.main() (P_CabMONO_1.py), либо собственная main() с DATA_PROTO + build_aboad (P_cab_duoL.py).

Точки входа по семействам

Префикс Кол-во Билдер Изделия
P_Cab* (CamelCase) 13 cab_* / boad высокие шкафы РШ: MONO-1/2, DUO-2/3L/3R/4, TRIO-3/4/5/6, MiniP, TrioP
P_cab_* / cab_*L/R 7 cab_duo/cab_gk_* купе/ГК: ДУО Л/П, ГК Корпус, ГК Дверная система
P_shell_* 14 cab_* (тонко) корпуса-прототипы (mono_one/two, duo_two/three/four, trio, pivot_trio_*)
P_Pedestal* 10 pedestal_pivot_*/boad тумбы распашные: MONO-1/2, DUO-2/3L/3P, Nav, BoxNav
Commode* 4 commode_pivot_*/boad комоды: MONO-1, DUO-2L/2R, TRIO-3
P_Shoemaker* 4 shoemaker_mono/boad обувницы MONO 1.1/1.2 (+ box-варианты)
P_Antresol* 10 antresol_pivot_*/boad антресоли: MONO-1/2, DUO-2/3L/3R/4, TRIO-3/4/5/6
P_SU_* 11 bathroom/*/boad санузел: Bi/Dn/I/V варианты MONO-1/2, DUO-2
P_WallPanel* 3 wallpanel*/boad панели: Hooks, Mirror, Rollers
P_based_shell 1 based_shell/shell «Базовый корпус Парамкаталога» (универсальный)

Прочее: P_socleRSH.py (цоколь РШ как самостоятельный прототип), P_niche_vesh.py / P_niche_vesh_prod.py (вешала как ассеты-прототипы).

Контракт билдера, вызываемого обёрткой

Все толстые билдеры (cab_*.main, <family>.boad.main) имеют одну сигнатуру:

def main(default_name_module=..., default_name_proto=..., default_name_lib="LeroyProtoLIB"):
    DATA_PROTO = core_k.proto_func.DataProto()
    DATA_PROTO.default_name_module = default_name_module
    DATA_PROTO.default_name_proto  = default_name_proto
    DATA_PROTO.default_name_lib    = default_name_lib
    return build_aboad(DATA_PROTO)        # -> skf (построенный объект)

build_aboad (см. 01 §1, §6): _get_proto_id(DATA_PROTO)UnitXXX(id_prototype=proto_id, inst_data=RSH_*())unit.Make()unit.Draw()k3.fixing/k3.holesselbyattr → возвращает объект.

Замечание по консистентности (кандидаты на TODO)

  • cab_mono_two.py:main() не возвращает построенный объект (TODO(АУДИТ) в 04c), в отличие от соседей.
  • P_CabMONO_1.py — старый стиль (одна строка), а соседние P_Pedestal* уже новые. Смешение стилей в рамках одного семейства.
  • Обёртки P_cab_*/cab_*L/R дублируют логику main() внутри себя (собственный DATA_PROTO), вместо вызова cab_*.main(...) — лишний код.

Связанные документы

01-families-map §1 (cab_* контракт), §2 (семейства boad), §6 (минимальный набор сущностей); 04c (модули ядра + build_aboad).