Thank you for the information.

On 13 November 2011 02:34, Mateusz Paprocki <matt...@gmail.com> wrote:

> Hi,
>
> On 12 November 2011 17:25, krastanov.ste...@gmail.com <
> krastanov.ste...@gmail.com> wrote:
>
>> Can the default printer be changed so lambdarepr(SomeClass(args)) and
>> lambdarepr(SomeClass(args).func) give always the same thing.
>>
>> lambdarepr is using LambdaPrinter. What should be done there (or to a
>> subclass of LambdaPrinter) to ensure the behavior that I desire?
>
>
> So, the difference comes from StrPrinter.emptyPrinter and
> FunctionClass.__repr__. You can override _print_FunctionClass or
> emptyPrinter in LambdaReprPrinter to fix the problem.
>
>
>>
>>
>> On 13 November 2011 02:21, Mateusz Paprocki <matt...@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> On 12 November 2011 17:16, krastanov.ste...@gmail.com <
>>> krastanov.ste...@gmail.com> wrote:
>>>
>>>> Then I suppose I can just call a function that returns a string. Here
>>>> is the problem I have:
>>>>
>>>> In [42]: lambdarepr(Integral(x, (x,0,1)).func)
>>>> Out[42]: <class 'sympy.integrals.integrals.Integral'>
>>>>
>>>> In [43]: lambdarepr(Integral(x, (x,0,1)))
>>>> Out[43]: Integral(x, (x, 0, 1))
>>>>
>>>> Why is out[42] not the same style as out[43]. This causes problems with
>>>> lambdify, so I would be very happy if somebody explains this to me. With
>>>> 'sin' it gives the same style for both inputs:
>>>>
>>>> In [46]: lambdarepr(sin(x).func)
>>>> Out[46]: sin
>>>>
>>>> In [47]: lambdarepr(sin(x))
>>>> Out[47]: sin(x)
>>>>
>>>
>>> Because sin is a Function and Function has a custom printer, which is
>>> not true for Integral, which is just an ordinary type (default printer).
>>>
>>>
>>>>
>>>> Is this difference between function and integral expected?
>>>>
>>>>
>>>>
>>>> On 13 November 2011 02:09, Mateusz Paprocki <matt...@gmail.com> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> On 12 November 2011 17:00, krastanov.ste...@gmail.com <
>>>>> krastanov.ste...@gmail.com> wrote:
>>>>>
>>>>>> Ok, but why are those printed differently (ipython --profile=sympy):
>>>>>>
>>>>>> In [34]: sin(x).func
>>>>>> Out[34]: sympy.functions.elementary.trigonometric.sin
>>>>>>
>>>>>> In [35]: str(sin(x).func)
>>>>>> Out[35]: sin
>>>>>>
>>>>>> In [39]: Integral(x, (x,0,1)).func
>>>>>> Out[39]: sympy.integrals.integrals.Integral
>>>>>>
>>>>>> In [40]: str(Integral(x, (x,0,1)).func)
>>>>>> Out[40]: <class 'sympy.integrals.integrals.Integral'>
>>>>>>
>>>>>> What should I do to have them print in the same manner?
>>>>>
>>>>>
>>>>> This seems to be a problem with IPython's printing hooks. In CPython I
>>>>> get:
>>>>>
>>>>> >>> from sympy import *
>>>>> >>> init_printing()
>>>>> >>> var('x')
>>>>> x
>>>>> >>> sin(x).func
>>>>> sin
>>>>> >>> str(sin(x).func)
>>>>> sin
>>>>> >>> Integral(x, (x, 0, 1)).func
>>>>> <class 'sympy.integrals.integrals.Integral'>
>>>>> >>> str(Integral(x, (x, 0, 1)).func)
>>>>> <class 'sympy.integrals.integrals.Integral'>
>>>>>
>>>>> There reason for different output in IPython is that IPython not
>>>>> always uses SymPy's pretty printer, but sometimes uses its own printing
>>>>> hooks. It's better visible in the notebook where latex output is used 
>>>>> (e.g.
>>>>> try to print data structures).
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> On 13 November 2011 00:42, Aaron Meurer <asmeu...@gmail.com> wrote:
>>>>>>
>>>>>>> Hi.
>>>>>>>
>>>>>>> As far as I know, we don't have a function that does exactly that,
>>>>>>> though I could be wrong.  It would be nice to have one, though.
>>>>>>>
>>>>>>> On Sat, Nov 12, 2011 at 11:01 AM, Alexey U. Gudchenko <
>>>>>>> pr...@goodok.ru> wrote:
>>>>>>> > 12.11.2011 21:42, krastanov.ste...@gmail.com пишет:
>>>>>>> >> This:
>>>>>>> >>
>>>>>>> >> import ast
>>>>>>> >> ast.parse(repr(expression))
>>>>>>>
>>>>>>> If you want a repr() representation, you should instead use srepr().
>>>>>>> (repr() is the same as str()).
>>>>>>>
>>>>>>> >>
>>>>>>> >>  will do the trick if repr is well coded.
>>>>>>>
>>>>>>> str() is coded so that it returns the same thing back from sympify(),
>>>>>>> but it may not give the same thing directly, because you can have
>>>>>>> int/int in an expression.  srepr() should always give the same thing
>>>>>>> back.
>>>>>>>
>>>>>>> >>
>>>>>>> >> How much faith should I put in the repr strings in sympy? Or
>>>>>>> there is
>>>>>>> >> another way?
>>>>>>> >>
>>>>>>> >> On 12 November 2011 18:20, krastanov.ste...@gmail.com <
>>>>>>> >> krastanov.ste...@gmail.com> wrote:
>>>>>>> >>
>>>>>>> >>> Is there any way to get the expression tree from an expression
>>>>>>> (either
>>>>>>> >>> using the python abstract syntax tree module or just some
>>>>>>> tuples):
>>>>>>> >>>
>>>>>>> >>> for example
>>>>>>> >>>
>>>>>>> >>> get_tree( x+y*sin(z) ) would return
>>>>>>> >>>
>>>>>>> >>> (Add, x, (Mul, y, (Sin z)))
>>>>>>> >>>
>>>>>>> >>> or
>>>>>>> >>>
>>>>>>> >>> (BinOp, Add, ((Symbol, x), (BinOp, Mul, (blah blah blah))))
>>>>>>> >>>
>>>>>>> >>
>>>>>>> >
>>>>>>> > I know only how to obtain the childes:
>>>>>>> >
>>>>>>> >>>> e = x+y*sin(z) + z
>>>>>>> >>>> e.args
>>>>>>> > (y*sin(z), z, x)
>>>>>>> >
>>>>>>> >>>> e.args[0]
>>>>>>> >>>> y*sin(z)
>>>>>>> >
>>>>>>> >>>> e.args[0].args
>>>>>>> > (y, sin(z))
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > And test the classes:
>>>>>>> >
>>>>>>> >>>> e.is_Add
>>>>>>> > True
>>>>>>> >
>>>>>>>
>>>>>>> You can get the class name by using .func:
>>>>>>>
>>>>>>> In [25]: e = x + y
>>>>>>>
>>>>>>> In [26]: e.func
>>>>>>> Out[26]: sympy.core.add.Add
>>>>>>>
>>>>>>> In [27]: e.func(*e.args)
>>>>>>> Out[27]: x + y
>>>>>>>
>>>>>>> The invariant in [27] should always hold (except for possibly some
>>>>>>> differences in assumptions).
>>>>>>>
>>>>>>> Aaron Meurer
>>>>>>>
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > In other words, the somewhat tree of the expressions exists.
>>>>>>> >
>>>>>>> > How to represent expression-tree in other formats (strings or
>>>>>>> > structures), I do not know.
>>>>>>> >
>>>>>>> > Regards.
>>>>>>> >
>>>>>>> > --
>>>>>>> > Alexey U.
>>>>>>> >
>>>>>>> > --
>>>>>>> > You received this message because you are subscribed to the Google
>>>>>>> Groups "sympy" group.
>>>>>>> > To post to this group, send email to sympy@googlegroups.com.
>>>>>>> > To unsubscribe from this group, send email to
>>>>>>> sympy+unsubscr...@googlegroups.com.
>>>>>>> > For more options, visit this group at
>>>>>>> http://groups.google.com/group/sympy?hl=en.
>>>>>>> >
>>>>>>> >
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "sympy" group.
>>>>>>> To post to this group, send email to sympy@googlegroups.com.
>>>>>>> To unsubscribe from this group, send email to
>>>>>>> sympy+unsubscr...@googlegroups.com.
>>>>>>> For more options, visit this group at
>>>>>>> http://groups.google.com/group/sympy?hl=en.
>>>>>>>
>>>>>>>
>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "sympy" group.
>>>>>> To post to this group, send email to sympy@googlegroups.com.
>>>>>> To unsubscribe from this group, send email to
>>>>>> sympy+unsubscr...@googlegroups.com.
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/sympy?hl=en.
>>>>>>
>>>>>
>>>>> Mateusz
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "sympy" group.
>>>>> To post to this group, send email to sympy@googlegroups.com.
>>>>> To unsubscribe from this group, send email to
>>>>> sympy+unsubscr...@googlegroups.com.
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/sympy?hl=en.
>>>>>
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "sympy" group.
>>>> To post to this group, send email to sympy@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> sympy+unsubscr...@googlegroups.com.
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/sympy?hl=en.
>>>>
>>>
>>> Mateusz
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "sympy" group.
>>> To post to this group, send email to sympy@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> sympy+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/sympy?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To post to this group, send email to sympy@googlegroups.com.
>> To unsubscribe from this group, send email to
>> sympy+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/sympy?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to sympy@googlegroups.com.
> To unsubscribe from this group, send email to
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to