orthonym.assembly.handlers.polycyclic#

Note

Internal API. Names and behaviour may change between releases.

a phase polycyclic handler — direct-return shim (LIFT body alongside).

Verbatim move of composer.py:1100-1114 dispatch logic. Wraps the inline _assemble_polycyclic_name(features, style) call + pool.add + pool.best.name return.

Per internal notes incremental migration: the underlying _assemble_polycyclic_name body STAYS in composer.py during Plan-02 and moves to this module in Plan-03 commit 03-10 (composer.py thinning).

IUPAC cite: (polycyclic aromatics + retained names).

Byte-identical contract: this handler fires only when polycyclic_name is set AND complex_ring would NOT take the dispatch — encoded as not _is_complex_ring_system(features.mol) in the predicate to preserve the inline gate not _complex_ring_accepted semantics. The cases where complex_ring fires-and-rejects (low ratio in V17 mode) still fall through to the inline fallback path further down composer.py.

References: - composer.py:1100-1114 (inline polycyclic branch; REMOVED at this commit). - composer.py:_assemble_polycyclic_name (STAYS until 03-10). - composer.py:_is_complex_ring_system (mutex helper for the predicate). - internal notes-DECOMP.md row ‘polycyclic’ + purity proof.

orthonym.assembly.handlers.polycyclic.name_polycyclic(features, mol=None, style='pin')#

Direct-return polycyclic handler — wraps _assemble_polycyclic_name.