orthonym.assembly.handlers.ion_dispatch#
Note
Internal API. Names and behaviour may change between releases.
a phase ion_dispatch handler — pre-pool bypass wrapper.
Per internal notes, ion / salt / zwitterion / radical species use a
PRE-POOL bypass at composer.py:751-768. The pre-pool call site STAYS
in composer.py (lines 751-768); only the body of assemble_ion_name
is hosted here as name_ion_dispatch.
This module hosts 4 sub-types in ONE file per internal notes (a single
ion_dispatch HANDLER_POLICIES key spans salt + zwitterion + radical +
ion). All four sub-types share the same body (the inner switch on
features.species_type is preserved verbatim).
IUPAC cites: - / / + / (salts: cation word(s) + anion)
(: corrected 169.6-04 — the old conjunctive-nomenclature cite was wrong)
(zwitterions)
(radicals)
(anions / cations)
Byte-identical contract: the inline pre-pool call site at composer.py:
751-768 stays IDENTICAL — those 4 if species_type... blocks are the
actual control-flow paths in production. The inner-dispatch registration
of ion_dispatch at priority 50 is structurally complete (so future
architectural reviewers see ion_dispatch in the table) but unreachable
in practice because the inline bypass runs FIRST.
References: - composer.py:751-768 (inline pre-pool call site; PRESERVED per internal notes). - composer.py:assemble_ion_name (body STAYS until Plan-03 commit 03-10). - internal notes-DECOMP.md row ‘ion_dispatch’ + purity proof.
- orthonym.assembly.handlers.ion_dispatch.name_ion_dispatch(features, mol=None, style='pin')#
Pre-pool ion / salt / zwitterion / radical naming dispatcher.
Wraps
composer.assemble_ion_nameper internal notes. The inline bypass at composer.py:751-768 is the primary call path; this handler function exists as a callable target so the architecture is uniform across all HANDLER_POLICIES keys.