Mul.flatten -- optimize for all-objects-are-commutative case
[sympy.git] / sympy / thirdparty / __init__.py
blob591656c1b9dc485143c17d58b7c863aeca7421e0
1 """Thirdparty Packages for internal use.
2 """
4 import sys
5 import os
7 def import_thirdparty(lib):
8 """
9 Imports a thirdparty package "lib" by setting all paths correctly.
11 At the moment, there is only the "pyglet" library, so we just put
12 pyglet to sys.path temporarily, then import "lib" and then restore the path.
13 With more packages, we'll just put them to sys.path as well.
14 """
16 seen = set()
17 def new_import(name, globals={}, locals={}, fromlist=[]):
18 if name in seen:
19 return old_import(name, globals, locals, fromlist)
20 seen.add(name)
21 sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname( \
22 __file__)), "pyglet"))
23 try:
24 m = old_import(name, globals, locals, fromlist)
25 finally:
26 del sys.path[0]
27 return m
28 import __builtin__
29 old_import = __builtin__.__import__
30 __builtin__.__import__ = new_import
31 try:
32 m = __import__(lib)
33 finally:
34 __builtin__.__import__ = old_import
36 return m