================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\check_unknown.py", line 15, in <module>
    res = parse_mischanlage(fp)
          ^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 297, in parse_mischanlage
    wb = openpyxl.load_workbook(file_path, data_only=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook
    reader.read()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 293, in read
    self.read_workbook()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 152, in read_workbook
    self.parser = WorkbookParser(self.archive, wb_part.PartName[1:], keep_links=self.keep_links)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\workbook.py", line 31, in __init__
    self.wb = Workbook()
              ^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 74, in __init__
    self._setup_styles()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 116, in _setup_styles
    self.add_named_style(NamedStyle(font=copy(DEFAULT_FONT), border=copy(DEFAULT_BORDER), builtinId=0))
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 348, in add_named_style
    style.bind(self)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\named_styles.py", line 94, in bind
    self._recalculate()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\named_styles.py", line 98, in _recalculate
    self._style.fontId =  self._wb._fonts.add(self.font)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\utils\indexed_list.py", line 48, in add
    self.append(value)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\utils\indexed_list.py", line 43, in append
    if value not in self._dict:
       ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 179, in __eq__
    if getattr(self, el) != getattr(other, el):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 185, in __ne__
    return not self == other
               ^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 176, in __eq__
    elif not dict(self) == dict(other):
             ^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\colors.py", line 106, in __iter__
    attrs = [(self.type, self.value)]
                         ^^^^^^^^^^
RecursionError: maximum recursion depth exceeded
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\check_unknown.py", line 15, in <module>
    res = parse_mischanlage(fp)
          ^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 297, in parse_mischanlage
    wb = openpyxl.load_workbook(file_path, data_only=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook
    reader.read()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 293, in read
    self.read_workbook()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 152, in read_workbook
    self.parser = WorkbookParser(self.archive, wb_part.PartName[1:], keep_links=self.keep_links)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\workbook.py", line 31, in __init__
    self.wb = Workbook()
              ^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 74, in __init__
    self._setup_styles()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 98, in _setup_styles
    self._alignments = IndexedList([Alignment()])
                                    ^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\alignment.py", line 41, in __init__
    self.indent = indent
    ^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\base.py", line 112, in __set__
    super().__set__(instance, value)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\base.py", line 92, in __set__
    super().__set__(instance, value)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\base.py", line 72, in __set__
    super().__set__(instance, value)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\base.py", line 47, in __set__
    super().__set__(instance, value)
RecursionError: maximum recursion depth exceeded
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\check_unknown.py", line 15, in <module>
    res = parse_mischanlage(fp)
          ^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 297, in parse_mischanlage
    wb = openpyxl.load_workbook(file_path, data_only=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 346, in load_workbook
    reader = ExcelReader(filename, read_only, keep_vba,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 123, in __init__
    self.archive = _validate_archive(fn)
                   ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 95, in _validate_archive
    archive = ZipFile(filename, 'r')
              ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\zipfile.py", line 1273, in __init__
    if isinstance(file, os.PathLike):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen abc>", line 119, in __instancecheck__
RecursionError: maximum recursion depth exceeded in comparison

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 20, in <module>
    plugins = discover_plugins()
              ^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 179, in discover_plugins
    traceback.print_exc()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 183, in print_exc
    print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 124, in print_exception
    te = TracebackException(type(value), value, tb, limit=limit, compact=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 692, in __init__
    self.stack = StackSummary._extract_from_extended_frame_gen(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 436, in _extract_from_extended_frame_gen
    f.line
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 321, in line
    self._line = linecache.getline(self.filename, self.lineno)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 30, in getline
    lines = getlines(filename, module_globals)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 46, in getlines
    return updatecache(filename, module_globals)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 136, in updatecache
    with tokenize.open(fullname) as fp:
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 17, in <module>
    from flexible_parser import get_profile, parse_assembly_list
  File "C:\ALMCONcutter\cutforge 2.0\flexible_parser.py", line 12, in <module>
    import json
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1138, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1078, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1504, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1476, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1631, in find_spec
  File "<frozen importlib._bootstrap_external>", line 161, in _path_isfile
  File "<frozen importlib._bootstrap_external>", line 153, in _path_is_mode_type
RecursionError: maximum recursion depth exceeded
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "<frozen importlib._bootstrap_external>", line 1437, in _path_importer_cache
KeyError: 'C:\\Users\\matus\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 32, in <module>
    from assembly_parser import FORMAT_SIGNATURES
  File "C:\ALMCONcutter\cutforge 2.0\assembly_parser.py", line 13, in <module>
    import os, re, json, copy
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1138, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1078, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1504, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1473, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1439, in _path_importer_cache
  File "<frozen importlib._bootstrap_external>", line 1415, in _path_hooks
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "<frozen importlib._bootstrap_external>", line 1437, in _path_importer_cache
KeyError: 'C:\\Users\\matus\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 17, in <module>
    from flexible_parser import get_profile, parse_assembly_list
  File "C:\ALMCONcutter\cutforge 2.0\flexible_parser.py", line 12, in <module>
    import json
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1138, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1078, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1504, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1473, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1439, in _path_importer_cache
  File "<frozen importlib._bootstrap_external>", line 1415, in _path_hooks
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 32, in <module>
    from assembly_parser import FORMAT_SIGNATURES
  File "C:\ALMCONcutter\cutforge 2.0\assembly_parser.py", line 13, in <module>
    import os, re, json, copy
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "<frozen importlib._bootstrap>", line 1173, in _find_and_load
  File "<frozen importlib._bootstrap>", line 170, in __enter__
  File "<frozen importlib._bootstrap>", line 185, in _get_module_lock
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 17, in <module>
    from flexible_parser import get_profile, parse_assembly_list
  File "C:\ALMCONcutter\cutforge 2.0\flexible_parser.py", line 12, in <module>
    import json
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "<frozen importlib._bootstrap>", line 1173, in _find_and_load
  File "<frozen importlib._bootstrap>", line 170, in __enter__
  File "<frozen importlib._bootstrap>", line 185, in _get_module_lock
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 32, in <module>
    from assembly_parser import FORMAT_SIGNATURES
  File "C:\ALMCONcutter\cutforge 2.0\assembly_parser.py", line 13, in <module>
    import os, re, json, copy
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1138, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1078, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1504, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1476, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1646, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1601, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 803, in spec_from_file_location
  File "<frozen importlib._bootstrap_external>", line 177, in _path_isabs
RecursionError: maximum recursion depth exceeded in comparison
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 17, in <module>
    from flexible_parser import get_profile, parse_assembly_list
  File "C:\ALMCONcutter\cutforge 2.0\flexible_parser.py", line 12, in <module>
    import json
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1138, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1078, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1504, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1476, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1646, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1601, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 803, in spec_from_file_location
  File "<frozen importlib._bootstrap_external>", line 177, in _path_isabs
RecursionError: maximum recursion depth exceeded in comparison
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
ValueError: 72 is not a valid RegexFlag

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 32, in <module>
    from assembly_parser import FORMAT_SIGNATURES
  File "C:\ALMCONcutter\cutforge 2.0\assembly_parser.py", line 13, in <module>
    import os, re, json, copy
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\scanner.py", line 13, in <module>
    (re.VERBOSE | re.MULTILINE | re.DOTALL))
     ~~~~~~~~~~~^~~~~~~~~~~~~~
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1507, in __or__
    return self.__class__(value | other)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1136, in __new__
    raise exc
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1113, in __new__
    result = cls._missing_(value)
             ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1435, in _missing_
    for m in cls._iter_member_(member_value):
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1364, in _iter_member_by_def_
    yield from sorted(
               ^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1354, in _iter_member_by_value_
    for val in _iter_bits_lsb(value & cls._flag_mask_):
                                      ^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
ValueError: 72 is not a valid RegexFlag

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 17, in <module>
    from flexible_parser import get_profile, parse_assembly_list
  File "C:\ALMCONcutter\cutforge 2.0\flexible_parser.py", line 12, in <module>
    import json
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\decoder.py", line 5, in <module>
    from json import scanner
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\json\scanner.py", line 13, in <module>
    (re.VERBOSE | re.MULTILINE | re.DOTALL))
     ~~~~~~~~~~~^~~~~~~~~~~~~~
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1507, in __or__
    return self.__class__(value | other)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 712, in __call__
    return cls.__new__(cls, value)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1136, in __new__
    raise exc
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1113, in __new__
    result = cls._missing_(value)
             ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1435, in _missing_
    for m in cls._iter_member_(member_value):
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1364, in _iter_member_by_def_
    yield from sorted(
               ^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 1354, in _iter_member_by_value_
    for val in _iter_bits_lsb(value & cls._flag_mask_):
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\enum.py", line 120, in _iter_bits_lsb
    if isinstance(num, Enum):
       ^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\check_unknown.py", line 15, in <module>
    res = parse_mischanlage(fp)
          ^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 297, in parse_mischanlage
    wb = openpyxl.load_workbook(file_path, data_only=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook
    reader.read()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 293, in read
    self.read_workbook()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 152, in read_workbook
    self.parser = WorkbookParser(self.archive, wb_part.PartName[1:], keep_links=self.keep_links)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\workbook.py", line 31, in __init__
    self.wb = Workbook()
              ^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 74, in __init__
    self._setup_styles()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\workbook\workbook.py", line 116, in _setup_styles
    self.add_named_style(NamedStyle(font=copy(DEFAULT_FONT), border=copy(DEFAULT_BORDER), builtinId=0))
                                         ^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\copy.py", line 84, in copy
    return copier(x)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 234, in __copy__
    cp = self.__class__.from_tree(xml)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\fonts.py", line 109, in from_tree
    return super().from_tree(node)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree
    obj = desc.expected_type.from_tree(el)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
    return cls(**attrib)
           ^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\styles\colors.py", line 87, in __init__
    self.type = 'theme'
    ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\base.py", line 47, in __set__
    super().__set__(instance, value)
RecursionError: maximum recursion depth exceeded
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\check_unknown.py", line 15, in <module>
    res = parse_mischanlage(fp)
          ^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 297, in parse_mischanlage
    wb = openpyxl.load_workbook(file_path, data_only=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 348, in load_workbook
    reader.read()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 289, in read
    self.read_manifest()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 136, in read_manifest
    self.package = Manifest.from_tree(root)
                   ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
    return cls(**attrib)
           ^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\packaging\manifest.py", line 87, in __init__
    self.Default = Default
    ^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\sequence.py", line 29, in __set__
    seq = IndexedList(seq)
          ^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\utils\indexed_list.py", line 20, in __init__
    self._dict[val] = idx
    ~~~~~~~~~~^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\descriptors\serialisable.py", line 212, in __hash__
    return hash(tuple(fields))
           ^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\apply_assembly_parser_hooks.py", line 9, in <module>
    with open(PATH, "r", encoding="utf-8") as f:
RecursionError: maximum recursion depth exceeded while calling a Python object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 20, in <module>
    plugins = discover_plugins()
              ^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 179, in discover_plugins
    traceback.print_exc()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 183, in print_exc
    print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 124, in print_exception
    te = TracebackException(type(value), value, tb, limit=limit, compact=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 692, in __init__
    self.stack = StackSummary._extract_from_extended_frame_gen(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 436, in _extract_from_extended_frame_gen
    f.line
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 321, in line
    self._line = linecache.getline(self.filename, self.lineno)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 30, in getline
    lines = getlines(filename, module_globals)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 46, in getlines
    return updatecache(filename, module_globals)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 136, in updatecache
    with tokenize.open(fullname) as fp:
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\tokenize.py", line 396, in open
    buffer = _builtin_open(filename, 'rb')
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RecursionError: maximum recursion depth exceeded while calling a Python object

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 20, in <module>
    plugins = discover_plugins()
              ^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 179, in discover_plugins
    traceback.print_exc()
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 183, in print_exc
    print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 124, in print_exception
    te = TracebackException(type(value), value, tb, limit=limit, compact=True)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 747, in __init__
    context = TracebackException(
              ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 692, in __init__
    self.stack = StackSummary._extract_from_extended_frame_gen(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 436, in _extract_from_extended_frame_gen
    f.line
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\traceback.py", line 321, in line
    self._line = linecache.getline(self.filename, self.lineno)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 30, in getline
    lines = getlines(filename, module_globals)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 46, in getlines
    return updatecache(filename, module_globals)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\linecache.py", line 136, in updatecache
    with tokenize.open(fullname) as fp:
RecursionError: maximum recursion depth exceeded while calling a Python object
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_test.py", line 18, in <module>
    from assembly_list_parser_fixed import assembly_map_to_raw_parts
  File "C:\ALMCONcutter\cutforge 2.0\assembly_list_parser_fixed.py", line 7, in <module>
    from normalizer import normalize_id as _normalize_id
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 676, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 579, in module_from_spec
  File "<frozen importlib._bootstrap>", line 558, in _init_module_attrs
  File "<frozen importlib._bootstrap>", line 398, in cached
  File "<frozen importlib._bootstrap_external>", line 570, in _get_cached
  File "<frozen importlib._bootstrap_external>", line 463, in cache_from_source
  File "<frozen importlib._bootstrap_external>", line 134, in _path_split
RecursionError: maximum recursion depth exceeded
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 43, in <module>
    from assembly_parser import _load_rows, _find_header, _detect_format
ImportError: cannot import name '_load_rows' from partially initialized module 'assembly_parser' (most likely due to a circular import) (C:\ALMCONcutter\cutforge 2.0\assembly_parser.py)
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
[plugin_loader] Modul check_unknown.py sa nedal naimportovať: maximum recursion depth exceeded
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
[plugin_loader] Modul check_unknown.py sa nedal naimportovať: maximum recursion depth exceeded
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
[plugin_loader] Modul check_unknown.py sa nedal naimportovať: maximum recursion depth exceeded in comparison
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\e2e_plugin_test.py", line 43, in <module>
    from assembly_parser import _load_rows, _find_header, _detect_format
ImportError: cannot import name '_load_rows' from partially initialized module 'assembly_parser' (most likely due to a circular import) (C:\ALMCONcutter\cutforge 2.0\assembly_parser.py)
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded in comparison
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded in comparison
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0

=== SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ===
Pocet unknown: 0
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
[plugin_loader] Modul check_unknown.py sa nedal naimportovať: maximum recursion depth exceeded
================================================================================
KROK 1: Plugin discovery
================================================================================
OK: aplikovane ['hook1(už aplikované)', 'hook2(už aplikované)']
Bytes: 38657

=== SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ===
[plugin_loader] Modul check_unknown.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
================================================================================
KROK 1: Plugin discovery
================================================================================
[plugin_loader] Modul apply_assembly_parser_hooks.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: maximum recursion depth exceeded while calling a Python object
[plugin_loader] Modul e2e_test.py sa nedal naimportovať: maximum recursion depth exceeded
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 6
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: cannot import name '_load_rows' from partially initialized module 'assembly_parser' (most likely due to a circular import) (C:\ALMCONcutter\cutforge 2.0\assembly_parser.py)
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 6
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Modul e2e_plugin_test.py sa nedal naimportovať: cannot import name '_load_rows' from partially initialized module 'assembly_parser' (most likely due to a circular import) (C:\ALMCONcutter\cutforge 2.0\assembly_parser.py)
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'
[assembly_parser] Zaregistrovaných 1 plugin parser(ov)
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100305_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100305_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100306_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100307_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100307_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100308_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100308_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100309_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100309_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100310_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100311_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100311_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100313_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100314_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100315_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100315_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100316_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100316_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100317_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100317_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100318_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100318_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100319_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100319_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100320_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100320_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100321_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100321_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100322_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100322_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100323_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100323_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100324_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100324_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100325_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100325_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100326_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100326_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100327_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100327_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100328_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100328_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100329_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100329_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100330_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100330_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100331_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100331_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100332_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100332_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100334_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100334_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100335_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100335_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100336_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100336_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100337_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100337_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100338_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100338_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100339_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100339_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100340_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100340_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100341_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100341_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100342_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100342_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100343_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100343_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100344_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100344_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100345_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100345_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100346_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100346_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100347_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100347_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100348_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100348_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100349_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100349_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100350_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100350_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100351_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100351_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100352_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100352_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100353_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100354_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100355_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100356_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100357_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100357_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100358_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100358_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100359_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100359_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100400_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100400_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100401_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100401_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100402_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100402_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100403_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100403_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100404_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100404_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100405_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100405_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100406_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100406_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100407_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100407_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100408_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100408_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100409_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100409_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100410_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100410_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100411_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100411_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100412_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100412_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100413_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100413_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100414_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100414_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100415_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100416_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100416_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100417_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100417_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100418_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100418_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100419_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100419_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100420_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100420_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100421_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100421_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100422_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100422_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100423_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100423_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100423_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100424_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100424_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100425_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100425_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100426_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100426_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100427_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100427_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100428_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100428_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100429_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100429_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100430_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100430_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100431_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100431_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100432_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100432_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100433_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100433_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100434_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100435_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100436_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100437_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100438_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100438_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100439_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100439_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100440_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100440_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100441_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100441_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100442_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100442_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100443_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100443_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100444_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100444_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100444_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100445_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100445_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100446_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100446_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100447_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100447_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100448_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100448_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100448_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100449_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100449_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100450_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100450_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100451_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100451_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100452_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100452_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100453_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100453_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100454_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100454_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100455_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100456_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100456_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100457_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100457_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100457_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100458_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100458_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100459_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100459_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100500_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100500_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100501_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100501_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100502_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100502_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100503_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100503_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100504_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100504_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100504_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100505_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100505_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100506_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100506_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100507_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100507_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100507_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100508_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100508_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100509_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100509_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100510_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100510_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100511_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100511_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100512_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100512_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100513_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100514_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100515_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100516_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100516_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100517_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100517_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100518_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100518_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100519_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100519_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100520_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100520_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100521_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100521_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100521_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100522_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100522_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100523_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100523_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100524_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100524_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100525_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100525_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100525_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100526_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100526_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100527_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100527_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100528_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100528_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100528_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100529_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100529_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100530_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100530_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100531_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100531_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100532_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100532_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100533_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100533_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100534_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100534_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100535_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100535_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100536_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100536_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100537_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100537_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100538_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100538_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100538_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100539_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100539_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100540_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100540_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100540_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100541_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100541_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100542_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100542_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100543_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100543_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100544_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100544_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
Traceback (most recent call last):
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 176, in discover_plugins
    module = _load_module_from_path(file_path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ALMCONcutter\cutforge 2.0\plugin_loader.py", line 112, in _load_module_from_path
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\ALMCONcutter\PARSERS\mischanlage_parser.py", line 239, in <module>
    @dataclass
     ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1230, in dataclass
    return wrap(cls)
           ^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1220, in wrap
    return _process_class(cls, init, repr, eq, order, unsafe_hash,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 947, in _process_class
    and _is_type(type, cls, dataclasses, dataclasses.KW_ONLY,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\matus\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 712, in _is_type
    ns = sys.modules.get(cls.__module__).__dict__
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute '__dict__'
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100545_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100545_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100545_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100546_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100546_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100547_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100547_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100547_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
================================================================================
TEST: SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

================================================================================
TEST: SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx
================================================================================
CHYBA: profil 'Mischanlage Montageplan' sa nenasiel v parser_profiles.json

[plugin_loader] Načítaný plugin: 'Mischanlage Montageplan' v1.0 z mischanlage_montageplan_parser.py
[plugin_loader] Modul mischanlage_parser.py sa nedal naimportovať: 'NoneType' object has no attribute '__dict__'

Načítaných pluginov: 1
  • Mischanlage Montageplan v1.0
    Parser pre nemecké Mischanlage / Stahlbau Montageplan súbory (napr. SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx).
    file: C:\ALMCONcutter\PARSERS\mischanlage_montageplan_parser.py

================================================================================
KROK 2: Assembly parser FORMAT_SIGNATURES po importe
================================================================================
Celkom signatures: 7
  🔌 PLUGIN: Mischanlage Montageplan
    bulit-in: advance_steel_exploded
    bulit-in: sws_assembly_part_list
    bulit-in: sws_assembly_list
    bulit-in: material_list_ikon
    bulit-in: kusovnik_sk
    bulit-in: pristresok_czech

================================================================================
KROK 3: Auto-detekcia na test súboroch
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=855
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [mm] gewicht- / oberflächen-korrektur
0 = n / 11 '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
  load_rows: list=Montageplan, rows=489
  find_header: ri=1, header_str[:120]='stlnr. pos. artnr benennung 1 benennung 2 material stk länge [] breite [] gewicht- / oberflächen-korrektur
0 = n / 11 = '
  detect_format: Mischanlage Montageplan (PLUGIN) ✅

================================================================================
KROK 4: Plný load_assembly_source
================================================================================

--- SL6052804-00_Stahlbau_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100548_classic_plugin_SL6052804-00_Stahlbau_Mischanlage_Montageplan.json (748 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 94 zostáv, 748 dielov
  Project: SL6052804-00_Stahlbau_Mischanlage
  Zostav: 94
  raw_parts: 4472
  prvy raw_part: ID=1506, Profil=HEB140, L=150mm, asm=SL6052804-100

--- SL6052805-00_Begehung_Mischanlage_Montageplan.xlsx ---
[parser_debug] classic_plugin dump -> C:\ALMCONcutter\cutforge 2.0\parser_debug\20260505_100548_classic_plugin_SL6052805-00_Begehung_Mischanlage_Montageplan.json (457 riadkov)
[parser] Plugin: Mischanlage Montageplan
[parser] Výsledok: 24 zostáv, 457 dielov
  Project: SL6052805-00_Begehung_Mischanlage
  Zostav: 24
  raw_parts: 1886
  prvy raw_part: ID=2100, Profil=UNP160, L=3617mm, asm=SL6052805-200
