E.g. some modules do
from sympy import log
others do
from sympy.functions.elementary.exponential import exp
Pros of doing just direct imports
---------------------------------
01) Code review can instantly see where some symbol originates from.
02) This should eliminate some circular imports.
Cons
----
11) The import block gets longer.
Neutral aspects
---------------
21) If indirect imports are to be banned from SymPy's codebase as a
matter of code style: This can be checked using an import diagnostics
tool that's mostly done already (I'm working on it, a very old and
outdated prototype can be found in bin/diagnose_imports).
22) Contributors might not want to have to hunt down the origin of every
symbol that they want to import.
The good news is that if they import from some other module than the one
that defines the name, they'll get a message that tells them where to
import from directly.
E.g. this:
--
Error in $SYMPY/sympy/series/tests/test_limits.py line 3: Name 'log'
should be imported from module 'sympy.functions.elementary.exponential'
but is imported from module 'sympy'.
--
23) No doctest checking.
I think this could be made to work, but IMHO doctests are examples how
SymPy users should use it, and they should import from sympy instead of
from the module where the implementation of a name happens to live, so
import diagnostics on doctest code would be a bad idea anyway.
Final question
--------------
Do we want to forbid indirect imports inside the sympy/ directory, as a
matter of code style?
Why I ask this now
------------------
I'm currently testing my import diagnostics tool, and there are so many
indirect imports that they tend to drown out the interesting messages.
If indirect imports are going to go away anyway, I can cut down on them
and commit that even before I do the PR for the tool.
--
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 post to this group, send email to [email protected].
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/54B1AD47.2030100%40durchholz.org.
For more options, visit https://groups.google.com/d/optout.