From fc2bffd1e9fd7f70b82c76e0f1ee0f14517de3ad Mon Sep 17 00:00:00 2001 From: Muhamed Fazal PS Date: Wed, 15 Jul 2026 19:55:01 +0530 Subject: [PATCH] fix: defer help_formatter to prevent eager getter in Python 3.14+ (#1641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Python 3.14 calls _check_help during argument registration, which triggers LazyChoices.help getter → load() → getter() eagerly. Deferring help_formatter assignment until after super().__init__() prevents this premature call. --- httpie/cli/utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/httpie/cli/utils.py b/httpie/cli/utils.py index ad27da37f7..351cea5bd3 100644 --- a/httpie/cli/utils.py +++ b/httpie/cli/utils.py @@ -37,13 +37,18 @@ def __init__( **kwargs ) -> None: self.getter = getter - self.help_formatter = help_formatter self.sort = sort self.cache = cache self.isolation_mode = isolation_mode self._help: Optional[str] = None self._obj: Optional[Iterable[T]] = None + # Defer setting help_formatter until after super().__init__() + # to prevent argparse._check_help (Python 3.14+) from triggering + # the lazy getter during argument registration. + deferred_formatter = help_formatter + self.help_formatter = None super().__init__(*args, **kwargs) + self.help_formatter = deferred_formatter self.choices = self def load(self) -> T: