How difficult would it be to provide a model like Maple, where the common functions are imported by default, but if you want more advanced things you have to import the module? The difficulty, the common functions and more advanced ones might be in the same file. So, for example, you might want to import dsolve() by default, but not classify_ode() (similar to how dsolve() is imported by default in Maple, but to use odeadvisor(), you have to do with(DETools)), but both live in ode.py. Does Python make it easy to do this sort of thing, or at least has someone written something that makes it easy to do?
Or another idea would be to just import ode (the module) into the namespace, and then you just use ode.classify_ode(), or from ode import classify_ode if you are going to use it a lot. Or does this take just as much time as importing into the global namespace in the first place? Also, I have heard that it might be possible to do lazy importing, so for example, you don't actually import all the internal functions in ode.py until someone calls dsolve(). You should be able to do some magic using __import__() in either case, right? Can we do more advanced benchmarks to see which modules are slowing the import time down the most? Aaron Meurer On Thu, Nov 11, 2010 at 1:08 PM, Ondrej Certik <ond...@certik.cz> wrote: > On Thu, Nov 11, 2010 at 11:59 AM, Ronan Lamy <ronan.l...@gmail.com> wrote: >> Hi all, >> >> Running 'python bin/sympy_time.py', I realised that importing sympy >> pulls in a lot of stuff that are irrelevant to an end user, like pdb, >> doctest or py.test. Fixing this simply requires removing the imports of >> runtests and pytest from sympy/utilities/__init.py and importing those >> modules explicitly where they are required. > > This should be done. > >> >> More generally, I've often been annoyed by the fact that it's impossible >> to import only part of sympy and by the sheer amount of bloat in the >> sympy namespace (len(dir(sympy)) == 497), so I'd rather like that we >> start exercising some restraint in what we put in the "__init__.py"s. > > Yes, definitely. > >> >> What do you think? > > I think that the main "sympy" module should provide some reasonable > set of tools, right away. Maybe we can remove some things from the > global namespace into modules. > > For specialized things, one should import things explicitly. For > example the physics quantum code needs to be imported from > sympy.physics.hydrogen and so on. > > Ondrej > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To post to this group, send email to sy...@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 sy...@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.