Not sure at all why you say so. Adding extra output to the function is excess baggage in my opinion. Indeed free_symbols is a great idea from the sympy developers. I understand why technically one wants to give it as a set, because after all the names are truly meant to be unique. What we need here is just a more transparent conversion to lost or a block for when set are fed to lambdify.
I am not very much expert with pull requests but I am working on one. I just need to figure how to import my forked version of dumpy instead of the one from pip. After that I can test my proposed change of lambdify. On Fri, Jul 10, 2020, 18:47 Oscar Benjamin <[email protected]> wrote: > Hi Roberto, > > If you have something like > expr = some_function(args) > where some_function creates new symbols (not found in args) then > ideally some_function should also return what the newly created > symbols are or some other object that can tell you them: > expr, syms = some_function(args) > I think that attempting to guess what symbols should be used in any > context by inspecting free symbols is not a good approach. > > Oscar > > On Fri, 10 Jul 2020 at 14:28, roberto franceschini > <[email protected]> wrote: > > > > The situation is the one in which I get a sympy expression out of a > function that ends in `return my_polynomial_inRn` and now I want to pass > this to another function (e.g. to make plots or whatever) without having to > know the names of the symbols involved, which is exactly what free_symbols > does for me in this instance. > > Do you see another way around this? > > > > > > On Fri, Jul 10, 2020 at 11:08 AM Oscar Benjamin < > [email protected]> wrote: > >> > >> Hi Roberto, > >> > >> I already answered this on SO: > >> > https://stackoverflow.com/questions/62798213/keep-the-order-of-parameters-fixed-in-sympy-lambdify-from-free-symbols/62800716?noredirect=1#comment111075099_62800716 > >> > >> If you are using symarray to generate the symbols then you can get the > >> list of symbols from the symarray directly and then pass those to > >> lambdify. > >> > >> I can't think of any situation where it would be a good idea to use > >> free_symbols to get the arguments to lambdify. > >> > >> Oscar > >> > >> On Fri, 10 Jul 2020 at 08:10, roberto franceschini > >> <[email protected]> wrote: > >> > > >> > Hello, I have opened an issue for the input of lambdify. If you want > to disallow sets as inputs I think it is fair. However, It would be nice to > have that free_symbol can be given directly as input for lambdify, is that > possible? should I use something else than free_symbols for this purpose? > >> > > >> > On Thu, Jul 9, 2020 at 9:55 PM Aaron Meurer <[email protected]> > wrote: > >> >> > >> >> Can you open an issue in the issue tracker for this? I agree that > sets > >> >> should not be allowed. > >> >> > >> >> Aaron Meurer > >> >> > >> >> On Thu, Jul 9, 2020 at 3:08 AM Roberto < > [email protected]> wrote: > >> >> > > >> >> > I have seen that lambdify wants a list for the arguments to be > treated as symbols. This list can be also give as a python set, e.g. {x,y,z > }, which is exactly what would be returned by a .free_symbol property. If > lambdify is feed a set like that of the output of .free_symbol it may > change their order in the conversion from set to list. This is done > silently and may cause major disfunction in the use of the lamdified > function because you think x is x, but is y instead and so on. > >> >> > I would like to ask developers to check for the type of the > lambdify list of arguments and throw a warning to flag that a set is being > converted and that the ordering is not guaranteed. > >> >> > Given that .free_symbols returns a set, not a list, this is very > common pitfall in my opinion and must be prevented. > >> >> > > >> >> > -- > >> >> > 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 [email protected]. > >> >> > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/c1517b79-490b-4a1b-b526-3e3842b55fbco%40googlegroups.com > . > >> >> > >> >> -- > >> >> 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 [email protected]. > >> >> To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAKgW%3D6KuqnjJHTObyDxK0tvaF_Frxzd-MfyQSY94v-oTUWyNAg%40mail.gmail.com > . > >> > > >> > -- > >> > 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 [email protected]. > >> > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAJxM9JqSoqQQkYH9UUXGyXNqRtY9VHJxKByc8Fv8%2BPaqFudP6w%40mail.gmail.com > . > >> > >> -- > >> 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 [email protected]. > >> To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAHVvXxSsngVE_X-aBRYWER5sESZW-e-EnjwWcfGAhM%3D%2Beq97zQ%40mail.gmail.com > . > > > > -- > > 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 [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAJxM9Jpza%3DgRk9%3DZ2_thBS4xN_dkjCaB5PTMcz1hj8wHG_R90g%40mail.gmail.com > . > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/CAHVvXxQCPtBmmcjoVKv0jqYFqezsUQ5zWox_Q16x72ygng37Xg%40mail.gmail.com > . > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAJxM9JpTq2piXO3FxWAG2TO4xq2yCWRfRyQWDex18OcMiNFnrw%40mail.gmail.com.
