Package: tracery
Tracery for PythonThis is a (rough) port ofKate Compton’s
wonderfulTraceryto Python. The port
is byAllison Parrish.I’m always writing little one-off recursive template/grammar expansion
functions in my Python generative text projects. And Iloveworking with
Tracery! So I figured: why not save myself (and potentially others) some time
and just make it possible to use Tracery from within Python? This port is the
result!The port is a fairly literal Python translation ofthis versionoftracery.jsin the official repository’stracery2branch.InstallationInstall with pip like so:pip install traceryYou can also download the source code and install manually:python setup.py installUsageSeeKate Compton’s Tracery
tutorialfor information
about how Tracery works. In the Python port, you use Python dictionaries
instead of JavaScript objects for the rules, but the concept is the same
otherwise.import tracery
from tracery.modifiers import base_english

rules = {
    'origin': '#hello.capitalize#, #location#!',
    'hello': ['hello', 'greetings', 'howdy', 'hey'],
    'location': ['world', 'solar system', 'galaxy', 'universe']
}

grammar = tracery.Grammar(rules)
grammar.add_modifiers(base_english)
print grammar.flatten("#origin#") # prints, e.g., "Hello, world!"Any valid Tracery grammar should work in this port. Thebase_englishmodifiers intracery.modifiersare a port of the modifiers in the JavaScript
package. Many aspects of Tracery are not standardized, so in some edge cases
you may get output that doesn’t exactly conform to what you would get if you
used the same grammar with the JavaScript version. (e.g., “None” in strings
where in JavaScript you might see “undefined”)Command lineYou can run the module on a JSON Tracery grammar file on the command line to output example lines:positional arguments:
    json        Input JSON file
    number      Number of lines to generate (default: 1)For example:$ python -m tracery potterpapers.json
Harry Potter and the Tchebyshev transforms of the first and second kind

$ python -m tracery potterpapers.json 3
Harry Potter and the Impact of Extremes in Outdoor Temperature and Sunshine Exposure on Birth Weight.
Harry Potter and the Chromatin Remodelling Enzymes SNF2H and SNF2L Position Nucleosomes adjacent to CTCF and Other Transcription Factors.
Harry Potter and the Model Organism Hermissenda crassicornis (Gastropoda: Heterobranchia) Is a Species Complex.LicenseThis port inherits Tracery’s original Apache License 2.0.Copyright 2016 Allison Parrish
Based on code by Kate Compton

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.History0.1.1 (2017-03-27)Obligatory “foreseeable mistake in setup.py” release. (thx <https://github.com/j-e-d>`_).0.1.0 (2017-03-27)Initial release on PyPI, incorporating many contributions fromhugovk.0.0.1 (2016-03-09)First release on Github.