1010import attrs
1111import qrules
1212from qrules .quantum_numbers import InteractionProperties
13- from qrules .topology import EdgeType , FrozenTransition , NodeType
14- from qrules .transition import ReactionInfo , StateTransition , Topology
13+ from qrules .topology import (
14+ EdgeType ,
15+ FrozenTransition ,
16+ MutableTransition ,
17+ NodeType ,
18+ Transition ,
19+ )
20+ from qrules .transition import ProblemSet , ReactionInfo , Topology
1521
1622from ampform_dpd .decay import (
1723 FinalStateID ,
@@ -240,15 +246,28 @@ def _(obj: ReactionInfo) -> ReactionInfo:
240246 )
241247
242248
243- @_impl_normalize_state_ids .register (FrozenTransition ) # type:ignore[attr-defined]
244- def _ (obj : StateTransition ) -> StateTransition :
249+ _Transition = TypeVar ("_Transition" , FrozenTransition , MutableTransition )
250+
251+
252+ @_impl_normalize_state_ids .register (FrozenTransition )
253+ @_impl_normalize_state_ids .register (MutableTransition )
254+ def _ (obj : _Transition ) -> _Transition :
245255 return attrs .evolve (
246256 obj ,
247257 topology = _impl_normalize_state_ids (obj .topology ),
248258 states = {new : obj .states [old ] for new , old in enumerate (sorted (obj .states ))},
249259 )
250260
251261
262+ @_impl_normalize_state_ids .register (ProblemSet )
263+ def _ (obj : ProblemSet ) -> ProblemSet :
264+ return ProblemSet (
265+ initial_facts = _impl_normalize_state_ids (obj .initial_facts ),
266+ solving_settings = _impl_normalize_state_ids (obj .solving_settings ),
267+ topology = _impl_normalize_state_ids (obj .topology ),
268+ )
269+
270+
252271@_impl_normalize_state_ids .register (Topology ) # type:ignore[attr-defined]
253272def _ (obj : Topology ) -> Topology :
254273 mapping = {old : new for new , old in enumerate (sorted (obj .edges ))}
@@ -260,7 +279,15 @@ def _(obj: abc.Iterable[T]) -> list[T]:
260279 return [_impl_normalize_state_ids (x ) for x in obj ]
261280
262281
263- T = TypeVar ("T" , ReactionInfo , StateTransition , Topology )
282+ T = TypeVar (
283+ "T" ,
284+ FrozenTransition ,
285+ MutableTransition ,
286+ ProblemSet ,
287+ ReactionInfo ,
288+ Topology ,
289+ Transition ,
290+ )
264291"""Type variable for the input and output of :func:`normalize_state_ids`."""
265292
266293
0 commit comments