def main():
    """ Generate tests """

    template = mako.template.Template(
        textwrap.dedent("""
    /* [config]
     * expect_result: fail
     * glsl_version: 1.20
     * [end config]
     */
    #version 120
    void main() {
        gl_Position = vec4(0);
        outerProduct(${type}(0), ${type}(0));
    }
    """))

    try:
        os.makedirs('spec/glsl-1.20/compiler/built-in-functions')
    except OSError:
        pass

    for type_ in [
            'int', 'float', 'bool', 'bvec2', 'bvec3', 'bvec4', 'mat2',
            'mat2x2', 'mat2x3', 'mat2x4', 'mat3', 'mat3x2', 'mat3x3', 'mat3x4',
            'mat4', 'mat4x2', 'mat4x3', 'mat4x4'
    ]:
        name = ('spec/glsl-1.20/compiler/built-in-functions/'
                'outerProduct-{0}.vert'.format(type_))
        print(name)
        with open(name, 'w+') as f:
            f.write(template.render_unicode(type=type_))
def gen_frag_grad_test(parameter, filename):
    """ Generate fragment shader gradient tests """
    template = mako.template.Template(
        textwrap.dedent("""
    /* [config]
     * expect_result: pass
     * glsl_version: 1.10
     * require_extensions: ${extensions}
     * [end config]
     */
    #extension GL_ARB_shader_texture_lod: require

    uniform sampler${param.dimensions} s;
    varying ${param.coord} coord;
    varying ${param.grad} dPdx;
    varying ${param.grad} dPdy;

    void main()
    {
      gl_FragColor = ${param.mode}GradARB(s, coord, dPdx, dPdy);
    }
    """))
    with open(filename, 'w+') as f:
        f.write(
            template.render_unicode(param=parameter,
                                    extensions=get_extensions(parameter.mode)))
Пример #3
0
def build_latex_pdf(output_filename="cscutcher_cv_latex.pdf"):
    """Build latex style pdf."""
    resume = nx6_cv.resume.get_resume()

    output_stream = Path(output_filename).open('wb')

    with tempfile.TemporaryDirectory(prefix="nx6_cv_latex_") as tmpdir:
        tmpdir = Path(tmpdir)

        # Copy latex sources
        for path in pkg_resources.resource_listdir(__name__, "latex"):
            (tmpdir / path).open('wb').write(
                pkg_resources.resource_string(
                    __name__, os.path.join("latex", path)))

        template_raw = (tmpdir / 'cv.tex.mako').open().read()

        # Stop mako nuking '//' in tex
        template_raw = re.sub(
            r"\\$",
            r"\\\\" + "\n",
            template_raw,
            flags=re.MULTILINE)

        # Render and write template
        template = mako.template.Template(template_raw)
        tex = template.render_unicode(cv=resume)
        (tmpdir / 'cv.tex').open('w').write(tex)

        # Add gitrevision tex
        (tmpdir / 'gitrevision.tex').open('w').write("NOTSET")

        sh.make("-C", str(tmpdir.resolve()))
        output_stream.write((tmpdir / 'cv.pdf').open('rb').read())
Пример #4
0
def gen_frag_grad_test(parameter, filename):
    """ Generate fragment shader gradient tests """
    template = mako.template.Template(textwrap.dedent("""
    /* [config]
     * expect_result: pass
     * glsl_version: 1.10
     * require_extensions: ${extensions}
     * [end config]
     */
    #extension GL_ARB_shader_texture_lod: require

    uniform sampler${param.dimensions} s;
    varying ${param.coord} coord;
    varying ${param.grad} dPdx;
    varying ${param.grad} dPdy;

    void main()
    {
      gl_FragColor = ${param.mode}GradARB(s, coord, dPdx, dPdy);
    }
    """))
    with open(filename, 'w+') as f:
        f.write(template.render_unicode(
            param=parameter,
            extensions=get_extensions(parameter.mode)))
