From f814d6c720dced91c99b3f970a3454e0928f9424 Mon Sep 17 00:00:00 2001
From: Paul Andrey <paul.andrey@inria.fr>
Date: Mon, 12 Dec 2022 11:18:10 +0100
Subject: [PATCH] Use `dataclass_from_init` to implement `EarlyStopConfig`.

---
 declearn/main/utils/__init__.py    | 2 +-
 declearn/main/utils/_early_stop.py | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/declearn/main/utils/__init__.py b/declearn/main/utils/__init__.py
index 55267c31..b779241e 100644
--- a/declearn/main/utils/__init__.py
+++ b/declearn/main/utils/__init__.py
@@ -6,4 +6,4 @@ from ._checkpoint import Checkpointer
 from ._constraints import Constraint, ConstraintSet, TimeoutConstraint
 from ._data_info import AggregationError, aggregate_clients_data_info
 from ._dataclasses import EvaluateConfig, RegisterConfig, TrainingConfig
-from ._early_stop import EarlyStopping
+from ._early_stop import EarlyStopping, EarlyStopConfig
diff --git a/declearn/main/utils/_early_stop.py b/declearn/main/utils/_early_stop.py
index 32e049f2..86c15346 100644
--- a/declearn/main/utils/_early_stop.py
+++ b/declearn/main/utils/_early_stop.py
@@ -5,8 +5,12 @@
 from typing import Optional
 
 
+from declearn.utils import dataclass_from_init
+
+
 __all__ = [
     "EarlyStopping",
+    "EarlyStopConfig",
 ]
 
 
@@ -91,3 +95,6 @@ class EarlyStopping:
         else:
             self._n_iter_stuck = 0
         return self.keep_training
+
+
+EarlyStopConfig = dataclass_from_init(EarlyStopping, name="EarlyStopConfig")
-- 
GitLab