Skip to content


Repository files navigation

NB: f2format is currently under reconstruction. It is highly recommended to directly install from the git repo or the pre-release distributions.


PyPI - Downloads PyPI - Version PyPI - Python Version

GitHub Actions - Status Codecov - Coverage Documentation Status

Write f-string in Python 3.6 flavour, and let f2format worry about back-port issues 🍺

  Since PEP 498, Python introduced f-string literals in version 3.6. Though released ever since December 23, 2016, Python 3.6 is still not widely used as expected. For those who are now used to f-strings, f2format provides an intelligent, yet imperfect, solution of a backport compiler by converting f-strings to str.format expressions, which guarantees you to always write f-strings in Python 3.6 flavour then compile for compatibility later.

f2format is inspired and assisted by my good mate @gousaiyang. It functions by tokenising and parsing Python code into multiple abstract syntax trees (AST), through which it shall synthesise and extract expressions from f-string literals, and then reassemble the original string using str.format method. Besides conversion and format specification, f2format also considered and resolved string concatenation. Also, it always tries to maintain the original layout of source code, and accuracy of syntax.


  See documentation for usage and more details.


  Contributions are very welcome, especially fixing bugs and providing test cases. Note that code must remain valid and reasonable.

See Also