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)

  1. not is_polyfunctional (mutex with polyfunctional inline branch at composer.py:870)

  2. 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_name body; 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) after pool.add(name, 'amine', features, tree=...) (a phase SCORE-01: counted coarse node, parity-safe via fragment_legacy). Returns None if _assemble_amine_name returns falsy (per inline guard at composer.py:1375).