Skip to main content

Simple, highly-functional templated printing. say("Hello, {name}!", indent=1)

Project description

PyPI Package latest release PyPI Package monthly downloads Supported versions Supported implementations Wheel packaging support Test line coverage

It’s been forty five years since C introduced printf() and the basic formatted printing of positional parameters. Isn’t it time for an upgrade? You betcha!

say evolves Python’s print statement/function, format function/method, and % string interpolation operator with simpler, higher-level facilities. For example, it provides direct template formatting:

from say import *

x, nums, name = 12, list(range(4)), 'Fred'

say("There are {x} things.")
say("Nums has {len(nums)} items: {nums}")
say("Name: {name!r}")

yields:

There are 12 things.
Nums has 4 items: [0, 1, 2, 3]
Name: 'Fred'

Or if you want the resulting string, rather than to print the string:

>>> fmt("{name} has {x} things and {len(nums)} numbers.")
'Fred has 12 things and 4 numbers.'

The more items being printed, and the more complicated the format invocation, the more valuable this simple inline specification becomes.

But say isn’t just replacing positional templates with inline templates. It also works in a variety of ways to up-level the output-generation task. For example:

say.title('Discovered')
say("Name: {name:style=blue}", indent='+1')
say("Age:  {age:style=blue}", indent='+1')

Prints a nicely formatted text block, with a proper title and indentation, and just the variable information in blue.

http://content.screencast.com/users/jonathaneunice/folders/Jing/media/81bf4738-c875-4998-82ac-a91d211d000b/00000745.png

say provides:

  • DRY, Pythonic templates that piggyback the Python’s well-proven format() method, syntax, and underlying engine.

  • A single output mechanism that works virtually the same in either Python 2 or Python 3 (i.e. seamless compatibility).

  • A companion fmt() object for string formatting.

  • Higher-order line formatting such as line numbering, indentation, and line-wrapping built in. You can get better output formatting with almost no additional code of your own.

  • Convenient methods for common formatting items such as titles, horizontal separators, and vertical whitespace.

  • Easy styled output, including ANSI colors and user-defined styles and text transforms.

  • Easy output to one or more files, again with no additional code.

  • Super-duper template/text aggregator objects for easily building, reading, and writing multi-line texts.

Take it for a test drive today! See the full documentation at Read the Docs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

say-1.3.8.zip (53.2 kB view hashes)

Uploaded Source

say-1.3.8.tar.gz (40.9 kB view hashes)

Uploaded Source

Built Distribution

say-1.3.8-py2.py3-none-any.whl (21.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page