From dc9c9375516da7f0393ad46b1d5714493c157856 Mon Sep 17 00:00:00 2001 From: exwm Date: Fri, 11 Aug 2023 20:43:25 -0400 Subject: [PATCH] fix(clipper): fix ValueError exception with python>=3.11 from ClipperState dataclass decorator * use default factory functions for mutable ClipperState dataclass fields * dataclass() decorator will raise a ValueError if it detects an unhashable default parameter (assumes unhashable => mutable) * Using default factory functions is a way to create new instances of mutable types as default values for fields: --- src/clipper/clipper_types.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/clipper/clipper_types.py b/src/clipper/clipper_types.py index 4188932..98aa9cf 100644 --- a/src/clipper/clipper_types.py +++ b/src/clipper/clipper_types.py @@ -30,9 +30,9 @@ class ClipperState: """Central state for yt_clipper functions.""" settings: Settings = field(default_factory=dict) - clipper_paths: ClipperPaths = ClipperPaths() - reportStream = io.StringIO() - reportStreamColored = io.StringIO() + clipper_paths: ClipperPaths = field(default_factory=ClipperPaths) + reportStream: io.StringIO = field(default_factory=io.StringIO) + reportStreamColored: io.StringIO = field(default_factory=io.StringIO) class MissingMergeInput(Exception):