Skip to main content
f-strings...sorta
=================

Home-page: https://github.com/danbradham/fstrings
Author: Dan Bradham
Author-email: danielbradham@gmail.com
License: MIT
Description: =================
f-strings...sorta
=================
.. image:: https://travis-ci.org/danbradham/fstrings.svg?branch=master
:target: https://travis-ci.org/danbradham/fstrings

Python 3.6 f-strings are pretty awesome. It's too bad you can't use them in 2.7 or 3.5. With **fstrings** you can...sorta. The **fstrings** module provides a function *f* that acts similar to f-strings. Pass a string with str.format tokens and *f* will return a string formatted using the available globals and locals. Like this::

>>> from fstrings import f
>>> x = 'Hello, World...'
>>> f('{x}')
'Hello, World...'

You can't evaluate arbitrary python code within the format tokens like you can in Python 3.6, but, some of that lost functionality is gained by allowing you to pass *args* and *kwargs* to *f*. For example, you can still use positional arguments with *f*::

>>> x = 'World...'
>>> f('{} {x}', 'Hello,')
'Hello, World...'

Or you could override globals and locals by passing keyword arguments::

>>> x = 'Hello'
>>> y = 'World...'
>>> f('{x}, {y}', x='Goodbye')
'Goodbye, World...'

Or do both, it's your life. In addition to *f*, fstrings also provides some other nifty stuff.


fdocstring Decorator
====================
::

>>> from fstrings import fdocstring
>>> x = 'Hello from ya docs'
>>> @fdocstring()
... def func():
... '''{x}'''
...
>>> func.__doc__
'Hello from ya docs'

Right now you might be thinking, "Cool, *fdocstring* provides the same funcality as *f*, but, for doc strings." You would be correct. You can even use *fdocstring* to format class doc strings:

::

>>> x = 'BOOM!'
>>> @fdocstring()
... class Obj(object):
... '''{x}'''
... def method(self):
... '''{x}'''
...
>>> Obj.__doc__
'BOOM!'
>>> Obj.method.__doc__
'BOOM!'

"Boom boom" is right. Methods are auto formatted too.


printf?
=======
After implementing *f*, *printf* was too obvious not to implement.

::

>>> from fstrings import printf
>>> x = 'PRINTFED'
>>> printf('{x}')
PRINTFED

*printf* and *fdocstring* accept *args* and *kwargs* for overriding globals and locals just like *f*.

Features and Differences
========================

- Uses str.format instead of evaluating python code in {}
- Allows overriding globals and locals by passing in \*args and \*\*kwargs
- Supports python 2.7 to python 3.6

Tests
=====
**fstrings** comes with a robust set of tests. *pip install nose* and run them if you like.

::

> nosetests -v --with-coverage --with-doctest --doctest-extension rst

Similar Projects
================
If you're looking for an implementation truer to Python 3.6 f-strings check out `fmt <https://github.com/damnever/fmt>`_.

Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development :: Libraries :: Python Modules

Release files for fstrings 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fstrings 0.1.0
File Size Uploaded
fstrings-0.1.0.tar.gz 3.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fstrings 0.1.0
File Interpreter ABI Platform
fstrings-0.1.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 9.1 kB

Release files / fstrings-0.1.0.tar.gz

Download URL fstrings-0.1.0.tar.gz
Size 3.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ee7f7d552ec6f83c74a0d6d93459d906cb470f2f57539bf4186c7c6534789198
BLAKE2b-256 checksum
How to use checksums
c9a669aa2dc8ca7c379145bbb0abe1d5e1fe1fc06ea23d33c29946524bf9fcfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / fstrings-0.1.0-py2.py3-none-any.whl

Download URL fstrings-0.1.0-py2.py3-none-any.whl
Size 5.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
053c27bc2fbfa586582f0866b5cbc037bd81305f0fe10eeceac342391efe7faa
BLAKE2b-256 checksum
How to use checksums
567001cbc51a2541cb97917037b41e5102e21c9c4d792a77bcd87f0304c11946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page