From 27d855b12e6e3309fbb6c30e018d33830ec8d866 Mon Sep 17 00:00:00 2001 From: The etils Authors Date: Tue, 6 Oct 2026 03:20:02 -0700 Subject: [PATCH] eapp: type make_flags_parser's `cls` as `type[T]`. The dataclass class (not an instance) is passed, so the returned parser should be typed as returning `T` rather than `type[T]`. This lets the documented `app.run(main, flags_parser=eapp.make_flags_parser(Args))` pattern type-check. PiperOrigin-RevId: 994280212 --- CHANGELOG.md | 4 ++++ etils/eapp/dataclass_flags.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b5c997d..c8a26e00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ Changelog follow https://keepachangelog.com/ format. * [Fix] `edc.ContextVar`: `default_factory` is now lazily resolved per-context, so each thread / coroutine gets its own independent default value. +* `eapp`: + * [Fix] `eapp.make_flags_parser`: annotate `cls` as `type[T]` so the + returned parser is typed as returning `T`, and + `app.run(main, flags_parser=...)` type-checks without suppressions. ## [1.14.0] - 2026-03-04 diff --git a/etils/eapp/dataclass_flags.py b/etils/eapp/dataclass_flags.py index 1b226e43..3bd2d6cb 100644 --- a/etils/eapp/dataclass_flags.py +++ b/etils/eapp/dataclass_flags.py @@ -34,7 +34,7 @@ def make_flags_parser( - cls: _DataclassT, + cls: type[_DataclassT], *, prog: Optional[str] = None, description: Optional[str] = None,