# Python templater

Uses native Python f-strings. As described in Generic Variable Templating, an example usage would look be configured as follows:

If passed the following .sql file:

    SELECT * FROM {tbl_name}

…and the following configuration in .sqlfluff in the same directory:

    [sqlfluff]
    templater = python

    [sqlfluff:templater:python:context]
    tbl_name = my_table

…then before parsing, the sql will be transformed to:

    SELECT * FROM my_table

## Complex Python Variable Templating

Python string formatting supports accessing object attributes via dot notation (e.g. `{foo.bar}`). However, since we cannot create Python objects within configuration files, we need a workaround in order to provide dummy values to render templates containing these values. The SQLFluff python templater will interpret any variable containing a “.” as a dictionary lookup on the magic fixed context key `sqlfluff`.

    -- this SQL
    SELECT * FROM {foo.bar}

    -- becomes this
    SELECT * FROM {sqlfluff["foo.bar"]}

..which can be populated using the following configuration:

    [sqlfluff:templater:python:context]
    sqlfluff = {"foo.bar": "abc"}