99from typing import TYPE_CHECKING , final , overload
1010
1111from ..utils import EMPTY_FROZEN_DICT , FrozenDict
12- from .kast import EMPTY_ATT , KAst , KAtt , WithKAtt
12+ from .kast import KAst
1313
1414if TYPE_CHECKING :
1515 from collections .abc import Callable , Iterator
1616 from typing import Any , Final , TypeVar
1717
1818 T = TypeVar ('T' , bound = 'KAst' )
19- W = TypeVar ('W' , bound = 'WithKAtt' )
2019 KI = TypeVar ('KI' , bound = 'KInner' )
2120 A = TypeVar ('A' , bound = 'Any' )
2221 B = TypeVar ('B' , bound = 'Any' )
@@ -249,21 +248,16 @@ def __lt__(self, other: Any) -> bool:
249248 @classmethod
250249 def from_dict (cls : type [KVariable ], d : Mapping [str , Any ]) -> KVariable :
251250 cls ._check_node (d )
252- att = KAtt .from_dict (d ['att' ]) if d .get ('att' ) else EMPTY_ATT
253-
254- sort : KSort | None
255- if KAtt .SORT in att :
256- sort = KSort .from_dict (att [KAtt .SORT ])
257- else :
258- sort = None
259-
251+ sort = None
252+ if 'sort' in d :
253+ sort = KSort .from_dict (d ['sort' ])
260254 return KVariable (name = d ['name' ], sort = sort )
261255
262256 def to_dict (self ) -> dict [str , Any ]:
263- _att = KAtt ({})
257+ _d : dict [ str , Any ] = { 'node' : 'KVariable' , 'name' : self . name }
264258 if self .sort is not None :
265- _att = _att . update ({ KAtt . SORT : self .sort .to_dict ()} )
266- return { 'node' : 'KVariable' , 'name' : self . name , 'att' : _att . to_dict ()}
259+ _d [ 'sort' ] = self .sort .to_dict ()
260+ return _d
267261
268262 def let (self , * , name : str | None = None , sort : str | KSort | None = None ) -> KVariable :
269263 name = name if name is not None else self .name
@@ -456,7 +450,7 @@ def from_dict(cls: type[KAs], d: Mapping[str, Any]) -> KAs:
456450 def to_dict (self ) -> dict [str , Any ]:
457451 return {'node' : 'KAs' , 'pattern' : self .pattern .to_dict (), 'alias' : self .alias .to_dict ()}
458452
459- def let (self , * , pattern : KInner | None = None , alias : KInner | None = None , att : KAtt | None = None ) -> KAs :
453+ def let (self , * , pattern : KInner | None = None , alias : KInner | None = None ) -> KAs :
460454 pattern = pattern if pattern is not None else self .pattern
461455 alias = alias if alias is not None else self .alias
462456 return KAs (pattern = pattern , alias = alias )
@@ -470,14 +464,13 @@ def match(self, term: KInner) -> Subst | None:
470464
471465@final
472466@dataclass (frozen = True )
473- class KRewrite (KInner , WithKAtt ):
467+ class KRewrite (KInner ):
474468 lhs : KInner
475469 rhs : KInner
476470
477- def __init__ (self , lhs : KInner , rhs : KInner , att : KAtt = EMPTY_ATT ):
471+ def __init__ (self , lhs : KInner , rhs : KInner ):
478472 object .__setattr__ (self , 'lhs' , lhs )
479473 object .__setattr__ (self , 'rhs' , rhs )
480- object .__setattr__ (self , 'att' , att )
481474
482475 def __iter__ (self ) -> Iterator [KInner ]:
483476 return iter ([self .lhs , self .rhs ])
@@ -494,31 +487,24 @@ def from_dict(cls: type[KRewrite], d: Mapping[str, Any]) -> KRewrite:
494487 return KRewrite (
495488 lhs = KInner .from_dict (d ['lhs' ]),
496489 rhs = KInner .from_dict (d ['rhs' ]),
497- att = KAtt .from_dict (d ['att' ]) if d .get ('att' ) else EMPTY_ATT ,
498490 )
499491
500492 def to_dict (self ) -> dict [str , Any ]:
501493 return {
502494 'node' : 'KRewrite' ,
503495 'lhs' : self .lhs .to_dict (),
504496 'rhs' : self .rhs .to_dict (),
505- 'att' : self .att .to_dict (),
506497 }
507498
508499 def let (
509500 self ,
510501 * ,
511502 lhs : KInner | None = None ,
512503 rhs : KInner | None = None ,
513- att : KAtt | None = None ,
514504 ) -> KRewrite :
515505 lhs = lhs if lhs is not None else self .lhs
516506 rhs = rhs if rhs is not None else self .rhs
517- att = att if att is not None else self .att
518- return KRewrite (lhs = lhs , rhs = rhs , att = att )
519-
520- def let_att (self , att : KAtt ) -> KRewrite :
521- return self .let (att = att )
507+ return KRewrite (lhs = lhs , rhs = rhs )
522508
523509 def map_inner (self : KRewrite , f : Callable [[KInner ], KInner ]) -> KRewrite :
524510 return self .let (lhs = f (self .lhs ), rhs = f (self .rhs ))
0 commit comments