(self, name: str)
| 1720 | raise ValueError(msg) # pragma: no cover |
| 1721 | |
| 1722 | def _getini(self, name: str): |
| 1723 | # If this is an alias, resolve to canonical name. |
| 1724 | canonical_name = self._parser._ini_aliases.get(name, name) |
| 1725 | |
| 1726 | try: |
| 1727 | _description, type, default = self._parser._inidict[canonical_name] |
| 1728 | except KeyError as e: |
| 1729 | raise ValueError(f"unknown configuration value: {name!r}") from e |
| 1730 | |
| 1731 | # Collect all possible values (canonical name + aliases) from _inicfg. |
| 1732 | # Each candidate is (ConfigValue, is_canonical). |
| 1733 | candidates = [] |
| 1734 | if canonical_name in self._inicfg: |
| 1735 | candidates.append((self._inicfg[canonical_name], True)) |
| 1736 | for alias, target in self._parser._ini_aliases.items(): |
| 1737 | if target == canonical_name and alias in self._inicfg: |
| 1738 | candidates.append((self._inicfg[alias], False)) |
| 1739 | |
| 1740 | if not candidates: |
| 1741 | return default |
| 1742 | |
| 1743 | # Pick the best candidate based on precedence: |
| 1744 | # 1. CLI override takes precedence over file, then |
| 1745 | # 2. Canonical name takes precedence over alias. |
| 1746 | selected = max(candidates, key=lambda x: (x[0].origin == "override", x[1]))[0] |
| 1747 | value = selected.value |
| 1748 | mode = selected.mode |
| 1749 | |
| 1750 | if mode == "ini": |
| 1751 | # In ini mode, values are always str | list[str]. |
| 1752 | assert isinstance(value, (str, list)) |
| 1753 | return self._getini_ini(name, canonical_name, type, value, default) |
| 1754 | elif mode == "toml": |
| 1755 | return self._getini_toml(name, canonical_name, type, value, default) |
| 1756 | else: |
| 1757 | assert_never(mode) |
| 1758 | |
| 1759 | def _getini_ini( |
| 1760 | self, |
no test coverage detected