From 904f62584c252218984537e03d9386bdc6409bdb Mon Sep 17 00:00:00 2001 From: "Henri J. Norden" <55378880+Henri-J-Norden@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:24:06 +0200 Subject: [PATCH] Use Mapping (covariant) for subgroups overloads, instead of dict (invariant) --- simple_parsing/helpers/subgroups.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/simple_parsing/helpers/subgroups.py b/simple_parsing/helpers/subgroups.py index 8b16794c..7cf9ec66 100644 --- a/simple_parsing/helpers/subgroups.py +++ b/simple_parsing/helpers/subgroups.py @@ -3,6 +3,7 @@ import functools import inspect import typing +from collections.abc import Mapping from dataclasses import _MISSING_TYPE, MISSING from enum import Enum from logging import getLogger as get_logger @@ -21,7 +22,7 @@ @overload def subgroups( - subgroups: dict[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], + subgroups: Mapping[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], *args, default: Key | DataclassT, default_factory: _MISSING_TYPE = MISSING, @@ -32,7 +33,7 @@ def subgroups( @overload def subgroups( - subgroups: dict[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], + subgroups: Mapping[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], *args, default: _MISSING_TYPE = MISSING, default_factory: type[DataclassT] | functools.partial[DataclassT], @@ -43,7 +44,7 @@ def subgroups( @overload def subgroups( - subgroups: dict[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], + subgroups: Mapping[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], *args, default: _MISSING_TYPE = MISSING, default_factory: _MISSING_TYPE = MISSING, @@ -53,7 +54,7 @@ def subgroups( def subgroups( - subgroups: dict[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], + subgroups: Mapping[Key, DataclassT | type[DataclassT] | functools.partial[DataclassT]], *args, default: Key | DataclassT | _MISSING_TYPE = MISSING, default_factory: type[DataclassT] | functools.partial[DataclassT] | _MISSING_TYPE = MISSING,