A backport of fstrings to python<3.6
Branch: master
Clone or download
asottile Merge pull request #33 from asottile/all-repos_autofix_pre-commit-fla…

Migrate to official pycqa/flake8 hooks repo
Latest commit 3adcf00 Jan 30, 2019


Build Status Coverage Status


A backport of fstrings to python<3.6.


pip install future-fstrings


Include the following encoding cookie at the top of your file (this replaces the utf-8 cookie if you already have it):

# -*- coding: future_fstrings -*-

And then write python3.6 fstring code as usual!

# -*- coding: future_fstrings -*-
thing = 'world'
print(f'hello {thing}')
$ python2.7 main.py
hello world

Showing transformed source

future-fstrings also includes a cli to show transformed source.

$ future-fstrings-show main.py
# -*- coding: future_fstrings -*-
thing = 'world'
print('hello {}'.format((thing)))

How does this work?

future-fstrings has two parts:

  1. A utf-8 compatible codec which performs source manipulation
    • The codec first decodes the source bytes using the UTF-8 codec
    • The codec then leverages tokenize-rt to rewrite f-strings.
  2. A .pth file which registers a codec on interpreter startup.

you may also like