33from abc import ABC , abstractmethod
44from types import MappingProxyType
55from collections import OrderedDict
6+ from collections .abc import Mapping
67
78from unification import unify , reify , Var
8- from unification .core import _unify , _reify
9+ from unification .core import _reify
910
1011
1112class KanrenConstraintStore (ABC ):
@@ -120,14 +121,6 @@ def unify_KanrenState(u, v, S):
120121
121122
122123unify .add ((object , object , KanrenState ), unify_KanrenState )
123- unify .add (
124- (object , object , MappingProxyType ),
125- lambda u , v , d : unify .dispatch (type (u ), type (v ), dict )(u , v , d ),
126- )
127- _unify .add (
128- (object , object , MappingProxyType ),
129- lambda u , v , d : _unify .dispatch (type (u ), type (v ), dict )(u , v , d ),
130- )
131124
132125
133126class ConstrainedVar (Var ):
@@ -137,13 +130,11 @@ class ConstrainedVar(Var):
137130
138131 """
139132
140- __slots__ = ("_id" , "token" , " S" , "var" )
133+ __slots__ = ("S" , "var" )
141134
142- def __new__ (cls , var , S ):
143- obj = super ().__new__ (cls , var .token )
144- obj .S = weakref .ref (S )
145- obj .var = weakref .ref (var )
146- return obj
135+ def __init__ (self , var , S ):
136+ self .S = weakref .ref (S )
137+ self .var = weakref .ref (var )
147138
148139 def __repr__ (self ):
149140 var = self .var ()
@@ -161,8 +152,10 @@ def reify_KanrenState(u, S):
161152 return u_res
162153
163154
164- _reify .add ((tuple (p [0 ] for p in _reify .ordering if p [1 ] == dict ), KanrenState ), reify_KanrenState )
165- _reify .add ((object , MappingProxyType ), lambda u , s : _reify .dispatch (type (u ), dict )(u , s ))
155+ _reify .add (
156+ (tuple (p [0 ] for p in _reify .ordering if issubclass (p [1 ], Mapping )), KanrenState ),
157+ reify_KanrenState ,
158+ )
166159
167160
168161def neq (u , v ):
0 commit comments