def main():
    """ Generate tests """

    template = mako.template.Template(textwrap.dedent("""
    /* [config]
     * expect_result: fail
     * glsl_version: 1.20
     * [end config]
     */
    #version 120
    void main() {
        gl_Position = vec4(0);
        outerProduct(${type}(0), ${type}(0));
    }
    """))

    try:
        os.makedirs('spec/glsl-1.20/compiler/built-in-functions')
    except OSError:
        pass

    for type_ in ['int', 'float', 'bool', 'bvec2', 'bvec3', 'bvec4', 'mat2',
                  'mat2x2', 'mat2x3', 'mat2x4', 'mat3', 'mat3x2', 'mat3x3',
                  'mat3x4', 'mat4', 'mat4x2', 'mat4x3', 'mat4x4']:
        name = ('spec/glsl-1.20/compiler/built-in-functions/'
                'outerProduct-{0}.vert'.format(type_))
        print(name)
        with open(name, 'w+') as f:
            f.write(template.render_unicode(type=type_))
Пример #6
0
def print_html_report(projects, filename=None):
    # I want atomicity: don't destroy old .html file if an exception happens
    # during rendering.
    html = template.render_unicode(projects=list(projects),
                                   nice_date=nice_date,
                                   pluralize=pluralize)
    if filename and filename != '-':
        with open(filename, 'w') as f:
            f.write(html)
    else:
        print(html)
Пример #7
0
def WriteLexer(config, name):
  """Converts a Pygments lexer into a Java lexer.

  Args:
    config: an OutputConfiguration object.
    name: the short name of the lexer (e.g. "Css" or "Python"),
      usable as an index into ALL_LEXERS.
  """
  try:
    lexer_cls = lexers.ALL[name]
  except KeyError:
    raise RuntimeError('Unknown lexer "%s"' % name)
  class_name = _JavaLexerName(name)
  outfile = config.OutputFile(class_name)
  states = ExtractStates(lexer_cls)
  filenames = ConvertFilenames(lexer_cls.filenames)
  template = mako.template.Template(
      resources.GetResource(os.path.join(_TEMPLATES_DIR, 'lexer.mako')))
  outfile.write(template.render_unicode(
      states=states, lexer_name=class_name, origin=lexer_cls,
      package=config.package, filenames=filenames).encode('utf-8'))
Пример #8
0
def main():
    """ Generate tests """
    try:
        os.makedirs('spec/glsl-1.20/execution')
    except OSError:
        pass

    name = ('spec/glsl-1.20/execution/'
            '{shader}-outerProduct-{type}{mat}{vec}.shader_test')

    template = mako.template.Template(filename=
        os.path.join(os.path.dirname(__file__),
                     'gen_outerproduct_template.mako'))

    for c, r in itertools.product(xrange(2, 5), repeat=2):
        vecs = [
            Parameters(c, r, 'vec', 'mat{0}x{1}'.format(r, c)),
            Parameters(c, r, 'ivec', 'mat{0}x{1}'.format(r, c))
        ]
        if r == c:
            vecs.extend([
                Parameters(c, r, 'vec', 'mat{0}'.format(r)),
                Parameters(c, r, 'ivec', 'mat{0}'.format(r))
            ])

        for shader in ['vs', 'fs']:
            for type in ['const', 'uniform']:
                for params in vecs:
                    _name = name.format(
                        shader=shader,
                        type='const-' if type == 'const' else '',
                        mat=params.matrix,
                        vec='-ivec' if params.vec_type == 'ivec' else '')

                    print(_name)

                    with open(_name, 'w+') as f:
                        f.write(template.render_unicode(params=params,
                                                        type=type,
                                                        shader=shader))
Пример #9
0
def gen_frag_lod_test(parameter, filename):
    """ Generate fragment shader LOD tests """
    template = mako.template.Template(textwrap.dedent("""
    /* [config]
     * expect_result: pass
     * glsl_version: 1.10
     * require_extensions: GL_ARB_shader_texture_lod
     * [end config]
     */
    #extension GL_ARB_shader_texture_lod: require

    uniform sampler${param.dimensions} s;
    varying ${param.coord} coord;
    varying float lod;

    void main()
    {
      gl_FragColor = ${param.mode}Lod(s, coord, lod);
    }
    """))
    with open(filename, 'w+') as f:
        f.write(template.render_unicode(param=parameter))
