Go ahead and open a pull request with this change, and we can review it, and see if it breaks any tests, and so on.
Aaron Meurer On Fri, Oct 24, 2014 at 7:55 AM, Duane Nykamp <dqnyk...@comcast.net> wrote: > The following throws an error > > In [27]: f=Function('f') > > In [28]: parse_expr('af(t)', local_dict={'f': f }, > transformations=(auto_symbol, auto_number, split_symbols, > implicit_multiplication)) > --------------------------------------------------------------------------- > TypeError Traceback (most recent call last) > > [snip] > > TypeError: unbound method as_base_exp() must be called with f instance as > first argument (got nothing instead) > > > The code it is trying to evaluate is > > Symbol ('a' )*(f )*(Symbol ('t' )) > > It seems the problem is the parentheses around f that were inserted in line > 394: > result.extend([(OP, '('), (NAME, "%s" % char), > (OP, ')'), > (NAME, 'Symbol'), (OP, '(')]) > > Is there any reason to add those parenthesis? Certainly, if char is a > function, they should not be added. I'm not sure if there are cases where > one does need those parenthesis. > > I can fix the problem by changing this line to > result.extend([(NAME, "%s" % char), > (NAME, 'Symbol'), (OP, '(')]) > but I'm not sure if I should test if local_dict[char] or global_dict[char] > is callable (similar to _get_token_callable) and only remove the parenthesis > if it is callable. > > For this to work, I also have to modify the approach to remove the last 2 > tokens (rather than 3) and then skip the following token so that the close > parenthesis from the original Symbol is not included. > > Does this fix seem reasonable? > > Duane > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at http://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/5a8ffc92-3be1-4c60-aa0e-0765b20048f3%40googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2ByGzwofJ7iBtvwWuShDaVtCdf62HaZA8mxMYV6Z1gj7Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.