@@ -386,14 +386,24 @@ def _filter_assumptions(cls, **kwargs):
386386
387387 return assumptions , kwargs
388388
389+ @staticmethod
390+ def __xnew__ (cls , name , ** assumptions ):
391+ # Create the new Symbol
392+ # Note: use __xnew__ to bypass sympy caching
393+ newobj = sympy .Symbol .__xnew__ (cls , name , ** assumptions )
394+
395+ assumptions = newobj ._assumptions .copy ()
396+ for key in ('real' , 'imaginary' , 'complex' ):
397+ assumptions .pop (key , None )
398+ newobj ._assumptions = assumptions
399+
400+ return newobj
401+
389402 def __new__ (cls , * args , ** kwargs ):
390403 name = kwargs .get ('name' ) or args [0 ]
391404 assumptions , kwargs = cls ._filter_assumptions (** kwargs )
392405
393- # Create the new Symbol
394- # Note: use __xnew__ to bypass sympy caching
395- newobj = sympy .Symbol .__xnew__ (cls , name , ** assumptions )
396- newobj ._assumptions = cls .default_assumptions
406+ newobj = cls .__xnew__ (cls , name , ** assumptions )
397407
398408 # Initialization
399409 newobj ._dtype = cls .__dtype_setup__ (** kwargs )
@@ -557,10 +567,7 @@ def __new__(cls, *args, **kwargs):
557567 # Not in cache. Create a new Symbol via sympy.Symbol
558568 args = list (args )
559569 name = kwargs .pop ('name' , None ) or args .pop (0 )
560-
561- # Note: use __xnew__ to bypass sympy caching
562- newobj = sympy .Symbol .__xnew__ (cls , name , ** assumptions )
563- newobj ._assumptions = cls .default_assumptions
570+ newobj = cls .__xnew__ (cls , name , ** assumptions )
564571
565572 # Initialization
566573 newobj ._dtype = cls .__dtype_setup__ (** kwargs )
0 commit comments