Exemplo n.º 1
0
def _load_ptl(name, filename, file=None):
    if not file:
        try:
            file = open(filename, "rb")
        except IOError:
            return None
    path, ext = os.path.splitext(filename)
    pyc_filename = path + ".pyc"
    module = _load_pyc(name, filename, pyc_filename)
    if module is not None:
        return module
    try:
        output = open(pyc_filename, "wb")
    except IOError:
        output = None
    try:
        code = compile_template(file, filename, output)
    except:
        if output:
            output.close()
            os.unlink(pyc_filename)
        raise
    else:
        if output:
            output.close()
    return _exec_module_code(code, name, filename)
Exemplo n.º 2
0
    return _exec_module_code(code, name, filename)

def _load_ptl(name, filename, file=None):
    if not file:
        try:
            file = open(filename, "rb")
        except IOError:
            return None
    path, ext = os.path.splitext(filename)
    ptlc_filename = path + PTLC_EXT
    try:
        output = open(ptlc_filename, "wb")
    except IOError, msg:
        output = None
    try:
        code = compile_template(file, filename, output)
    except:
        # don't leave a corrupt .ptlc file around
        if output:
            output.close()
            os.unlink(ptlc_filename)
        raise
    else:
        if output:
            output.close()
    return _exec_module_code(code, name, filename)


# Constant used to signal a PTL files
PTLC_FILE = 128
PTL_FILE = 129
Exemplo n.º 3
0
    ptlc_filename = path + PTLC_EXT
    try:
        output_fd = os.open(ptlc_filename, os.O_WRONLY | os.O_CREAT, 0644)
        try:
            fcntl.flock(output_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
        except IOError, e:
            if e.errno == errno.EWOULDBLOCK:
                fcntl.flock(output_fd, fcntl.LOCK_EX)
                os.close(output_fd)
                return _load_ptlc(name, ptlc_filename)
            raise
        output = os.fdopen(output_fd, 'wb')
    except (OSError, IOError), e:
        output = None
    try:
        code = compile_template(file, filename, output)
    except:
        # don't leave a corrupt .ptlc file around
        if output:
            output.close()
            os.unlink(ptlc_filename)
        raise
    else:
        if output:
            output.close()
    return _exec_module_code(code, name, filename)


# Constant used to signal a PTL files
PTLC_FILE = 128
PTL_FILE = 129