I don't know...do we have a way to test every Basic? I know we have a
test_args suite; perhaps we need to add a test that all Basics can do
whatever you're concerned about. Is it "rebuild from args" or "accept
evaluate=False" that you have in mind? I could make it "if isinstance(expr,
Expr) and hasattr(expr, 'args') if expr.__class__ != cls;"


On Tue, Apr 16, 2013 at 7:57 PM, Aaron Meurer <notifications@github.com>wrote:

> In sympy/core/expr.py:
>
> >              if newexpr != expr:
> >                  return (newexpr, True)
> > +        else:
> > +            # see if an unevaluated form is changed
> > +            if expr.__class__ != cls:
> > +                u = cls(*sargs, **dict(evaluate=False))
>
> Does this work for every Basic?
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/sympy/sympy/pull/1967/files#r3812437>
> .
>