Listing 5. Detecting and Installing Mix-ins Named after Their Classes
from MixIn import MixIn
from glob import glob
import os
def MixInDir(dir):
''' Installs mix-ins found in the given directory.
Each mix-in is expected to match the name
of a class in our domain classes. '''
path = os.path.join(basePath, '*.py')
for filename in glob(path):
dirname, name = os.path.split(filename)
name = os.path.splitext(name)[0]
# Get the real class
module = __import__(name)
pyClass = getattr(module, name)
# Get the mix-in class
results = {}
exec open(filename) in results
mixInClass = results[name]
# Mix it in
MixIn(pyClass, mixInClass)