jamtur01's picture
Upload folder using huggingface_hub
9c6594c verified
from sympy import S, Basic, Set, ordered, sympify
from sympy.sets import FiniteSet as SympyFiniteSet
from sympy.core.parameters import global_parameters
class FiniteSet(SympyFiniteSet):
"""
FiniteSet which keeps the _unsorted_args attribute, only available till the first evaluation
"""
def __new__(cls, *args, **kwargs):
evaluate = kwargs.get('evaluate', global_parameters.evaluate)
if evaluate:
args = list(map(sympify, args))
if len(args) == 0:
return S.EmptySet
else:
args = list(map(sympify, args))
unsorted_args = args
# keep the form of the first canonical arg
dargs = {}
for i in reversed(list(ordered(args))):
if i.is_Symbol:
dargs[i] = i
else:
try:
dargs[i.as_dummy()] = i
except TypeError:
# e.g. i = class without args like `Interval`
dargs[i] = i
_args_set = set(dargs.values())
args = list(ordered(_args_set, Set._infimum_key))
obj = Basic.__new__(cls, *args)
obj._args_set = _args_set
obj._unsorted_args = unsorted_args
return obj