Exemplo n.º 1
0
	def import_module( self, partnam, fqname, parent ):
		depth = self._depth
		if depth is None or len( self._callerStack ) <= depth:
			r = ModuleFinder.import_module( self, partnam, fqname, parent )
			if r is not None:
				self._depNode.addDepedency( self._callerStack +[ r.__file__ ] )

			return r
Exemplo n.º 2
0
def packModule(name):
    importOrder = []


    importOrder = []
    finder = ModuleFinder()
    old_addModule = finder.add_module
    def addModule(fqname):
        if fqname.startswith(name):
            #print fqname
            if fqname not in importOrder:
                importOrder.append(fqname)
        return old_addModule(fqname)
    finder.add_module = addModule
    finder.import_module(name, name, None)

    # hack for yaml
    importOrder = [
        'yaml',
        'yaml.error',
        'yaml.tokens',
        'yaml.events',
        'yaml.nodes',
        'yaml.reader',
        'yaml.scanner',
        'yaml.composer',
        'yaml.constructor',
        'yaml.resolver',
        'yaml.parser',
        'yaml.loader',
        'yaml.emitter',
        'yaml.serializer',
        'yaml.representer',
        'yaml.dumper',
    ]

    global template
    template += '{0}=types.ModuleType("{0}","None");'.format(name)
    template += '{}.__dict__["__builtins__"]=__builtins__;'.format(name)
    template += 'sys.modules["{0}"]={0};'.format(name)

    for n in importOrder:
        if not n.startswith(name):
            continue

        print 'packing {}'.format(n)
        if n == name:
            continue

        filename = n.replace('.','/')+'.pyc'

        modName = filename[len(name)+1:-4]#n.replace('.','_')
        template += '{}=types.ModuleType("{}","None");'.format(modName,filename[len(name)+1:-4])
        template += '{}.__dict__["__builtins__"]=__builtins__;'.format(modName)
        template += '{}.__dict__["{}"]={};'.format(name, filename[len(name)+1:-4], modName)
        template += 'sys.modules["{0}"]={0};'.format(modName)
        with open(filename, 'rb') as f:
            data = f.read()[8:]
            template += 'exec marshal.loads({}) in {}.__dict__;'.format(repr(data), modName)

    for n in importOrder:
        filename = n.replace('.','/')+'.pyc'
        modName = filename[len(name)+1:-4]#n.replace('.','_')
        if len(modName)>0:
            template += 'del {};'.format(modName)

    with open(name+'/__init__.pyc', 'rb') as f:
        data = f.read()[8:]
        template += 'exec marshal.loads({}) in {}.__dict__;'.format(repr(data), name)
Exemplo n.º 3
0
def packModule(name):
    importOrder = []

    importOrder = []
    finder = ModuleFinder()
    old_addModule = finder.add_module

    def addModule(fqname):
        if fqname.startswith(name):
            #print fqname
            if fqname not in importOrder:
                importOrder.append(fqname)
        return old_addModule(fqname)

    finder.add_module = addModule
    finder.import_module(name, name, None)

    # hack for yaml
    importOrder = [
        'yaml',
        'yaml.error',
        'yaml.tokens',
        'yaml.events',
        'yaml.nodes',
        'yaml.reader',
        'yaml.scanner',
        'yaml.composer',
        'yaml.constructor',
        'yaml.resolver',
        'yaml.parser',
        'yaml.loader',
        'yaml.emitter',
        'yaml.serializer',
        'yaml.representer',
        'yaml.dumper',
    ]

    global template
    template += '{0}=types.ModuleType("{0}","None");'.format(name)
    template += '{}.__dict__["__builtins__"]=__builtins__;'.format(name)
    template += 'sys.modules["{0}"]={0};'.format(name)

    for n in importOrder:
        if not n.startswith(name):
            continue

        print 'packing {}'.format(n)
        if n == name:
            continue

        filename = n.replace('.', '/') + '.pyc'

        modName = filename[len(name) + 1:-4]  #n.replace('.','_')
        template += '{}=types.ModuleType("{}","None");'.format(
            modName, filename[len(name) + 1:-4])
        template += '{}.__dict__["__builtins__"]=__builtins__;'.format(modName)
        template += '{}.__dict__["{}"]={};'.format(name,
                                                   filename[len(name) + 1:-4],
                                                   modName)
        template += 'sys.modules["{0}"]={0};'.format(modName)
        with open(filename, 'rb') as f:
            data = f.read()[8:]
            template += 'exec marshal.loads({}) in {}.__dict__;'.format(
                repr(data), modName)

    for n in importOrder:
        filename = n.replace('.', '/') + '.pyc'
        modName = filename[len(name) + 1:-4]  #n.replace('.','_')
        if len(modName) > 0:
            template += 'del {};'.format(modName)

    with open(name + '/__init__.pyc', 'rb') as f:
        data = f.read()[8:]
        template += 'exec marshal.loads({}) in {}.__dict__;'.format(
            repr(data), name)