def gen_frag_lod_test(parameter, filename):
    """ Generate fragment shader LOD tests """
    template = mako.template.Template(
        textwrap.dedent("""
    /* [config]
     * expect_result: pass
     * glsl_version: 1.10
     * require_extensions: GL_ARB_shader_texture_lod
     * [end config]
     */
    #extension GL_ARB_shader_texture_lod: require

    uniform sampler${param.dimensions} s;
    varying ${param.coord} coord;
    varying float lod;

    void main()
    {
      gl_FragColor = ${param.mode}Lod(s, coord, lod);
    }
    """))
    with open(filename, 'w+') as f:
        f.write(template.render_unicode(param=parameter))
Пример #11
0
def main():

    # Define command line arguments
    parser = argparse.ArgumentParser()
    parser.add_argument("csvfile", help="CSV file containing hosts")
    parser.add_argument("templates", help="template file or directory")
    parser.add_argument("output", help="output file or directory")
    parser.add_argument("-d", "--dnsdir", metavar="DNSDIR", default="\000",
                        help="directory with the old DNS files")
    parser.add_argument("-v", "--var", metavar="VARFILE",
                        help="yaml file with variables")

    # Parse arguments
    args = parser.parse_args()

    # Configure logging
    logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

    # Parse CSV file
    try:
        hosts = parse_csv(args.csvfile)
    except IOError as exc:
        logging.fatal("unable to open '{}': {}".format(args.csvfile, exc.strerror))
        return sys.exit(1)
    except csv.Error:
        logging.fatal("unable to parse csv file")
        return sys.exit(2)
    except CsvIntegrityError as exc:
        logging.fatal("error in csv file: {}".format(exc))
        return sys.exit(3)

    # Create in-memory database from the list of network entities
    db = tinydb.TinyDB(storage=tinydb.storages.MemoryStorage)
    db.insert_multiple(hosts)

    # Parse variables file (if given)
    if args.var:
        try:
            with open(args.var, "r") as f:
                var = yaml.load(f)
        except IOError as exc:
            logging.fatal("unable to open '{}': {}".format(args.var, exc.strerror))
            return sys.exit(4)
        except yaml.error.YAMLError as exc:
            logging.fatal("yaml error: {}".format(exc))
            return sys.exit(5)
    else:
        var = {}

    # Iterate over each input/output path pair
    # There is also a hack with iterating over files in DNS directory in parallel
    for infile, outfile, dnsfile in find_templates(args.templates, args.output, args.dnsdir):

        # Strip '.mako' extension if present
        if outfile.endswith(".mako"):
            outfile = outfile[:-len(".mako")]
        if dnsfile.endswith(".mako"):
            dnsfile = dnsfile[:-len(".mako")]

        # Create template
        try:
            template = mako.template.Template(filename=infile)
        except IOError as exc:
            logging.error("unable to open '{}': {}".format(infile, exc.strerror))
            continue
        except mako.exceptions.MakoException as exc:
            logging.error("template error while reading '{}': {}".format(infile, exc))
            continue

        # Render template
        try:
            output = template.render_unicode(var=var, db=db, host=tinydb.Query(),
                    view=ViewSet(), FILE_NAME=os.path.basename(outfile),
                    get_dns_version=lambda: DNS_HACK_ANCHOR + DNS_HACK_COMMENT)
        except Exception:
            tb = mako.exceptions.text_error_template().render().strip()
            logging.error("unhandled exception while rendering template '{}':\n{}"
                          .format(infile, tb))
            continue

        # Apply DNS version hack if needed
        if DNS_HACK_ANCHOR in output:
            output = apply_dns_version_hack(output, dnsfile)

        # Make parent directories if they do not exist
        dirname = os.path.dirname(outfile)
        if dirname:
            try:
                os.makedirs(dirname, exist_ok=True)
            except OSError as exc:
                logging.error("could not create directory '{}': {}".format(dirname, exc.strerror))
                continue

        # Write rendered template
        try:
            with open(outfile, "w", encoding="utf8") as f:
                f.write(output)
        except IOError as exc:
            logging.error("could not write to file '{}': {}".format(outfile, exc.strerror))
            continue


    # All done
    return sys.exit(0)
Пример #12
0
    def render(self, content):
        template = mako.template.Template(content)
        content = template.render_unicode()

        return content