Source code for snek5000.resources
"""resources for building
======================
Contains common snakemake rules and jinja templates.
Snakemake rules
---------------
- ``nek5000.smk``: subworkflow_ for building Nek5000 tools
.. literalinclude:: ../../src/snek5000/resources/nek5000.smk
:language: python
- ``compiler.smk``: module_ for compiling user code
.. literalinclude:: ../../src/snek5000/resources/compiler.smk
:language: python
- ``io.smk``: module_ for cleaning and archiving simulation artefacts
.. literalinclude:: ../../src/snek5000/resources/io.smk
:language: python
- ``internal.smk``: module_ for generating simulation files, serves as inputs
to Snakemake rules above
.. literalinclude:: ../../src/snek5000/resources/internal.smk
:language: python
.. _module: https://snakemake.readthedocs.io/en/stable/snakefiles/modularization.html#modules
.. _subworkflow: https://snakemake.readthedocs.io/en/stable/snakefiles/modularization.html#sub-workflows
Jinja templates
---------------
- ``box.j2``: See also
:any:`snek5000.operators.Operators.write_box`,
:any:`snek5000.output.base.Output.write_box`.
:ref:`nek:tools_genbox`
.. literalinclude:: ../../src/snek5000/resources/box.j2
:language: jinja
- ``makefile_usr.inc.j2``: See also
:any:`snek5000.output.base.Output.write_makefile_usr`.
.. literalinclude:: ../../src/snek5000/resources/makefile_usr.inc.j2
:language: jinja
- ``SIZE.j2``: See also
:any:`snek5000.operators.Operators.write_size`,
:any:`snek5000.output.base.Output.write_size`,
Nek5000 docs on :ref:`nek:case_files_size` file.
.. literalinclude:: ../../src/snek5000/resources/SIZE.j2
:language: jinja
- ``compile.sh.j2``: See also
:any:`snek5000.output.base.Output.write_compile_sh`.
.. literalinclude:: ../../src/snek5000/resources/compile.sh.j2
:language: jinja
"""
import jinja2
[docs]class BaseTemplates:
@property
def env(self):
return jinja2.Environment(
loader=jinja2.PackageLoader("snek5000", "resources"),
undefined=jinja2.StrictUndefined,
)
[docs] def get_base_templates(self):
"""Get templates (box, makefile_usr and size) from ``snek5000.resources``."""
box = self.env.get_template("box.j2")
makefile_usr = self.env.get_template("makefile_usr.inc.j2")
size = self.env.get_template("SIZE.j2")
return box, makefile_usr, size
[docs] def get_base_template(self, name):
"""Get a template from ``snek5000.resources``."""
return self.env.get_template(name)
_templates = BaseTemplates()
get_base_templates = _templates.get_base_templates
get_base_template = _templates.get_base_template