DEPRECATED
this library is no longer needed:
- python 2 and python3.5 have reached end of life
- micropython added f-strings support
future-fstrings
A backport of fstrings to python<3.6.
Installation
pip install future-fstrings
Usage
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)))
Transform source for micropython
The future-fstrings-show
command can be used to transform source before
distributing. This can allow you to write f-string code but target platforms
which do not support f-strings, such as micropython.
To use this on modern versions of python, install using:
pip install future-fstrings[rewrite]
and then use future-fstrings-show
as above.
For instance:
future-fstrings-show code.py > code_rewritten.py
How does this work?
future-fstrings
has two parts:
- 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.
- The
- A
.pth
file which registers a codec on interpreter startup.
site
registration
when you aren't using normal in setups (such as aws lambda) where you utilize PYTHONPATH
or sys.path
instead of truly installed packages, the .pth
magic above will not take.
for those circumstances, you'll need to manually initialize future-fstrings
in a non-fstring wrapper. for instance:
import future_fstrings
future_fstrings.register()
from actual_main import main
if __name__ == '__main__':
raise SystemExit(main())