1"""Standard hardware the injector plate has to accommodate, with where each number came from.
3Every row is a published standard, not a design choice. The ``source`` strings travel with the
4numbers into the layout, so a warning that cites a thread length can say whose thread length.
7from __future__
import annotations
9from typing
import Dict, NamedTuple
23_NPT_SRC =
"ASME B1.20.1 (as tabulated in Wikipedia 'National pipe thread', checked 2026-09-25)"
26NPT: Dict[str, NptThread] = {
27 "1/8 NPT":
NptThread(27, 0.405 * IN, 0.1615 * IN, 0.2639 * IN, 0.339 * IN, _NPT_SRC),
28 "1/4 NPT":
NptThread(18, 0.540 * IN, 0.2278 * IN, 0.4018 * IN, (7 / 16) * IN, _NPT_SRC),
29 "3/8 NPT":
NptThread(18, 0.675 * IN, 0.2400 * IN, 0.4078 * IN, (37 / 64) * IN, _NPT_SRC),
30 "1/2 NPT":
NptThread(14, 0.840 * IN, 0.3200 * IN, 0.5337 * IN, (23 / 32) * IN, _NPT_SRC),
31 "3/4 NPT":
NptThread(14, 1.050 * IN, 0.3390 * IN, 0.5457 * IN, (59 / 64) * IN, _NPT_SRC),