orthonym.assembly.handlers.amine#
Note
Internal API. Names and behaviour may change between releases.
a phase amine handler — Tier-2 mid-tier direct-return (fast-path).
Verbatim lift of composer.py:1374-1386 (inline dispatch branch). Body
_assemble_amine_name at composer.py:4296-4536 (241 LOC) STAYS until
Plan-03 commit 03-10 (composer.py thinning) per internal notes.
Predicate gates on:
1. principal_group in {secondary_amine, tertiary_amine} (primary_amine
is handled by the general suffix path)
not is_polyfunctional(mutex with polyfunctional inline branch at composer.py:870)not is_cyclic OR chain_is_parent(Tier-A mutex — same pattern as partial_sat handler in Plan-02 commit 02-24)
Byte-identical contract per internal notes (DECOMP-03): predicate gates capture the inline cascade-order semantics so dispatch_inner reaches this handler only when the inline amine branch at composer.py:1374 would have fired.
IUPAC cite: (amines).
References: - composer.py:1374-1386 (inline dispatch branch; RETAINED as Tier-A-rejection
fallback; Plan-03 commit 03-10 consolidates).
composer.py:870-888 (polyfunctional inline branch — runs BEFORE amine).
composer.py:4296-4536 (
_assemble_amine_namebody; STAYS until 03-10).handlers/amide.py (sibling handler with same mutex pattern).
internal notes-DECOMP.md row ‘amine’ + Tier-2 row.
- orthonym.assembly.handlers.amine.name_amine(features, mol=None, style='pin')#
Direct-return amine handler (fast-path).
Verbatim semantics of composer.py:1374-1386. Returns
NamingResult(name=best.name, tree=best.tree, atom_to_locant_hint=None)afterpool.add(name, 'amine', features, tree=...)(a phase SCORE-01: counted coarse node, parity-safe via fragment_legacy). Returns None if_assemble_amine_namereturns falsy (per inline guard at composer.py:1375).