Ejemplo n.º 1
0
    def _compile(self, filename, source):
        """ Compiles the Python source code to a code object and
        attempts to write it to an appropriate .pyc file.  May raise
        SyntaxError or other errors generated by the compiler. """

        if source and source[-1] != '\n':
            source = source + '\n'
        code = __builtin__.compile(source, filename.toOsSpecific(), 'exec')

        # try to cache the compiled code
        pycFilename = Filename(filename)
        pycFilename.setExtension(compiledExtensions[0])
        try:
            f = open(pycFilename.toOsSpecific(), 'wb')
        except IOError:
            pass
        else:
            f.write(imp.get_magic())
            if sys.version_info >= (3, 0):
                f.write((self.timestamp & 0xffffffff).to_bytes(4, 'little'))
                f.write(b'\0\0\0\0')
            else:
                f.write(chr(self.timestamp & 0xff) +
                        chr((self.timestamp >> 8) & 0xff) +
                        chr((self.timestamp >> 16) & 0xff) +
                        chr((self.timestamp >> 24) & 0xff))
            f.write(marshal.dumps(code))
            f.close()

        return code
Ejemplo n.º 2
0
    def _compile(self, filename, source):
        """ Compiles the Python source code to a code object and
        attempts to write it to an appropriate .pyc file.  May raise
        SyntaxError or other errors generated by the compiler. """

        if source and source[-1] != '\n':
            source = source + '\n'
        code = __builtin__.compile(source, filename.toOsSpecific(), 'exec')

        # try to cache the compiled code
        pycFilename = Filename(filename)
        pycFilename.setExtension(compiledExtensions[0])
        try:
            f = open(pycFilename.toOsSpecific(), 'wb')
        except IOError:
            pass
        else:
            f.write(imp.get_magic())
            if sys.version_info >= (3, 0):
                f.write((self.timestamp & 0xffffffff).to_bytes(4, 'little'))
                f.write(b'\0\0\0\0')
            else:
                f.write(
                    chr(self.timestamp & 0xff) +
                    chr((self.timestamp >> 8) & 0xff) +
                    chr((self.timestamp >> 16) & 0xff) +
                    chr((self.timestamp >> 24) & 0xff))
            f.write(marshal.dumps(code))
            f.close()

        return code
Ejemplo n.º 3
0
    def _compile(self, filename, source):
        """ Compiles the Python source code to a code object and
        attempts to write it to an appropriate .pyc file.  May raise
        SyntaxError or other errors generated by the compiler. """

        if source and source[-1] != "\n":
            source = source + "\n"
        code = __builtin__.compile(source, filename.toOsSpecific(), "exec")

        # try to cache the compiled code
        pycFilename = Filename(filename)
        pycFilename.setExtension(compiledExtensions[0])
        try:
            f = open(pycFilename.toOsSpecific(), "wb")
        except IOError:
            pass
        else:
            f.write("\0\0\0\0")
            f.write(
                chr(self.timestamp & 0xFF)
                + chr((self.timestamp >> 8) & 0xFF)
                + chr((self.timestamp >> 16) & 0xFF)
                + chr((self.timestamp >> 24) & 0xFF)
            )
            f.write(marshal.dumps(code))
            f.flush()
            f.seek(0, 0)
            f.write(imp.get_magic())
            f.close()

        return code
Ejemplo n.º 4
0
    def _compile(self, filename, source):
        if source and source[-1] != '\n':
            source = source + '\n'
        code = __builtin__.compile(source, filename.toOsSpecific(), 'exec')
        pycFilename = Filename(filename)
        pycFilename.setExtension(compiledExtensions[0])
        try:
            f = open(pycFilename.toOsSpecific(), 'wb')
        except IOError:
            pass
        else:
            f.write(imp.get_magic())
            if sys.version_info >= (3, 0):
                f.write((self.timestamp & 4294967295L).to_bytes(4, 'little'))
                f.write('\x00\x00\x00\x00')
            else:
                f.write(
                    chr(self.timestamp & 255) +
                    chr(self.timestamp >> 8 & 255) +
                    chr(self.timestamp >> 16 & 255) +
                    chr(self.timestamp >> 24 & 255))
            f.write(marshal.dumps(code))
            f.close()

        return code